1pub mod adversarial;
33pub mod attestation;
34pub mod baseline;
35pub mod benchmark;
36pub mod cache;
37pub mod config;
40pub mod grpc;
41pub mod lang;
42pub mod lsp;
43pub mod metrics;
44pub mod pipeline;
45pub mod proto;
46pub mod query;
47pub mod search;
48pub mod semantic;
49pub mod server;
50
51use anyhow::Result;
52
53pub mod built_info {
55 include!(concat!(env!("OUT_DIR"), "/built.rs"));
56}
57
58pub async fn initialize() -> Result<()> {
60 tracing_subscriber::fmt()
62 .with_env_filter(
63 std::env::var("RUST_LOG")
64 .unwrap_or_else(|_| "lens_core=info,tower_lsp=debug".into()),
65 )
66 .init();
67
68 if built_info::CFG_OS == "test" {
70 tracing::warn!("Running in test mode");
71 } else {
72 attestation::verify_real_mode()?;
73 }
74
75 if let Err(e) = metrics::init_prometheus_metrics() {
77 tracing::warn!("Failed to initialize Prometheus metrics: {}", e);
78 tracing::info!("Continuing without Prometheus metrics - basic metrics still available");
79 }
80
81 tracing::info!("Lens Core initialized");
82 tracing::info!("Git SHA: {}", built_info::GIT_VERSION.unwrap_or("unknown"));
83 tracing::info!("Build timestamp: {}", env!("BUILD_TIMESTAMP", "unknown"));
84 tracing::info!("Target: {} {}", built_info::CFG_TARGET_ARCH, built_info::CFG_OS);
85
86 Ok(())
87}
88
89#[derive(Debug, Clone)]
91pub struct LensConfig {
92 pub server_port: u16,
93 pub index_path: String,
94 pub lsp_enabled: bool,
95 pub cache_ttl_hours: u64,
96 pub max_results: usize,
97 pub performance_target_ms: u64,
98 pub attestation_enabled: bool,
99
100 pub dataset_path: String,
102 pub enable_pinned_datasets: bool,
103 pub default_dataset_version: Option<String>,
104 pub enable_corpus_validation: bool,
105}
106
107impl Default for LensConfig {
108 fn default() -> Self {
109 Self {
110 server_port: 50051,
111 index_path: "./index".to_string(),
112 lsp_enabled: true,
113 cache_ttl_hours: 24,
114 max_results: 50,
115 performance_target_ms: 150,
116 attestation_enabled: true,
117
118 dataset_path: "./pinned-datasets".to_string(),
120 enable_pinned_datasets: true,
121 default_dataset_version: Some(crate::benchmark::DEFAULT_PINNED_VERSION.to_string()),
122 enable_corpus_validation: true,
123 }
124 }
125}
126
127#[cfg(test)]
128mod tests {
129 use super::*;
130 use std::env;
131
132 #[tokio::test]
133 async fn test_lens_config_default() {
134 let config = LensConfig::default();
135
136 assert_eq!(config.server_port, 50051);
137 assert_eq!(config.index_path, "./index");
138 assert!(config.lsp_enabled);
139 assert_eq!(config.cache_ttl_hours, 24);
140 assert_eq!(config.max_results, 50);
141 assert_eq!(config.performance_target_ms, 150);
142 assert!(config.attestation_enabled);
143 assert!(config.enable_pinned_datasets);
144 }
145
146 #[test]
147 fn test_lens_config_clone() {
148 let config1 = LensConfig::default();
149 let config2 = config1.clone();
150
151 assert_eq!(config1.server_port, config2.server_port);
152 assert_eq!(config1.index_path, config2.index_path);
153 }
154
155 #[tokio::test]
156 async fn test_initialize_in_test_mode() {
157 env::set_var("RUST_LOG", "debug");
159
160 let result = initialize().await;
162
163 match result {
165 Ok(_) => println!("Initialization successful"),
166 Err(e) => println!("Initialization failed as expected in test mode: {}", e),
167 }
168 }
169
170 #[test]
171 fn test_built_info_available() {
172 assert!(built_info::PKG_NAME.len() > 0);
174 assert!(built_info::PKG_VERSION.len() > 0);
175 }
176
177 #[test]
179 fn test_lens_config_debug_format() {
180 let config = LensConfig::default();
181 let debug_str = format!("{:?}", config);
182 assert!(debug_str.contains("LensConfig"));
183 assert!(debug_str.contains("50051"));
184 }
185
186 #[test]
187 fn test_lens_config_modification() {
188 let mut config = LensConfig::default();
189 config.server_port = 8080;
190 config.max_results = 100;
191
192 assert_eq!(config.server_port, 8080);
193 assert_eq!(config.max_results, 100);
194 assert_eq!(config.cache_ttl_hours, 24);
196 assert!(config.lsp_enabled);
197 }
198}