1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//! Tasks — the first CortEX model built on top of the CortEX adapter.
//!
//! Demonstrates the full three-way handoff:
//!
//! - `TasksState` — materialized HashMap of tasks (CortEX-owned state).
//! - `TasksFold` — decodes `EventMeta` + payload, routes by dispatch,
//! mutates state.
//! - `TasksAdapter` — typed wrapper over `CortexAdapter<TasksState>`
//! with domain-level ingest helpers (`create` / `rename` /
//! `complete` / `delete`).
//!
//! All events ride a single RedEX file at `cortex/tasks` (see
//! [`TASKS_CHANNEL`]). Dispatches use the CortEX-internal range
//! `0x01..=0x04` (created / renamed / completed / deleted).
//!
//! # Example
//!
//! ```ignore
//! use net::adapter::net::redex::Redex;
//! use net::adapter::net::cortex::tasks::TasksAdapter;
//!
//! # async fn demo(now_ns: u64) -> Result<(), Box<dyn std::error::Error>> {
//! let redex = Redex::new();
//! let tasks = TasksAdapter::open(&redex, 0xABCD_EF01)?;
//!
//! let seq = tasks.create(1, "write the plan", now_ns)?;
//! tasks.wait_for_seq(seq).await;
//!
//! let state = tasks.state();
//! let guard = state.read();
//! assert_eq!(guard.len(), 1);
//! # Ok(()) }
//! ```
pub use TasksAdapter;
pub use ;
pub use TasksFilter;
pub use TasksFold;
pub use ;
pub use TasksState;
pub use ;
pub use TasksWatcher;