use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, thiserror::Error)]
pub enum HttpAdapterError {
#[error("Server error: {0}")]
Server(String),
}
#[derive(Debug, Deserialize)]
pub struct SignalRequest {
pub source: Option<String>,
pub channel: Option<String>,
pub sender: Option<String>,
pub content: String,
pub metadata: Option<HashMap<String, String>>,
pub namespace: Option<String>,
pub agent: Option<String>,
pub session_id: Option<String>,
}
#[derive(Debug, Deserialize)]
pub struct SearchRequest {
pub query: String,
pub top_k: Option<usize>,
pub namespace: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct NamespaceJson {
pub namespace: String,
pub fact_count: i64,
pub episode_count: i64,
}
#[derive(Debug, Serialize)]
pub struct ExportJson {
pub version: String,
pub exported_at: String,
pub facts: Vec<signal::ExportedFact>,
pub episodes: Vec<signal::ExportedEpisode>,
}
#[derive(Debug, Deserialize)]
pub struct ImportRequest {
pub facts: Vec<signal::ExportedFact>,
pub episodes: Vec<signal::ExportedEpisode>,
#[serde(default)]
pub dry_run: bool,
}
#[derive(Debug, Serialize)]
pub struct ImportResponse {
pub facts_imported: usize,
pub episodes_imported: usize,
pub facts_already_existed: usize,
pub episodes_already_existed: usize,
pub embedded: usize,
pub embed_failed: usize,
}
#[derive(Debug, Serialize)]
pub struct FactJson {
pub id: String,
pub namespace: String,
pub category: String,
pub subject: String,
pub predicate: String,
pub object: String,
pub confidence: f64,
pub distance: Option<f32>,
}
#[derive(Debug, Serialize)]
pub struct HealthResponse {
pub status: &'static str,
pub version: &'static str,
}