pub mod compose;
pub mod error;
pub mod registry;
pub mod angelic;
pub mod aztec;
pub mod buddhist;
pub mod celtic;
pub mod egyptian;
pub mod hindu;
pub mod incarnate;
pub mod jain;
pub mod kabbalah;
pub mod maya;
pub mod mesopotamian;
pub mod norse;
pub mod olympian;
pub mod polynesian;
pub mod shinto;
pub mod sikh;
pub mod slavic;
pub mod taoist;
pub mod yoruba;
pub mod zoroastrian;
pub mod logging;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub struct TraitWeights {
pub warmth: f64,
pub humor: f64,
pub empathy: f64,
pub patience: f64,
pub confidence: f64,
pub curiosity: f64,
pub creativity: f64,
pub directness: f64,
pub formality: f64,
pub verbosity: f64,
pub courage: f64,
pub precision: f64,
pub skepticism: f64,
pub autonomy: f64,
pub pedagogy: f64,
}
impl Default for TraitWeights {
fn default() -> Self {
Self {
warmth: 0.5,
humor: 0.5,
empathy: 0.5,
patience: 0.5,
confidence: 0.5,
curiosity: 0.5,
creativity: 0.5,
directness: 0.5,
formality: 0.5,
verbosity: 0.5,
courage: 0.5,
precision: 0.5,
skepticism: 0.5,
autonomy: 0.5,
pedagogy: 0.5,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
pub struct ModuleEmphasis {
pub mood: f64,
pub energy: f64,
pub stress: f64,
pub growth: f64,
pub spirit: f64,
pub reasoning: f64,
pub regulation: f64,
pub relationship: f64,
pub flow: f64,
pub belief: f64,
pub intuition: f64,
pub salience: f64,
pub appraisal: f64,
pub eq: f64,
}
impl Default for ModuleEmphasis {
fn default() -> Self {
Self {
mood: 0.5,
energy: 0.5,
stress: 0.5,
growth: 0.5,
spirit: 0.5,
reasoning: 0.5,
regulation: 0.5,
relationship: 0.5,
flow: 0.5,
belief: 0.5,
intuition: 0.5,
salience: 0.5,
appraisal: 0.5,
eq: 0.5,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub enum BreathAffinity {
Unity,
EarlyExhale,
MidExhale,
#[default]
LateExhale,
EarlyInhale,
MidInhale,
LateInhale,
}
impl BreathAffinity {
#[must_use]
#[inline]
pub fn intensity(&self) -> f64 {
match self {
Self::Unity => 0.0,
Self::EarlyExhale => 0.15,
Self::MidExhale => 0.5,
Self::LateExhale => 1.0,
Self::EarlyInhale => 0.8,
Self::MidInhale => 0.4,
Self::LateInhale => 0.1,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub enum GrowthDirection {
#[default]
Differentiate,
Integrate,
Preserve,
Transform,
Still,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub enum Element {
Fire,
Water,
Earth,
Air,
Aether,
Light,
Darkness,
Storm,
#[default]
Mixed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub enum Polarity {
Masculine,
Feminine,
Androgynous,
#[default]
Transcendent,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub enum CosmicTier {
Supreme,
Primordial,
Cosmic,
#[default]
Greater,
Lesser,
Demigod,
Master,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ArchetypeProfile {
pub name: String,
pub tradition: String,
pub description: String,
pub traits: TraitWeights,
pub emphasis: ModuleEmphasis,
pub breath: BreathAffinity,
pub growth: GrowthDirection,
pub element: Element,
pub polarity: Polarity,
pub tier: CosmicTier,
pub soul_text: String,
pub spirit_text: String,
}
pub trait Archetype {
#[must_use]
fn profile(&self) -> ArchetypeProfile;
#[must_use]
fn name(&self) -> &'static str;
#[must_use]
fn tradition(&self) -> &'static str;
}
pub use error::AvataraError;