llmrix-rust-sdk 1.0.0

Official Rust SDK for the llmrix AI Agent Platform API
Documentation
use serde::{Deserialize, Serialize};

/// A Llmrix agent definition (cloud mode only).
#[derive(Debug, Clone, Deserialize, Default)]
pub struct Agent {
    pub id: i64,
    pub name: String,
    #[serde(rename = "type", default)]
    pub agent_type: String,
    #[serde(default)]
    pub system_prompt: String,
    #[serde(default)]
    pub model_id: String,
    #[serde(default)]
    pub mcps: Vec<String>,
    #[serde(default)]
    pub skills: Vec<String>,
    #[serde(default)]
    pub metadata: serde_json::Value,
    #[serde(default)]
    pub introduce: String,
    #[serde(default)]
    pub outlines: Vec<serde_json::Value>,
}

/// Request body for creating an agent.
#[derive(Debug, Default, Serialize)]
pub struct AgentCreateRequest {
    pub name: String,
    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
    pub agent_type: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub system_prompt: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub model_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub mcps: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub skills: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub introduce: Option<String>,
}

/// Request body for updating an agent (only non-`None` fields are sent).
#[derive(Debug, Default, Serialize)]
pub struct AgentUpdateRequest {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub name: Option<String>,
    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
    pub agent_type: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub system_prompt: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub model_id: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub mcps: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub skills: Option<Vec<String>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub introduce: Option<String>,
}

/// A sub-agent assigned to a team agent.
#[derive(Debug, Clone, Deserialize, Serialize, Default)]
pub struct Mate {
    pub name: String,
    #[serde(default, skip_serializing_if = "String::is_empty")]
    pub introduce: String,
    #[serde(default, skip_serializing_if = "String::is_empty")]
    pub system_prompt: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub sort: Option<i32>,
}

/// Wire body for the save-mates endpoint.
#[derive(Debug, Serialize)]
pub(crate) struct SaveMatesRequest {
    pub mates: Vec<Mate>,
}