reasoninglayer 0.1.2

Rust client SDK for the Reasoning Layer API
Documentation
//! Causal discovery DTOs.

use std::collections::BTreeMap;

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DataPointDto {
    pub timestamp: String,
    pub values: BTreeMap<String, f64>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DiscoveryConfigDto {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub min_effect_samples: Option<u32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub num_regimes: Option<u32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub window_size: Option<u32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub window_step: Option<u32>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DiscoverEffectsRequest {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub config: Option<DiscoveryConfigDto>,
    pub data: Vec<DataPointDto>,
    pub name: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub parent_sort_id: Option<String>,
    pub target_feature: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HorizonDto {
    pub confidence: f64,
    pub horizon: f64,
    pub score: f64,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DiscoverEffectsResponse {
    #[serde(default)]
    pub discovered_horizons: Vec<HorizonDto>,
    pub effects_extracted: u64,
    pub processing_time_ms: u64,
    pub regimes_discovered: u64,
    pub root_sort_id: String,
    #[serde(default)]
    pub sort_ids: BTreeMap<String, String>,
    pub success: bool,
    pub terms_created: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PredictFromDiscoveryRequest {
    pub current_values: BTreeMap<String, f64>,
    pub discovery_sort_id: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub min_similarity: Option<f64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub top_k: Option<u32>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct EffectPredictionDto {
    pub confidence: f64,
    pub mean: f64,
    pub std_dev: f64,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PredictFromDiscoveryResponse {
    pub avg_similarity: f64,
    #[serde(default)]
    pub predictions: BTreeMap<String, EffectPredictionDto>,
    pub query_time_ms: u64,
    pub similar_terms: u64,
    pub success: bool,
}