Skip to main content

ranvier_runtime/
lib.rs

1#![allow(deprecated)]
2
3pub mod axon;
4pub mod closure_transition;
5pub mod cluster;
6pub mod distributed;
7pub mod llm;
8pub mod persistence;
9pub mod replay;
10pub mod retry;
11pub mod testkit;
12
13pub mod prelude {
14    pub use crate::axon::{Axon, BoxFuture, ExecutionMode, ParallelStrategy, SchematicExportRequest};
15    pub use crate::{InfallibleAxon, SimpleAxon, TypedAxon};
16    pub use crate::cluster::{ClusterManager, LeaderElection, LockBasedElection};
17    pub use crate::distributed::{
18        DistributedError, DistributedLock, DistributedStore, Guard, LockOptions,
19    };
20    pub use crate::llm::{LlmError, LlmProvider, LlmTemplateVars, LlmTransition, MockLlmConfig};
21    pub use crate::persistence::{
22        CompensationAutoTrigger, CompensationContext, CompensationHandle, CompensationHook,
23        CompensationIdempotencyHandle, CompensationIdempotencyStore, CompensationRetryPolicy,
24        CompletionState, InMemoryCompensationIdempotencyStore, InMemoryPersistenceStore,
25        PersistedTrace, PersistenceAutoComplete, PersistenceEnvelope, PersistenceHandle,
26        PersistenceStore, PersistenceTraceId, ResumeCursor,
27    };
28    #[cfg(feature = "persistence-postgres")]
29    pub use crate::persistence::{PostgresCompensationIdempotencyStore, PostgresPersistenceStore};
30    #[cfg(feature = "persistence-redis")]
31    pub use crate::persistence::{RedisCompensationIdempotencyStore, RedisPersistenceStore};
32    pub use crate::replay::ReplayEngine;
33    pub use crate::retry::{BackoffStrategy, RetryPolicy};
34    pub use crate::testkit::AxonTestKit;
35}
36
37/// Axon with `String` error — the most common pattern for examples and prototyping.
38pub type SimpleAxon<In, Out, Res = ()> = Axon<In, Out, String, Res>;
39
40/// Axon with `RanvierError` — typed error categories without a custom enum.
41pub type TypedAxon<In, Out, Res = ()> = Axon<In, Out, ranvier_core::error::RanvierError, Res>;
42
43/// Axon with `Never` error — for pipelines that cannot fail.
44///
45/// Uses `ranvier_core::Never` instead of `std::convert::Infallible`
46/// because `Never` satisfies the `Serialize + DeserializeOwned` bounds
47/// required by `Axon`.
48pub type InfallibleAxon<In, Out, Res = ()> = Axon<In, Out, ranvier_core::Never, Res>;
49
50pub use axon::{Axon, ParallelStrategy, SchematicExportRequest};
51pub use closure_transition::ClosureTransition;
52pub use cluster::{ClusterManager, LeaderElection, LockBasedElection};
53pub use distributed::{DistributedError, DistributedLock, DistributedStore, Guard, LockOptions};
54pub use llm::{LlmError, LlmProvider, LlmTemplateVars, LlmTransition, MockLlmConfig};
55pub use persistence::{
56    CompensationAutoTrigger, CompensationContext, CompensationHandle, CompensationHook,
57    CompensationIdempotencyHandle, CompensationIdempotencyStore, CompensationRetryPolicy,
58    CompletionState, InMemoryCompensationIdempotencyStore, InMemoryPersistenceStore,
59    PersistedTrace, PersistenceAutoComplete, PersistenceEnvelope, PersistenceHandle,
60    PersistenceStore, PersistenceTraceId, ResumeCursor,
61};
62#[cfg(feature = "persistence-postgres")]
63pub use persistence::{PostgresCompensationIdempotencyStore, PostgresPersistenceStore};
64#[cfg(feature = "persistence-redis")]
65pub use persistence::{RedisCompensationIdempotencyStore, RedisPersistenceStore};
66pub use replay::ReplayEngine;
67pub use retry::{BackoffStrategy, RetryPolicy};
68pub use testkit::AxonTestKit;