reasoninglayer 0.2.1

Rust client SDK for the Reasoning Layer API
Documentation
//! Neuro-symbolic admin DTOs (training pipeline, diagnostics, embeddings).

use serde::{Deserialize, Serialize};

/// Status of the neuro-symbolic subsystem.
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct NeuroSymbolicStatusResponse {
    pub enabled: bool,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub status: Option<NeuroSymbolicStatus>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct NeuroSymbolicStatus {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub model_version: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub last_trained_at: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub trained_traces: Option<u64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub gflownet_iterations: Option<u64>,
}

/// Generic response for `/train*` endpoints — backend returns `{triggered, result?, error?}`.
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TrainingTriggerResponse {
    pub triggered: bool,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub result: Option<TrainingRunResult>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub error: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TrainingRunResult {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub final_loss: Option<f32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub iterations: Option<u32>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub elapsed_ms: Option<u64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub message: Option<String>,
}

/// Response from `/train/from-traces`.
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TrainFromTracesResponse {
    pub triggered: bool,
    pub traces_consumed: u64,
    pub loss: f32,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub error: Option<String>,
}

/// Diagnostic snapshot from the trace collector.
pub type DiagnosticsSnapshot = serde_json::Value;

/// Embedding-fidelity verification report (`/embeddings/verify`).
pub type EmbeddingVerifyResponse = serde_json::Value;

/// Sort-box embedding metadata (`/embeddings/sort-box`).
pub type SortBoxResponse = serde_json::Value;