mod checkpoint;
mod clustering;
mod config;
mod ctfidf;
mod dendrogram;
mod extractor;
mod model;
pub mod paradigm;
mod summarizer;
mod topic;
pub use checkpoint::*;
pub use clustering::*;
pub use config::*;
pub use ctfidf::*;
pub use dendrogram::*;
pub use extractor::*;
pub use model::*;
pub use paradigm::{
ApiPattern, ApiPatternConfig, ApiPatternMiner, DetectionResult, DomainPatternDetector,
IndicatorCategory, IndicatorMatch, LanguageHints, MettaPattern, MettaPatternCatalog,
MettaPatternCategory, MettaPatternMatch, MiningStats, Paradigm, ParadigmConfig,
ParadigmDetector, ParadigmIndicator, ParadigmProfile, ParadigmWeights, RholangPattern,
RholangPatternCatalog, RholangPatternCategory, RholangPatternMatch,
};
pub use summarizer::*;
pub use topic::*;
use thiserror::Error;
pub type Result<T> = std::result::Result<T, TopicError>;
#[derive(Error, Debug)]
pub enum TopicError {
#[error("Clustering error: {0}")]
ClusteringError(String),
#[error("c-TF-IDF error: {0}")]
CtfidfError(String),
#[error("Summarization error: {0}")]
SummarizationError(String),
#[error("Not enough documents: need at least {minimum}, have {actual}")]
InsufficientDocuments {
minimum: usize,
actual: usize,
},
#[error("Embedding dimension mismatch: expected {expected}, got {actual}")]
DimensionMismatch {
expected: usize,
actual: usize,
},
#[error("Invalid configuration: {0}")]
InvalidConfig(String),
#[error("Checkpoint error: {0}")]
CheckpointError(String),
#[error("Paradigm detection error: {0}")]
ParadigmError(String),
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
#[error("Serialization error: {0}")]
SerializationError(String),
}
impl From<bincode::Error> for TopicError {
fn from(err: bincode::Error) -> Self {
TopicError::SerializationError(err.to_string())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_error_display() {
let err = TopicError::InsufficientDocuments {
minimum: 10,
actual: 5,
};
assert!(err.to_string().contains("10"));
assert!(err.to_string().contains("5"));
}
#[test]
fn test_config_exports() {
let _ = TopicConfig::default();
let _ = ClusteringConfig::default();
let _ = CtfidfConfig::default();
}
#[test]
fn test_topic_exports() {
let id = TopicId::new(0);
assert_eq!(id.as_u32(), 0);
}
}