Skip to main content

brainwires_stores/
lib.rs

1//! # brainwires-stores
2//!
3//! Schema + CRUD for the framework's opinionated minimum data-store set.
4//!
5//! Every store is built on the [`brainwires_storage::StorageBackend`] trait —
6//! consumers can swap backends without touching store code. Each store
7//! family is gated behind a Cargo feature so consumers only pay for what
8//! they use.
9//!
10//! This crate is **schema only**. Orchestration (multi-tier search,
11//! promotion / demotion logic) and the offline `dream` consolidation
12//! engine live in the **`brainwires-memory`** crate, which depends on
13//! the schema types here.
14//!
15//! ## Feature flags
16//!
17//! - `session` *(default)* — `SessionStore` trait + `InMemorySessionStore`
18//!   (and `SqliteSessionStore` with the `sqlite` feature). Full-transcript
19//!   persistence keyed by session id.
20//! - `task` *(default)* — `TaskStore` + `AgentStateStore`.
21//! - `plan` *(default)* — `PlanStore` + `TemplateStore`.
22//! - `conversation` *(default)* — `ConversationStore` (catalog metadata).
23//! - `memory` — tier schema stores: `MessageStore`, `SummaryStore`,
24//!   `FactStore`, `MentalModelStore`, `TierMetadataStore`, plus the
25//!   shared `tier_types` (`MemoryTier`, `MemoryAuthority`, `TierMetadata`,
26//!   `MessageSummary`, `KeyFact`, `FactType`).
27//! - `lock` — `LockStore`. Coordination locks (rusqlite-backed).
28//! - `image` — `ImageStore` with hashing + metadata.
29//! - `sqlite` — pulls rusqlite for backends that need it.
30
31#[cfg(feature = "session")]
32pub mod session;
33
34#[cfg(feature = "memory")]
35pub mod memory;
36
37#[cfg(feature = "conversation")]
38pub mod conversation_store;
39
40#[cfg(feature = "image")]
41pub mod image_store;
42
43#[cfg(feature = "lock")]
44pub mod lock_store;
45
46#[cfg(feature = "plan")]
47pub mod plan_store;
48
49#[cfg(feature = "task")]
50pub mod task_store;
51
52#[cfg(feature = "plan")]
53pub mod template_store;
54
55#[cfg(feature = "session")]
56pub use session::{
57    ArcSessionStore, InMemorySessionStore, ListOptions, Message, SessionBroker, SessionError,
58    SessionId, SessionMessage, SessionRecord, SessionStore, SessionSummary, SpawnRequest,
59    SpawnedSession,
60};
61
62#[cfg(all(feature = "session", feature = "sqlite"))]
63pub use session::SqliteSessionStore;
64
65#[cfg(feature = "memory")]
66pub use memory::{
67    FactStore, FactType, KeyFact, MemoryAuthority, MemoryTier, MentalModel, MentalModelStore,
68    MessageMetadata, MessageStore, MessageSummary, ModelType, SummaryStore, TierMetadata,
69    TierMetadataStore, facts_field_defs, facts_schema, messages_schema, summaries_field_defs,
70    summaries_schema, tier_types,
71};
72
73#[cfg(feature = "conversation")]
74pub use conversation_store::{ConversationMetadata, ConversationStore};
75
76#[cfg(feature = "image")]
77pub use image_store::ImageStore;
78
79#[cfg(feature = "lock")]
80pub use lock_store::{LockRecord, LockStats, LockStore};
81
82#[cfg(feature = "plan")]
83pub use plan_store::PlanStore;
84
85#[cfg(feature = "task")]
86pub use task_store::{AgentStateMetadata, AgentStateStore, TaskMetadata, TaskStore};
87
88#[cfg(feature = "plan")]
89pub use template_store::{PlanTemplate, TemplateStore};