feagi_agent/sdk/sensory/text/
config.rs1use crate::core::{AgentConfig, AgentType, SdkError};
4use crate::sdk::types::{CorticalID, CorticalUnitIndex, FrameChangeHandling, SensoryCorticalUnit};
5
6#[derive(Debug, Clone)]
8pub struct TextEncoderConfig {
9 pub agent_id: String,
10 pub cortical_unit_id: u8,
11 pub feagi_host: String,
12 pub feagi_api_port: u16,
13 pub feagi_zmq_registration_port: u16,
14 pub feagi_zmq_sensory_port: u16,
15 pub feagi_tick_hz: u32,
16 pub feagi_heartbeat_interval_s: f64,
17 pub feagi_connection_timeout_ms: u64,
18 pub feagi_registration_retries: u32,
19}
20
21impl TextEncoderConfig {
22 pub fn to_agent_config(&self) -> Result<AgentConfig, SdkError> {
24 let registration_endpoint = format!(
25 "tcp://{}:{}",
26 self.feagi_host, self.feagi_zmq_registration_port
27 );
28 let sensory_endpoint = format!("tcp://{}:{}", self.feagi_host, self.feagi_zmq_sensory_port);
29
30 let agent_type = AgentType::Sensory;
31 Ok(AgentConfig::new(self.agent_id.clone(), agent_type)
32 .with_sensory_capability(self.feagi_tick_hz as f64, None)
33 .with_registration_endpoint(registration_endpoint)
34 .with_sensory_endpoint(sensory_endpoint)
35 .with_heartbeat_interval(self.feagi_heartbeat_interval_s)
36 .with_connection_timeout_ms(self.feagi_connection_timeout_ms)
37 .with_registration_retries(self.feagi_registration_retries))
38 }
39
40 pub fn cortical_id(&self) -> CorticalID {
42 SensoryCorticalUnit::get_cortical_ids_array_for_text_english_input_with_parameters(
43 FrameChangeHandling::Absolute,
44 CorticalUnitIndex::from(self.cortical_unit_id),
45 )[0]
46 }
47}