mindcontrol_types 0.21.0

Mind Control types
Documentation
use litty::literal;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

/// Perplexity model identifier.
/// Source: https://docs.perplexity.ai/models/model-cards
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PerplexityModel {
    SonarPro(PerplexityModelSonarPro),
    Sonar(PerplexityModelSonar),
    SonarDeepResearch(PerplexityModelSonarDeepResearch),
    SonarReasoningPro(PerplexityModelSonarReasoningPro),
    SonarReasoning(PerplexityModelSonarReasoning),
    R11776(PerplexityModelR11776),
    String(String),
}

#[literal("sonar-pro")]
pub struct PerplexityModelSonarPro;

#[literal("sonar")]
pub struct PerplexityModelSonar;

#[literal("sonar-deep-research")]
pub struct PerplexityModelSonarDeepResearch;

#[literal("sonar-reasoning-pro")]
pub struct PerplexityModelSonarReasoningPro;

#[literal("sonar-reasoning")]
pub struct PerplexityModelSonarReasoning;

#[literal("r1-1776")]
pub struct PerplexityModelR11776;

/// Perplexity model settings.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PerplexitySettings {
    /// Settings type.
    pub r#type: PerplexitySettingsTypePerplexity,
    /// Model identifier.
    pub model: Option<PerplexityModel>,
}

#[literal("perplexity")]
pub struct PerplexitySettingsTypePerplexity;

/// Perplexity provider identifier.
pub type PerplexityProvider = PerplexityProviderPerplexity;

#[literal("perplexity")]
pub struct PerplexityProviderPerplexity;

/// Perplexity provider settings.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PerplexityProviderSettings {
    pub default: Option<PerplexityProvider>,
    pub models: Option<BTreeMap<String, PerplexityProvider>>,
}