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::{CacheConfig, CachePolicy, EntrypointConfig, RunnableConfig, TaskConfig};
217pub use edge::{END, Edge, PathMap, RouteResult, Router, START, TriggerTable};
218pub use error::{ErrorCode, InvalidUpdateError, JunctureError, NodeTimeoutError};
219pub use func::{Runtime as FuncRuntime, compile_entrypoint, compile_entrypoint_with_config};
220pub use graph::{
221 CompiledGraph, DrawableEdge, DrawableGraph, DrawableNode, ErrorHandlerNode, GraphOutput,
222 GraphOutputMetadata, InterruptInfo, NodeMetadata, RetryPolicy, RetryingNode, StateFilter,
223 StateGraph, StateUpdate, StreamHandle, SubgraphInfo, TopologyError,
224};
225pub use interrupt::{
226 HIDDEN_TAG, InterruptContext, InterruptSignal, ResumeValue, Scratchpad, generate_interrupt_id,
227 should_interrupt,
228};
229pub use llm::{
230 CallOptions, ChatModel, JsonSchema, LlmError, MessageChunk, StructuredOutputModel, ToolChoice,
231 ToolDefinition,
232};
233pub use node::{IntoNode, Node, NodeError};
234pub use observability::{CacheKeyInput, GraphLifecycleCallback, MetricsCollector};
235pub use prebuilt::{PromptSource, ReactAgentConfig};
236pub use pregel::{
237 BubbleUp, BudgetConfig, BudgetExceededAction, BudgetExceededReason, BudgetTracker, BudgetUsage,
238 Durability, ExecutionConfig, ExecutionContext, FieldVersionTracker, GraphDrained,
239 GraphInterrupt, LoopStatus, PendingTask, PregelLoop, PregelProtocol,
240 StreamEvent as PregelStreamEvent, SuperstepResult, SyncAsyncFuture, TaskOutput, TaskTrigger,
241 TimeoutPolicy, TriggerToNodes, apply_writes, compute_next_tasks, execute_superstep,
242};
243pub use runtime::{
244 ExecutionInfo, Heartbeat, HeartbeatWatcher, ManagedValues, RunControl, Runtime,
245 StreamWriterTrait,
246};
247pub use send::Send;
248pub use state::{
249 AnyValueReducer, AppendReducer, Channel, Content, ContentPart, CowState, DeltaBlob,
250 DeltaChannel, EphemeralChannel, FieldsChanged, FromState, ImageData, ImageSource, IntoState,
251 LastValueAfterFinishChannel, LastWriteWinsReducer, Message, MessagesState, MessagesStateUpdate,
252 Overwrite, REMOVE_ALL_MESSAGES, Reducer, RemoveMessage, ReplaceReducer, Role, State,
253 TokenUsage, ToolCall, UntrackedChannel, messages_reducer,
254};
255pub use store::{
256 EmbeddingFunc, FilterExpr, IndexConfig, Item, MemoryStore, SearchItem, SearchQuery,
257 SearchResult, Store, StoreError, StoreOp, StoreResult, TTLConfig,
258};
259pub use stream::{
260 BatchTransformer, DebugEvent, EventEmitter, FilterFieldsTransformer, JsonParseTransformer,
261 MessageBatchConfig, StreamConfig, StreamEvent, StreamMode, StreamPart, StreamResumption,
262 StreamTransformer, StreamWriter, TaskEventType, ToolsEvent, call_llm_streaming,
263};
264pub use subgraph::{
265 StateSubset, SubgraphConfig, SubgraphMount, SubgraphNode, SubgraphPersistence,
266 SubgraphTransformer,
267};
268pub use tools::{
269 NopToolInterceptor, StatefulTool, Tool, ToolCallTransformer, ToolError, ToolExecutionTrace,
270 ToolInterceptor, ToolNode, ToolNodeConfig, ToolRuntime, tools_condition,
271};
272
273