Skip to main content

rlm_rs/
lib.rs

1//! # RLM-RS
2//!
3//! Recursive Language Model REPL for Claude Code.
4//!
5//! RLM-RS is a CLI tool for handling large context files via chunking and
6//! recursive sub-LLM calls. It allows LLMs to process prompts far exceeding
7//! their context windows by decomposing content into manageable chunks.
8//!
9//! ## Features
10//!
11//! - **Chunking**: Multiple strategies (fixed, semantic, parallel) for splitting content
12//! - **`SQLite` Storage**: Persistent state with transaction support
13//! - **Memory Mapping**: Efficient handling of large files
14//! - **Unicode Aware**: Proper grapheme cluster handling
15
16#![deny(clippy::all)]
17#![warn(clippy::pedantic)]
18#![warn(clippy::nursery)]
19#![warn(missing_docs)]
20// Note: unsafe is needed for memory-mapped I/O (memmap2)
21#![warn(unsafe_code)]
22
23pub mod chunking;
24pub mod cli;
25pub mod core;
26pub mod embedding;
27pub mod error;
28pub mod io;
29pub mod search;
30pub mod storage;
31
32// Re-export commonly used types at crate root
33pub use error::{Error, Result};
34
35// Re-export core domain types
36pub use core::{Buffer, BufferMetadata, Chunk, ChunkMetadata, Context, ContextValue};
37
38// Re-export storage types
39pub use storage::{DEFAULT_DB_PATH, SqliteStorage, Storage};
40
41// Re-export chunking types
42pub use chunking::{Chunker, FixedChunker, SemanticChunker, available_strategies, create_chunker};
43
44// Re-export CLI types
45pub use cli::{Cli, Commands, OutputFormat};
46
47// Re-export embedding types
48#[cfg(feature = "fastembed-embeddings")]
49pub use embedding::FastEmbedEmbedder;
50pub use embedding::{
51    DEFAULT_DIMENSIONS, Embedder, FallbackEmbedder, cosine_similarity, create_embedder,
52};
53
54// Re-export search types
55pub use search::{
56    DEFAULT_SIMILARITY_THRESHOLD, DEFAULT_TOP_K, RrfConfig, SearchConfig, SearchResult,
57    buffer_fully_embedded, embed_buffer_chunks, hybrid_search, reciprocal_rank_fusion, search_bm25,
58    search_semantic, weighted_rrf,
59};