musicgpt 0.3.26

Generate music based on natural language prompts using LLMs running locally
pub use audio_generation_backend::JobProcessor;
pub use server::*;

#[cfg(test)]
mod _test_utils;
mod audio_generation_backend;
mod audio_generation_fanout;
mod music_gpt_chat;
mod music_gpt_ws_handler;
mod server;
mod ws_handler;

#[cfg(test)]
mod tests {
    use specta::ts::{BigIntExportBehavior, ExportConfiguration};
    use std::path::{Path, PathBuf};
    use std::time::Duration;

    use crate::backend::RunWebServerOptions;
    use crate::backend::_test_utils::DummyJobProcessor;
    use crate::backend::server::run_web_server;
    use crate::storage::AppFs;

    #[ignore]
    #[tokio::test]
    async fn spawn_dummy_server() -> anyhow::Result<()> {
        let storage = AppFs::new(Path::new("/tmp/dummy-server"));
        let processor = DummyJobProcessor::new(Duration::from_millis(100));
        let options = RunWebServerOptions {
            device: "Cpu".to_string(),
            name: "Dummy".to_string(),
            port: 8642,
            auto_open: false,
            expose: false,
        };
        run_web_server(storage.root.clone(), storage, processor, options).await
    }

    #[ignore]
    #[test]
    fn export_bindings() -> anyhow::Result<()> {
        specta::export::ts_with_cfg(
            PathBuf::from(env!("CARGO_MANIFEST_DIR"))
                .join("web/src/backend/bindings.ts")
                .to_str()
                .unwrap(),
            &ExportConfiguration::default().bigint(BigIntExportBehavior::Number),
        )?;
        Ok(())
    }
}