pub mod generator;
pub mod parser;
pub mod profile;
pub mod types;
pub mod validator;
pub mod chunker;
pub mod embedding_store;
pub mod id_generator;
pub use generator::CmlGenerator;
pub use parser::CmlParser;
pub use profile::{Profile, ProfileRegistry, ResolvedProfile};
pub use types::*;
pub use validator::CmlValidator;
pub use chunker::{Chunk, CmlChunker, CHUNK_OVERLAP_TOKENS, MAX_CHUNK_TOKENS};
pub use embedding_store::{ChunkMatch, EmbeddingStore, MatchType, EMBEDDING_DIM};
pub use id_generator::{BookstackIdGenerator, CodeIdGenerator, ElementId, LegalIdGenerator};
pub type Result<T> = std::result::Result<T, CmlError>;
#[derive(Debug, thiserror::Error)]
pub enum CmlError {
#[error("XML parsing error: {0}")]
XmlError(#[from] quick_xml::Error),
#[error("XML attribute error: {0}")]
AttrError(#[from] quick_xml::events::attributes::AttrError),
#[error("Invalid document structure: {0}")]
InvalidStructure(String),
#[error("Missing required attribute: {0}")]
MissingAttribute(String),
#[error("Invalid attribute value: {0}")]
InvalidAttribute(String),
#[error("Schema validation failed: {0}")]
ValidationError(String),
#[error("Duplicate ID: {0}")]
DuplicateId(String),
#[error("Reference not found: {0}")]
ReferenceNotFound(String),
#[error("IO error: {0}")]
IoError(#[from] std::io::Error),
#[error("UTF-8 error: {0}")]
Utf8Error(#[from] std::string::FromUtf8Error),
}