use crate::transports::http::server::ApiState;
use crate::transports::wasm::services::*;
use feagi_evolutionary::RuntimeGenome;
use std::sync::Arc;
pub fn create_api_state_from_genome(genome: Arc<RuntimeGenome>) -> ApiState {
let connectome_service = Arc::new(WasmConnectomeService::new(Arc::clone(&genome)));
let genome_service = Arc::new(WasmGenomeService::new(Arc::clone(&genome)));
let analytics_service = Arc::new(WasmAnalyticsService::new(Arc::clone(&genome)));
let runtime_service = Arc::new(WasmRuntimeService::new());
let neuron_service = Arc::new(WasmNeuronService::new());
let system_service = Arc::new(WasmSystemService::new());
let (genome_transition_lock, genome_transition_in_progress) =
ApiState::init_genome_transition_controls();
let filesystem_data_root = ApiState::filesystem_data_root_from_config(std::path::Path::new(""));
ApiState {
network_connection_info_provider: None,
agent_service: None, genome_service: genome_service
as Arc<dyn feagi_services::traits::GenomeService + Send + Sync>,
connectome_service: connectome_service
as Arc<dyn feagi_services::traits::ConnectomeService + Send + Sync>,
analytics_service: analytics_service
as Arc<dyn feagi_services::traits::AnalyticsService + Send + Sync>,
runtime_service: runtime_service
as Arc<dyn feagi_services::traits::RuntimeService + Send + Sync>,
neuron_service: neuron_service
as Arc<dyn feagi_services::traits::NeuronService + Send + Sync>,
system_service: system_service
as Arc<dyn feagi_services::traits::SystemService + Send + Sync>,
snapshot_service: None, feagi_session_timestamp: std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_millis() as i64,
filesystem_data_root,
memory_stats_cache: None,
amalgamation_state: ApiState::init_amalgamation_state(),
genome_transition_lock,
genome_transition_in_progress,
#[cfg(feature = "feagi-agent")]
agent_handler: Some(ApiState::init_agent_registration_handler()),
}
}