nmp_threading/lib.rs
1//! `nmp-threading` — reply-convention-agnostic timeline grouping.
2//!
3//! Owns the kind-agnostic [`Grouper`] that collapses reply chains into
4//! Twitter-style stacked-module blocks, plus the trait surface
5//! ([`ParentResolver`]) and value types ([`ThreadPointer`], [`ModulePolicy`],
6//! [`TimelineBlock`], [`GroupDelta`]) consumed by per-NIP wrapper view
7//! modules. It also owns the generic e-tag threading projection family
8//! (`nmp.threading.graph.*`) for consumers that need a reactive read model over
9//! a caller-supplied event scope. Depends only on substrate crates — no kind
10//! numbers, no app nouns.
11//!
12//! - `nmp-nip01::Nip10ModularTimelineView` wraps this for NIP-10 kind:1.
13//!
14//! See `docs/decisions/0072-runtime-capability-and-shell-boundary.md` and
15//! `docs/architecture/crate-boundaries.md` for the sibling-crate packaging
16//! rule.
17
18pub mod block;
19pub mod etag;
20pub mod grouper;
21pub mod pointer;
22pub mod policy;
23pub mod projection;
24pub mod resolver;
25pub mod runtime;
26pub mod wire;
27
28pub use block::TimelineBlock;
29pub use etag::EtagThreadResolver;
30pub use grouper::{GroupDelta, Grouper};
31pub use pointer::ThreadPointer;
32pub use policy::ModulePolicy;
33pub use projection::{ThreadEdge, ThreadingProjection, ThreadingSnapshot};
34pub use resolver::ParentResolver;
35pub use runtime::{
36 close_threading_read_model, open_threading_read_model, threading_projection_key,
37 ThreadingReadModelHandle, ThreadingReadModelParams, ThreadingScope,
38 THREADING_GRAPH_PROJECTION_FAMILY_CLAIM, THREADING_GRAPH_PROJECTION_KEY_PREFIX,
39 THREADING_GRAPH_SCHEMA_ID, THREADING_GRAPH_SESSION_ID_MAX_LEN,
40};
41pub use wire::{
42 decode_threading_snapshot, encode_threading_snapshot, THREADING_GRAPH_FILE_IDENTIFIER,
43 THREADING_GRAPH_SCHEMA_VERSION,
44};
45
46/// Compiled ownership descriptor for crate-ownership reports.
47pub mod ownership;