frame_thoughtchain/
lib.rs

1//! # ThoughtChain - Autonomous Thought Tracking and Knowledge Management
2//!
3//! ThoughtChain provides persistent thought and decision tracking for AI systems,
4//! along with conversation search and dynamic knowledge base management through engrams.
5//!
6//! ## Features
7//!
8//! ### 🧠 Autonomous Reasoning
9//!
10//! Track internal reasoning, decisions, and observations across sessions:
11//!
12//! - **Thoughtchain**: Persistent thought and decision log
13//! - **Session tracking**: Organize thoughts by session
14//! - **Semantic search**: Find similar thoughts using embeddings
15//! - **Opcode storage**: Optional binary decision encoding
16//!
17//! ### 🔍 Conversation Search
18//!
19//! Temporal-aware conversation history retrieval:
20//!
21//! - **Temporal queries**: "What did I first ask?", "What did we discuss earlier?"
22//! - **Keyword detection**: Automatic conversation vs knowledge query classification
23//! - **FTS5 search**: Fast full-text search over conversation history
24//!
25//! ### 📚 Dynamic Knowledge Base (Engrams)
26//!
27//! Hot-reloadable knowledge archives:
28//!
29//! - **Auto-loading**: Watch directory and load new engrams automatically
30//! - **Multi-engram search**: Query across all loaded knowledge bases
31//! - **CML format**: Structured content with embeddings
32//!
33//! ## Usage
34//!
35//! ```rust,no_run
36//! use frame_thoughtchain::{ThoughtChainStore, ThoughtType, EngramRegistry};
37//! use uuid::Uuid;
38//! use frame_catalog::database::Database;
39//!
40//! // Create thought tracking
41//! let db = Database::new("thoughts.db").unwrap();
42//! let store = ThoughtChainStore::new(&db);
43//! store.initialize_schema().unwrap();
44//!
45//! // Create a session
46//! let session_id = Uuid::new_v4();
47//! store.create_session(session_id, None, Some("my-project"), Some("main"), None).unwrap();
48//!
49//! // Load knowledge base engrams
50//! let registry = EngramRegistry::new("engrams/", true).unwrap();
51//! println!("Loaded {} engrams with {} total chunks",
52//!     registry.list_engrams().len(),
53//!     registry.total_chunks()
54//! );
55//! ```
56
57pub mod thoughtchain;
58pub mod conversation_search;
59pub mod engram_registry;
60
61// Re-export main types
62pub use thoughtchain::{
63    ThoughtChainStore, ThoughtEntry, ThoughtType,
64    PurgeItem, PurgeMatchType, PurgeRecommendations, PurgeResult,
65};
66pub use conversation_search::{
67    is_conversation_query, detect_temporal_context, TemporalContext,
68    search_with_temporal_context, get_first_user_message, get_recent_messages,
69    format_conversation_context,
70};
71pub use engram_registry::{EngramRegistry, LoadedEngram, EngramSearchResult, EngramRegistryError};
72
73// Re-export Result type
74pub type Result<T> = std::result::Result<T, EngramRegistryError>;