mod actor;
mod attach;
mod chat;
mod config;
mod controller;
mod protocol;
mod settings_page;
pub use attach::SciscraperAttach;
pub use chat::{RagChat, RagChatEvent};
pub use config::{ChatProvider, MemoryChoice, PdfBackend, RagSettings, RagSetup};
pub use controller::RagController;
pub use protocol::{
AgentInfo, AttachmentSource, IngestPhase, IngestProgress, LibraryDocument, LibrarySnapshot,
PendingAttachment, RagCommand, RagEvent, RagReply, RequestId, SessionInfo, SessionTurn,
SyncSummary,
};
pub use settings_page::{rag_settings, rag_settings_page};
pub(crate) fn count_label(count: usize, singular: &str, plural: &str) -> String {
format!("{count} {}", if count == 1 { singular } else { plural })
}