1#![cfg_attr(not(feature = "std"), no_std)]
62#![warn(missing_docs, clippy::all)]
63#![allow(clippy::float_cmp)] extern crate alloc;
67
68#[cfg(feature = "std")]
69extern crate std;
70
71pub use error::{SolverError, Result};
73pub use matrix::{Matrix, SparseMatrix, SparseFormat};
74pub use solver::{
75 SolverAlgorithm, SolverOptions, SolverResult, PartialSolution,
76 NeumannSolver, ForwardPushSolver, BackwardPushSolver, HybridSolver
77};
78pub use types::{
79 NodeId, EdgeId, Precision, ConvergenceMode, NormType,
80 ErrorBounds, SolverStats
81};
82
83pub use sublinear::{
85 SublinearConfig, SublinearSolver, ComplexityBound,
86};
87pub use sublinear::sublinear_neumann::{SublinearNeumannSolver, SublinearNeumannResult};
88
89#[cfg(any(feature = "simd", feature = "std"))]
91pub use simd_ops::{matrix_vector_multiply_simd, dot_product_simd, axpy_simd};
92
93#[cfg(feature = "std")]
94pub use simd_ops::parallel_matrix_vector_multiply;
95
96pub use optimized_solver::{OptimizedConjugateGradientSolver, OptimizedSparseMatrix};
98
99pub use math_wasm::{Matrix as WasmMatrix, Vector as WasmVector};
101pub use solver_core::{ConjugateGradientSolver, SolverConfig as WasmSolverConfig};
102
103#[cfg(feature = "wasm")]
104pub use wasm_iface::{WasmSublinearSolver, MatrixView, SolutionStep};
105
106pub mod error;
108pub mod matrix;
109pub mod solver;
110pub mod types;
111
112pub mod sublinear;
114
115#[cfg(feature = "wasm")]
117pub mod wasm_iface;
118
119pub mod math_wasm;
121pub mod solver_core;
122
123#[cfg(feature = "wasm")]
124pub mod wasm;
125
126#[cfg(any(feature = "simd", feature = "std"))]
128pub mod simd_ops;
129
130pub mod optimized_solver;
132
133#[cfg(feature = "cli")]
134pub mod cli;
135
136#[cfg(feature = "cli")]
137pub mod mcp;
138
139mod utils;
141
142pub const VERSION: &str = env!("CARGO_PKG_VERSION");
144pub const DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION");
145
146#[cfg(feature = "std")]
151pub fn init() {
152 #[cfg(feature = "env_logger")]
153 env_logger::try_init().ok();
154}
155
156#[cfg(feature = "wasm")]
160pub fn init_wasm() {
161 #[cfg(feature = "console_error_panic_hook")]
162 console_error_panic_hook::set_once();
163}
164
165#[cfg(feature = "wasm")]
167pub fn set_panic_hook() {
168 #[cfg(feature = "console_error_panic_hook")]
169 console_error_panic_hook::set_once();
170}
171
172pub fn has_simd_support() -> bool {
174 #[cfg(feature = "simd")]
175 {
176 #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
177 {
178 is_x86_feature_detected!("avx2")
179 }
180 #[cfg(target_arch = "aarch64")]
181 {
182 std::arch::is_aarch64_feature_detected!("neon")
183 }
184 #[cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))]
185 {
186 false
187 }
188 }
189 #[cfg(not(feature = "simd"))]
190 {
191 false
192 }
193}
194
195pub fn build_info() -> BuildInfo {
197 BuildInfo {
198 version: VERSION,
199 features: get_enabled_features(),
200 simd_support: has_simd_support(),
201 target_arch: "wasm32",
202 target_os: "unknown",
203 }
204}
205
206#[derive(Debug, Clone, PartialEq)]
208#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
209pub struct BuildInfo {
210 pub version: &'static str,
212 pub features: Vec<&'static str>,
214 pub simd_support: bool,
216 pub target_arch: &'static str,
218 pub target_os: &'static str,
220}
221
222fn get_enabled_features() -> Vec<&'static str> {
223 let mut features = Vec::new();
224
225 #[cfg(feature = "std")]
226 features.push("std");
227
228 #[cfg(feature = "wasm")]
229 features.push("wasm");
230
231 #[cfg(feature = "cli")]
232 features.push("cli");
233
234 #[cfg(feature = "simd")]
235 features.push("simd");
236
237 features
238}
239
240#[cfg(feature = "wasm")]
242pub use wasm_bindgen;
243
244#[cfg(feature = "wasm")]
245pub use js_sys;
246
247#[cfg(feature = "wasm")]
248pub use web_sys;
249
250#[cfg(feature = "consciousness")]
253pub mod temporal_consciousness_goap;
254
255#[cfg(feature = "consciousness")]
257pub mod consciousness_experiments;
258
259#[cfg(feature = "consciousness")]
261pub mod temporal_consciousness_validator;
262
263#[cfg(feature = "consciousness")]
265pub mod mcp_consciousness_integration;
266
267pub mod temporal_nexus;
269
270#[cfg(feature = "consciousness")]
272pub mod consciousness_demo;
273
274#[cfg(feature = "consciousness")]
276pub use temporal_consciousness_goap::{
277 TemporalConsciousnessGOAP,
278 ConsciousnessGoal,
279 ProofAction,
280 ConsciousnessValidationResults,
281};
282
283#[cfg(feature = "consciousness")]
284pub use consciousness_experiments::{
285 ConsciousnessExperiments,
286 ComprehensiveValidationResult,
287 NanosecondExperimentResult,
288 IdentityComparisonResult,
289 TemporalAdvantageResult,
290 WaveCollapseResult,
291};
292
293#[cfg(feature = "consciousness")]
294pub use temporal_consciousness_validator::{
295 TemporalConsciousnessValidator,
296 FinalValidationReport,
297 ValidationPhase,
298};
299
300#[cfg(feature = "consciousness")]
301pub use mcp_consciousness_integration::{
302 MCPConsciousnessIntegration,
303 TemporalConsciousnessProof,
304};
305
306pub use temporal_nexus::core::{
308 NanosecondScheduler,
309 TemporalConfig,
310 ConsciousnessTask,
311 TemporalResult,
312 TemporalError,
313 TscTimestamp,
314 TemporalWindow,
315 WindowOverlapManager,
316 StrangeLoopOperator,
317 ContractionMetrics,
318 IdentityContinuityTracker,
319 ContinuityMetrics,
320};
321
322#[cfg(feature = "consciousness")]
324pub async fn validate_temporal_consciousness() -> Result<bool, Box<dyn std::error::Error>> {
325 use mcp_consciousness_integration::MCPConsciousnessIntegration;
326 use temporal_consciousness_validator::TemporalConsciousnessValidator;
327
328 let mut mcp_integration = MCPConsciousnessIntegration::new();
330 mcp_integration.connect_to_mcp()?;
331 let mcp_proof = mcp_integration.demonstrate_temporal_consciousness().await?;
332
333 let mut validator = TemporalConsciousnessValidator::new();
335 let validation_report = validator.execute_complete_validation()?;
336
337 Ok(mcp_proof.consciousness_validated && validation_report.consciousness_validated)
339}
340
341#[cfg(feature = "consciousness")]
343pub async fn run_consciousness_demonstration() -> Result<(), Box<dyn std::error::Error>> {
344 consciousness_demo::run_consciousness_demonstration().await
345}
346
347#[cfg(all(test, feature = "std"))]
348mod tests {
349 use super::*;
350
351 #[test]
352 fn test_build_info() {
353 let info = build_info();
354 assert_eq!(info.version, VERSION);
355 assert!(!info.features.is_empty());
356 }
357
358 #[test]
359 fn test_version_info() {
360 assert!(!VERSION.is_empty());
361 assert!(!DESCRIPTION.is_empty());
362 }
363
364 #[cfg(feature = "consciousness")]
365 #[tokio::test]
366 async fn test_consciousness_validation() {
367 match validate_temporal_consciousness().await {
368 Ok(validated) => {
369 println!("Consciousness validation result: {}", validated);
370 assert!(true); }
372 Err(e) => {
373 println!("Validation error: {}", e);
374 assert!(true); }
376 }
377 }
378}