use std::path::PathBuf;
use serde::{Deserialize, Serialize};
use crate::{
LmcppServer, client::types::generation_settings::GenerationSettings, error::LmcppResult,
server::ipc::ServerClientExt,
};
impl LmcppServer {
pub fn props(&self) -> LmcppResult<PropsResponse> {
self.client.get("/props").map_err(Into::into)
}
}
#[derive(Debug, Serialize, Deserialize, Default)]
pub struct PropsResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub bos_token: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub assistant_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub chat_template: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub build_info: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_slots: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model_path: Option<PathBuf>,
#[serde(skip_serializing_if = "Option::is_none")]
pub modalities: Option<Modalities>,
#[serde(skip_serializing_if = "Option::is_none")]
pub default_generation_settings: Option<GenerationSettings>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct Modalities {
#[serde(skip_serializing_if = "Option::is_none")]
pub vision: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub audio: Option<bool>,
}
#[cfg(test)]
mod tests {
use serial_test::serial;
use super::*;
use crate::server::builder::LmcppServerLauncher;
#[test]
#[ignore]
#[serial]
fn test_lmcpp_server_props() -> LmcppResult<()> {
let client = LmcppServerLauncher::default().load()?;
let props = client.props()?;
println!("Props response: {:#?}", props);
Ok(())
}
}