mindcontrol_types 0.21.0

Mind Control types
Documentation
use super::var::VarV1;
use genotype_json_types::GtjAny;
use litty::literal;
use serde::{Deserialize, Serialize};

/// Prompt signature. It defines the input and output types of the prompt.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureV1 {
    /// Input definition.
    pub input: Vec<SignatureInputV1>,
    /// Output definition.
    pub output: SignatureOutputV1,
    /// The number of choices to generate.
    pub n: u8,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureInputFieldsV1 {
    /// Input definition.
    pub input: Vec<SignatureInputV1>,
}

/// Input schema. It defines individual input variable and type.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureInputV1 {
    /// Input type.
    pub r#type: SignatureInputV1Type,
    /// Input variable.
    pub var: VarV1,
}

#[literal("string")]
pub struct SignatureInputV1TypeString;

#[literal("number")]
pub struct SignatureInputV1TypeNumber;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum SignatureInputV1Type {
    String(SignatureInputV1TypeString),
    Number(SignatureInputV1TypeNumber),
}

/// Output type. It defines output variable and type.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum SignatureOutputV1 {
    SignatureOutputStringV1(SignatureOutputStringV1),
    SignatureOutputJsonV1(SignatureOutputJsonV1),
}

/// Output base type.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureOutputBaseV1 {
    /// Output variable.
    pub var: VarV1,
}

/// Output string type.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureOutputStringV1 {
    /// Output variable.
    pub var: VarV1,
    /// Output type.
    pub r#type: SignatureOutputStringV1TypeString,
}

#[literal("string")]
pub struct SignatureOutputStringV1TypeString;

/// Output JSON type.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SignatureOutputJsonV1 {
    /// Output variable.
    pub var: VarV1,
    /// Output type.
    pub r#type: SignatureOutputJsonV1TypeJson,
    /// JSON schema descriptor.
    pub descriptor: GtjAny,
}

#[literal("json")]
pub struct SignatureOutputJsonV1TypeJson;