Skip to main content

ranvier_runtime/
lib.rs

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