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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//! Juncture checkpoint persistence
//!
//! This crate provides checkpoint persistence for Juncture state machine executions.
//! It enables time-travel debugging, crash recovery, and human-in-the-loop workflows.
//!
//! # Overview
//!
//! Checkpoint persistence captures the complete state of graph execution at specific points,
//! allowing execution to be paused, resumed, or rolled back to any previous state.
//!
//! # Core Components
//!
//! - [`juncture_core::checkpoint::CheckpointSaver`]: Trait defining checkpoint storage operations
//! - [`MemorySaver`]: In-memory implementation for development/testing
//! - [`juncture_core::checkpoint::Checkpoint`]: Complete execution state snapshot
//! - [`juncture_core::checkpoint::CheckpointMetadata`]: Execution context and provenance
//!
//! # Example
//!
//! ```ignore
//! use juncture_checkpoint::MemorySaver;
//! use juncture_core::{RunnableConfig, checkpoint::CheckpointSaver};
//!
//! #[tokio::main]
//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let saver = MemorySaver::new();
//! let config = RunnableConfig::default().with_thread_id("my-thread");
//!
//! // Save a checkpoint
//! let checkpoint = /* create checkpoint */;
//! let metadata = /* create metadata */;
//! let updated_config = saver.put(&config, checkpoint, metadata).await?;
//!
//! // Retrieve latest checkpoint
//! let tuple = saver.get_tuple(&updated_config).await?.unwrap();
//!
//! Ok(())
//! }
//! ```
// Public re-exports
pub use ;
pub use CheckpointError;
pub use MemorySaver;
pub use PostgresSaver;
pub use ;
pub use SqliteSaver;
// Re-export CheckpointSaver from juncture-core for convenience
pub use CheckpointSaver;
pub use EncryptedSerializer;
pub use *;
// Rust guideline compliant 2026-05-19