lmm 0.0.1

WIP: A language agnostic framework to reality.
Documentation
use clap::Parser;
use lmm::cli::commands::{
    Cli,
    Commands::{Consciousness as CmdConsciousness, Discover, Simulate},
};
use lmm::consciousness::Consciousness;
use lmm::discovery::SymbolicRegression;
use lmm::error::Result;
use lmm::tensor::Tensor;
use lmm::traits::Discoverable;
use lmm::world::WorldModel;

#[tokio::main]
async fn main() -> Result<()> {
    let cli = Cli::parse();

    match cli.command {
        Simulate { step, steps } => {
            println!("Simulate called with step={} over {} steps", step, steps);
            Ok(())
        }
        Discover { data_path } => {
            println!("Discovering using data from {}", data_path);
            let data = vec![Tensor::zeros(vec![1]), Tensor::zeros(vec![1])];
            let eq = SymbolicRegression::discover(&data)?;
            println!("Discovered Equation: {:?}", eq);
            Ok(())
        }
        CmdConsciousness => {
            let mut consc = Consciousness {
                world_model: WorldModel {
                    current_state: Tensor::zeros(vec![4]),
                },
            };
            let fake_input = vec![128, 64, 32, 255];
            let new_state = consc.tick(&fake_input)?;
            println!("Consciousness ticked. New state: {:?}", new_state.data);
            Ok(())
        }
    }
}