use schemars::JsonSchema;
use serde::Deserialize;
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SearchParams {
pub query: String,
#[serde(default)]
pub top_k: Option<u32>,
#[serde(default)]
pub namespaces: Option<Vec<String>>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SearchExplainedParams {
pub query: String,
#[serde(default)]
pub top_k: Option<u32>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct AddFactParams {
pub content: String,
pub namespace: String,
#[serde(default)]
pub source: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct IngestDocumentParams {
pub content: String,
pub title: String,
pub namespace: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GraphPathParams {
pub from_id: String,
pub to_id: String,
#[serde(default)]
pub max_depth: Option<u32>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RouteQueryParams {
pub query: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SearchWithRoutingParams {
pub query: String,
#[serde(default)]
pub top_k: Option<u32>,
#[serde(default)]
pub contradictions: Option<Vec<(String, String)>>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct SetProvenanceParams {
pub item_id: String,
pub confidence: f64,
pub support_count: u32,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct DecoderAnalyzeParams {
pub results: Vec<(String, f64)>,
#[serde(default)]
pub contradictions: Option<Vec<(String, String)>>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct DiscordSearchParams {
pub direct_result_ids: Vec<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct RunLifecycleParams {
pub item_ids: Vec<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct AddGraphEdgeParams {
pub source: String,
pub target: String,
pub edge_type: String,
#[serde(default = "default_weight")]
pub weight: f64,
#[serde(default)]
pub cosine_similarity: Option<f32>,
#[serde(default)]
pub delta_secs: Option<u64>,
#[serde(default)]
pub confidence: Option<f32>,
#[serde(default)]
pub evidence_ids: Option<Vec<String>>,
#[serde(default)]
pub relation: Option<String>,
#[serde(default)]
pub metadata: Option<String>,
}
fn default_weight() -> f64 {
1.0
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ListGraphEdgesParams {
#[serde(default)]
pub node_id: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct InvalidateGraphEdgeParams {
pub edge_id: String,
pub reason: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct FactorGraphNodeInput {
pub item_id: String,
pub initial_belief: f64,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct FactorGraphParams {
pub nodes: Vec<FactorGraphNodeInput>,
#[serde(default)]
pub semantic_weight: Option<f64>,
#[serde(default)]
pub temporal_weight: Option<f64>,
#[serde(default)]
pub causal_weight: Option<f64>,
#[serde(default)]
pub entity_weight: Option<f64>,
#[serde(default)]
pub self_influence: Option<f64>,
#[serde(default)]
pub max_iterations: Option<u32>,
#[serde(default)]
pub convergence_threshold: Option<f64>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct TopologyParams {
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct CommunityParams {
#[serde(default)]
pub resolution: Option<f64>,
#[serde(default)]
pub seed: Option<u64>,
#[serde(default)]
pub contradictions: Option<Vec<(String, String)>>,
#[serde(default)]
pub importance_scores: Option<Vec<(String, f64)>>,
}