#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg(feature = "wasm")]
use crate::{RootVector, MicroNet, AgentState, AgentType};
#[cfg(feature = "wasm")]
#[wasm_bindgen]
pub struct WasmMicroNet {
inner: Box<dyn MicroNet>,
}
#[cfg(feature = "wasm")]
#[wasm_bindgen]
impl WasmMicroNet {
#[wasm_bindgen(constructor)]
pub fn new() -> Result<WasmMicroNet, JsValue> {
Err(JsValue::from_str("MicroNet implementation not available"))
}
#[wasm_bindgen]
pub fn process(&self, input: &[f32]) -> Result<Vec<f32>, JsValue> {
if input.len() != crate::ROOT_DIM {
return Err(JsValue::from_str(&format!(
"Input must have {} dimensions", crate::ROOT_DIM
)));
}
let mut root_vector = RootVector::default();
root_vector.data.copy_from_slice(input);
match self.inner.process(&root_vector) {
Ok(result) => Ok(result.data.to_vec()),
Err(e) => Err(JsValue::from_str(&format!("Processing error: {:?}", e))),
}
}
}