1#[cfg(feature = "chat")]
2pub mod chat;
3pub mod checkpoint;
4#[cfg(all(feature = "chat", not(target_family = "wasm")))]
5pub mod client;
6pub mod command;
7pub mod config;
8pub mod edge;
9pub mod error;
10pub mod func;
11pub mod graph;
12pub mod interrupt;
13pub mod llm;
14pub mod node;
15pub mod observability;
16pub mod prebuilt;
17pub mod pregel;
18pub mod runtime;
19pub mod send;
20pub mod state;
21pub mod store;
22pub mod stream;
23pub mod subgraph;
24pub mod time;
25pub mod tools;
26pub mod tracing_wasm;
27pub mod wasm_send;
28
29#[macro_export]
70macro_rules! interrupt {
71 ($id:expr, $payload:expr) => {{
73 $crate::interrupt::INTERRUPT_CONTEXT
74 .try_with(|ctx| {
75 Box::pin($crate::interrupt::__interrupt_impl(
76 &**ctx,
77 ::serde_json::to_value(&$payload)
78 .expect("interrupt payload must be serializable"),
79 Some($id),
80 ))
81 .await
82 })
83 .unwrap_or_else(|_| {
84 Err($crate::JunctureError::execution(
85 "interrupt context not set in task-local",
86 ))
87 })
88 }};
89 ($payload:expr) => {{
91 $crate::interrupt::INTERRUPT_CONTEXT
92 .try_with(|ctx| {
93 Box::pin($crate::interrupt::__interrupt_impl(
94 &**ctx,
95 ::serde_json::to_value(&$payload)
96 .expect("interrupt payload must be serializable"),
97 None,
98 ))
99 .await
100 })
101 .unwrap_or_else(|_| {
102 Err($crate::JunctureError::execution(
103 "interrupt context not set in task-local",
104 ))
105 })
106 }};
107}
108
109#[macro_export]
151macro_rules! interrupt_with_ctx {
152 ($ctx:expr, $id:expr, $payload:expr) => {{
154 $crate::interrupt::__interrupt_impl(
155 $ctx,
156 ::serde_json::to_value(&$payload).expect("interrupt payload must be serializable"),
157 Some($id),
158 )
159 .await
160 }};
161 ($ctx:expr, $payload:expr) => {{
163 $crate::interrupt::__interrupt_impl(
164 $ctx,
165 ::serde_json::to_value(&$payload).expect("interrupt payload must be serializable"),
166 None,
167 )
168 .await
169 }};
170}
171
172#[macro_export]
199macro_rules! parent_command {
200 ($target:expr) => {
201 return Err($crate::JunctureError::parent_command($target))
202 };
203}
204
205#[cfg(all(feature = "chat", not(target_family = "wasm")))]
206pub use chat::{ChatAnthropic, ChatOllama, ChatOpenAI};
207pub use checkpoint::{
208 CHECKPOINT_NS_SEPARATOR, CheckpointNamespace, CheckpointSaver, DeltaCounters, NamespaceSegment,
209 generate_checkpoint_id,
210};
211#[cfg(all(feature = "chat", not(target_family = "wasm")))]
212pub use client::{
213 AuthConfig, ClientError, GraphClient, InvokeConfig, JunctureClient, StateSnapshot, Thread,
214};
215pub use command::{Command, CommandGoto, Final, Goto, GraphTarget, ParentCommand, SendTarget};
216pub use config::{
217 CacheConfig, CachePolicy, EntrypointConfig, ResourceLimits, RunnableConfig, TaskConfig,
218};
219pub use edge::{END, Edge, PathMap, RouteResult, Router, START, TriggerTable};
220pub use error::{ErrorCode, InvalidUpdateError, JunctureError, NodeTimeoutError};
221pub use func::{Runtime as FuncRuntime, compile_entrypoint, compile_entrypoint_with_config};
222pub use graph::{
223 CircuitBreakerConfig, CircuitBreakerState, CircuitState, CompiledGraph, DrawableEdge,
224 DrawableGraph, DrawableNode, ErrorHandlerNode, GraphOutput, GraphOutputMetadata, InterruptInfo,
225 NodeMetadata, RetryPolicy, RetryingNode, StateFilter, StateGraph, StateUpdate, StreamHandle,
226 SubgraphInfo, TopologyError,
227};
228pub use interrupt::{
229 HIDDEN_TAG, InterruptContext, InterruptSignal, ResumeValue, Scratchpad, generate_interrupt_id,
230 should_interrupt,
231};
232pub use llm::{
233 CallOptions, ChatModel, JsonSchema, LlmError, MessageChunk, StructuredOutputModel, ToolChoice,
234 ToolDefinition,
235};
236pub use node::{IntoNode, Node, NodeError};
237pub use observability::{CacheKeyInput, GraphLifecycleCallback, MetricsCollector};
238pub use prebuilt::{PromptSource, ReactAgentConfig};
239pub use pregel::{
240 BubbleUp, BudgetConfig, BudgetExceededAction, BudgetExceededReason, BudgetTracker, BudgetUsage,
241 Durability, ExecutionConfig, ExecutionContext, FieldVersionTracker, GraphDrained,
242 GraphInterrupt, HealthStatus, LoopStatus, NodeHealth, NodeHealthState, PendingTask, PregelLoop,
243 PregelProtocol, StreamEvent as PregelStreamEvent, SuperstepResult, SyncAsyncFuture, TaskOutput,
244 TaskTrigger, TimeoutPolicy, TriggerToNodes, apply_writes, compute_next_tasks,
245 execute_superstep,
246};
247pub use runtime::{
248 ExecutionInfo, Heartbeat, HeartbeatWatcher, ManagedValues, RunControl, Runtime,
249 StreamWriterTrait,
250};
251pub use send::Send;
252pub use state::{
253 AnyValueReducer, AppendReducer, Channel, Content, ContentPart, CowState, DeltaBlob,
254 DeltaChannel, EphemeralChannel, FieldsChanged, FromState, ImageData, ImageSource, IntoState,
255 LastValueAfterFinishChannel, LastWriteWinsReducer, Message, MessagesState, MessagesStateUpdate,
256 Overwrite, REMOVE_ALL_MESSAGES, Reducer, RemoveMessage, ReplaceReducer, RingBufferChannel,
257 Role, State, TokenUsage, ToolCall, UntrackedChannel, messages_reducer,
258};
259pub use store::{
260 EmbeddingFunc, FilterExpr, IndexConfig, Item, MemoryStore, SearchItem, SearchQuery,
261 SearchResult, Store, StoreError, StoreOp, StoreResult, TTLConfig,
262};
263pub use stream::{
264 BatchTransformer, DebugEvent, EventEmitter, FilterFieldsTransformer, JsonParseTransformer,
265 MessageBatchConfig, StreamConfig, StreamEvent, StreamMode, StreamPart, StreamResumption,
266 StreamTransformer, StreamWriter, TaskEventType, ToolsEvent, call_llm_streaming,
267};
268pub use subgraph::{
269 StateSubset, SubgraphConfig, SubgraphMount, SubgraphNode, SubgraphPersistence,
270 SubgraphTransformer,
271};
272pub use tools::{
273 NopToolInterceptor, StatefulTool, Tool, ToolCallTransformer, ToolError, ToolExecutionTrace,
274 ToolInterceptor, ToolNode, ToolNodeConfig, ToolRuntime, tools_condition,
275};
276
277