#![warn(missing_docs)]
pub mod types;
pub mod span;
pub mod embedding;
pub mod compiler;
pub mod db;
pub mod index;
pub mod session;
pub mod approx;
pub mod eval;
pub mod diff;
pub mod storage;
pub use types::{
Artifact, Citation, CompilerConfig, Error, Result, ScoredSpan, Span, WorkingSet,
Session, Message, MessageRole, SessionWorkingSet,
Manifest, ChunkingParams, IndexParams,
ExplainPlan, ExplainCandidate, ExplainTiming, ExplainThresholds,
IngestAction,
GoldenQuery, EvalResult, EvalSummary,
WorkingSetDiff, DiffEntry, RerankEntry,
Agent, Stance, AgentRelation, AgentMessageMeta, AgentRelationSummary, AgentRelationEntry,
};
pub use session::{SessionManager, SessionManagerGeneric, SessionReplay, SessionTurn};
pub use compiler::{compile, compile_with_backend, compile_with_backend_options};
pub use storage::{
StorageBackend, StorageConfig, SqliteBackend,
VectorSearchProvider, VectorSearchResult,
create_backend, create_backend_from_env,
};
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version() {
assert!(!VERSION.is_empty());
}
#[test]
fn test_working_set_hash_determinism() {
let ws1 = WorkingSet {
text: "Hello, world!".to_string(),
spans: vec![],
citations: vec![],
tokens_used: 3,
query: "test".to_string(),
compilation_time_ms: 100,
manifest: None,
explain: None,
};
let ws2 = WorkingSet {
text: "Hello, world!".to_string(),
spans: vec![],
citations: vec![],
tokens_used: 3,
query: "test".to_string(),
compilation_time_ms: 200, manifest: None,
explain: None,
};
assert_eq!(ws1.deterministic_hash(), ws2.deterministic_hash());
}
}