pub struct CompiledGraph<S: GraphState> { /* private fields */ }Expand description
A validated, ready-to-run graph. Cheap to clone (the underlying nodes
are Arc<dyn Node<S>>).
Implementations§
Source§impl<S: GraphState> CompiledGraph<S>
impl<S: GraphState> CompiledGraph<S>
Sourcepub fn analyze(&self) -> GraphAnalysis
pub fn analyze(&self) -> GraphAnalysis
Compute static-graph diagnostics. See GraphAnalysis.
Source§impl<S: GraphState> CompiledGraph<S>
impl<S: GraphState> CompiledGraph<S>
Sourcepub fn with_durability(self, d: Durability) -> Self
pub fn with_durability(self, d: Durability) -> Self
Override checkpoint timing relative to step execution. Default is
Durability::Sync.
Sourcepub fn durability(&self) -> &Durability
pub fn durability(&self) -> &Durability
Current durability mode.
Sourcepub fn node_count(&self) -> usize
pub fn node_count(&self) -> usize
Number of registered nodes — useful for testing / introspection.
Sourcepub fn node_names(&self) -> Vec<&str>
pub fn node_names(&self) -> Vec<&str>
Names of all registered nodes.
Sourcepub fn version(&self) -> Option<&str>
pub fn version(&self) -> Option<&str>
Optional graph version tag (set via crate::builder::Graph::with_version).
Source§impl<S: GraphState + Clone + Send + 'static> CompiledGraph<S>
impl<S: GraphState + Clone + Send + 'static> CompiledGraph<S>
Sourcepub fn with_checkpointer(self, cp: Arc<dyn Checkpointer<S>>) -> Self
pub fn with_checkpointer(self, cp: Arc<dyn Checkpointer<S>>) -> Self
Attach a checkpointer; the engine will save state after each superstep.
Sourcepub fn with_interrupt_before<I, N>(self, names: I) -> Self
pub fn with_interrupt_before<I, N>(self, names: I) -> Self
Pause the graph BEFORE each named node executes. Requires a checkpointer
(errors at invoke time if not configured). Interrupt names are validated
at invoke time, not compile time, because with_interrupt_before runs
after compile(). Resume via CompiledGraph::resume.
Sourcepub fn with_interrupt_after<I, N>(self, names: I) -> Self
pub fn with_interrupt_after<I, N>(self, names: I) -> Self
Pause the graph AFTER each named node completes (state already updated).
Requires a checkpointer. Resume via CompiledGraph::resume.
Sourcepub async fn resume(
&self,
run_id: Uuid,
step: u64,
state: S,
config: RunnableConfig,
) -> Result<S>
pub async fn resume( &self, run_id: Uuid, step: u64, state: S, config: RunnableConfig, ) -> Result<S>
Continue execution from a previously-interrupted run.
state is the (possibly user-edited) state to seed the next superstep
with. run_id and step come from the original GraphInterrupted error.
The resume’s RunnableConfig::run_id is set to run_id so observers
can correlate with the original run.
Sourcepub async fn get_state(&self, run_id: Uuid) -> Result<Option<S>>
pub async fn get_state(&self, run_id: Uuid) -> Result<Option<S>>
Latest checkpointed state for run_id. Returns None if there is
no checkpointer attached or no state recorded for that run.
Sourcepub async fn get_state_at(&self, run_id: Uuid, step: u64) -> Result<Option<S>>
pub async fn get_state_at(&self, run_id: Uuid, step: u64) -> Result<Option<S>>
State at a specific superstep — for time-travel.
Source§impl<S> CompiledGraph<S>
impl<S> CompiledGraph<S>
Sourcepub async fn stream_mode(
&self,
input: S,
modes: StreamModes,
config: RunnableConfig,
) -> Result<EventStream>
pub async fn stream_mode( &self, input: S, modes: StreamModes, config: RunnableConfig, ) -> Result<EventStream>
Stream events filtered by StreamModes — see the stream_mode
module for what each mode captures.
Source§impl<S: GraphState> CompiledGraph<S>
impl<S: GraphState> CompiledGraph<S>
Sourcepub fn snapshot(&self) -> GraphSnapshot
pub fn snapshot(&self) -> GraphSnapshot
Snapshot the graph’s static shape.
Source§impl<S: GraphState> CompiledGraph<S>
impl<S: GraphState> CompiledGraph<S>
Source§impl<S: GraphState> CompiledGraph<S>
impl<S: GraphState> CompiledGraph<S>
Sourcepub fn to_dot(&self) -> String
pub fn to_dot(&self) -> String
Render the graph as a GraphViz digraph source string.
Layout:
- Every registered node is a rectangle.
- The configured start node is highlighted with a bold border.
- A synthetic
__END__node is included as a stadium-shaped sink. - Static edges declared via
Graph::edgeare drawn as arrows.
Dynamic routing (via Goto::Send / Goto::Multiple returned from a
node) is not captured — only what the builder declared statically.
Source§impl<S: GraphState> CompiledGraph<S>
Methods on CompiledGraph<S> that emit a Mermaid flowchart diagram.
impl<S: GraphState> CompiledGraph<S>
Methods on CompiledGraph<S> that emit a Mermaid flowchart diagram.
Sourcepub fn to_mermaid(&self) -> String
pub fn to_mermaid(&self) -> String
Render the graph as a Mermaid flowchart TD source string.
Includes:
- The configured start node (highlighted with a bold border).
- Every registered node.
- Every static edge declared via
Graph::edge. - A synthetic
__END__sink node — edges drawn from any node that has no outgoing static edge (since dynamicGoto::Endcannot be inferred from the static graph).
Trait Implementations§
Source§impl<S: Clone + GraphState> Clone for CompiledGraph<S>
impl<S: Clone + GraphState> Clone for CompiledGraph<S>
Source§fn clone(&self) -> CompiledGraph<S>
fn clone(&self) -> CompiledGraph<S>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<S: GraphState> Debug for CompiledGraph<S>
impl<S: GraphState> Debug for CompiledGraph<S>
Source§impl<S> Runnable<S, S> for CompiledGraph<S>
impl<S> Runnable<S, S> for CompiledGraph<S>
Source§fn stream_events<'life0, 'async_trait>(
&'life0 self,
input: S,
config: RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<EventStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stream_events<'life0, 'async_trait>(
&'life0 self,
input: S,
config: RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<EventStream>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Override the default stream_events to emit real per-node events as
the engine runs (real-time, not synthetic OnEnd-only). Engine events
embed serde_json::Value::Null so S: Serialize is not required.
Source§fn invoke<'life0, 'async_trait>(
&'life0 self,
input: S,
config: RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<S>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn invoke<'life0, 'async_trait>(
&'life0 self,
input: S,
config: RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<S>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn batch<'life0, 'async_trait>(
&'life0 self,
inputs: Vec<I>,
config: RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<Vec<O>, CognisError>> + Send + 'async_trait>>
fn batch<'life0, 'async_trait>( &'life0 self, inputs: Vec<I>, config: RunnableConfig, ) -> Pin<Box<dyn Future<Output = Result<Vec<O>, CognisError>> + Send + 'async_trait>>
buffer_unordered
honouring config.max_concurrency.Source§fn stream<'life0, 'async_trait>(
&'life0 self,
input: I,
config: RunnableConfig,
) -> Pin<Box<dyn Future<Output = Result<RunnableStream<O>, CognisError>> + Send + 'async_trait>>
fn stream<'life0, 'async_trait>( &'life0 self, input: I, config: RunnableConfig, ) -> Pin<Box<dyn Future<Output = Result<RunnableStream<O>, CognisError>> + Send + 'async_trait>>
O). Default emits one item via
invoke — non-streaming runnables are correct without override.Source§fn input_schema(&self) -> Option<Value>
fn input_schema(&self) -> Option<Value>
Source§fn output_schema(&self) -> Option<Value>
fn output_schema(&self) -> Option<Value>
Auto Trait Implementations§
impl<S> Freeze for CompiledGraph<S>
impl<S> !RefUnwindSafe for CompiledGraph<S>
impl<S> Send for CompiledGraph<S>
impl<S> Sync for CompiledGraph<S>
impl<S> Unpin for CompiledGraph<S>
impl<S> UnsafeUnpin for CompiledGraph<S>
impl<S> !UnwindSafe for CompiledGraph<S>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<R, I, O> RunnableExt<I, O> for R
impl<R, I, O> RunnableExt<I, O> for R
Source§fn pipe<R2, O2>(self, next: R2) -> Pipe<Self, R2, I, O, O2>
fn pipe<R2, O2>(self, next: R2) -> Pipe<Self, R2, I, O, O2>
Pipe<Self, Next>.Source§fn with_retry(self, policy: RetryPolicy) -> Retry<Self, I, O>where
I: Clone,
fn with_retry(self, policy: RetryPolicy) -> Retry<Self, I, O>where
I: Clone,
Source§fn with_max_retries(self, attempts: u32) -> Retry<Self, I, O>where
I: Clone,
fn with_max_retries(self, attempts: u32) -> Retry<Self, I, O>where
I: Clone,
Source§fn with_timeout(self, duration: Duration) -> Timeout<Self, I, O>
fn with_timeout(self, duration: Duration) -> Timeout<Self, I, O>
Source§fn with_fallback<F>(self, fallback: F) -> Fallback<Self, F, I, O>
fn with_fallback<F>(self, fallback: F) -> Fallback<Self, F, I, O>
Source§fn with_memory_cache<K, F>(
self,
key_fn: F,
) -> Cache<Self, I, O, K, MemoryCache<K, O>>
fn with_memory_cache<K, F>( self, key_fn: F, ) -> Cache<Self, I, O, K, MemoryCache<K, O>>
key_fn(&I).