mod edge;
mod execute;
pub(crate) mod math;
mod report;
use crate::LinkConfig;
use weavatrix_graph::{Edge, EdgeKind};
pub const SEMANTIC_EDGE_KIND: &str = "semantic_similarity";
pub const SEMANTIC_EXTRACTOR: &str = "weavatrix-semantic";
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum CandidateBackend {
Exact,
WeavatrixVector,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub(crate) struct Candidate {
pub(crate) target: usize,
pub(crate) score: f64,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct SemanticLinkReport {
vector_count: usize,
dimension: usize,
comparisons: u64,
pair_count: usize,
candidate_backend: CandidateBackend,
policy_id: String,
edges: Vec<Edge>,
}
#[derive(Debug, Clone)]
pub struct SemanticLinker {
config: LinkConfig,
edge_kind: EdgeKind,
}