Skip to main content

ranvier_runtime/
lib.rs

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