pub struct Agent { /* private fields */ }Expand description
A lightweight agent configuration.
Agent holds only behavioural configuration (system prompt, callbacks).
All runtime and session state lives in AgentRuntime, which is injected
at call time.
§Fire-and-forget (one-shot)
let runtime = AgentRuntime::<DeepSeekProvider>::builder()
.api_key(std::env::var("DEEPSEEK_API_KEY")?)
.model("deepseek-v4-flash")
.build()?;
let agent = Agent::builder()
.system_prompt("You are helpful.")
.build();
// fire uses a temporary session — runtime is &, no state mutated
let resp = agent.fire("Hello!", &runtime).await?;§Multi-turn conversation
let runtime = AgentRuntime::<DeepSeekProvider>::builder()
.api_key(std::env::var("DEEPSEEK_API_KEY")?)
.model("deepseek-v4-flash")
.build()?;
let agent = Agent::builder().build();
// send consumes runtime, must unwrap via IntoFuture
let (runtime, _) = agent.send("My name is Alice.", runtime).await?.await?;
let (_runtime, _) = agent.send("What is my name?", runtime).await?.await?;
// → "Alice"Implementations§
Source§impl Agent
impl Agent
Sourcepub fn builder() -> AgentBuilder
pub fn builder() -> AgentBuilder
Create a new AgentBuilder.
Sourcepub fn subscribe_events(&self) -> Receiver<AgentEvent>
pub fn subscribe_events(&self) -> Receiver<AgentEvent>
Subscribe to all AgentEvents from subsequent calls.
The returned receiver gets a clone of every event (tokens, tool calls,
turn boundaries) dispatched during fire/send.
Sourcepub fn subscribe_raw_events(&self) -> Receiver<RawAgentEvent>
pub fn subscribe_raw_events(&self) -> Receiver<RawAgentEvent>
Subscribe to raw underlying events from the core event buses.
The returned receiver yields RawAgentEvent variants that directly
wrap funera_core’s TokenEvent,
ReactEvent, and
EnvStateEvent.
Unlike subscribe_events which returns a
curated/translated AgentEvent, this stream provides the original
events including [TokenEvent::ToolDelta], [ReactEvent::MessageQueued],
and all EnvStateEvent variants.
Sourcepub async fn fire<P: ChatProvider, S>(
&self,
msg: impl Into<String>,
runtime: &AgentRuntime<P, S>,
) -> Result<ChatResponse, OrchestrateError>
pub async fn fire<P: ChatProvider, S>( &self, msg: impl Into<String>, runtime: &AgentRuntime<P, S>, ) -> Result<ChatResponse, OrchestrateError>
One-shot query. Creates a temporary session, runs a single ReAct loop, and discards the session.
Sourcepub async fn fire_stream<P: ChatProvider, S>(
&self,
msg: impl Into<String>,
runtime: &AgentRuntime<P, S>,
) -> Result<FireStreamHandle, OrchestrateError>
pub async fn fire_stream<P: ChatProvider, S>( &self, msg: impl Into<String>, runtime: &AgentRuntime<P, S>, ) -> Result<FireStreamHandle, OrchestrateError>
Streaming variant of fire.
Returns a FireStreamHandle that provides recv() for per-event
streaming and IntoFuture / wait() for the final ChatResponse.
Sourcepub async fn send<P: ChatProvider>(
&self,
msg: impl Into<String>,
runtime: AgentRuntime<P, Idle>,
) -> Result<SendHandle<P>, OrchestrateError>
pub async fn send<P: ChatProvider>( &self, msg: impl Into<String>, runtime: AgentRuntime<P, Idle>, ) -> Result<SendHandle<P>, OrchestrateError>
Multi-turn message. Consumes AgentRuntime<P, Idle> and returns a
SendHandle that yields (AgentRuntime<P, Idle>, ChatResponse) on
completion. The react_loop runs in a background task — you can query
session context via the handle while it is in progress.
Sourcepub async fn send_stream<P: ChatProvider>(
&self,
msg: impl Into<String>,
runtime: AgentRuntime<P, Idle>,
) -> Result<SendStreamHandle<P>, OrchestrateError>
pub async fn send_stream<P: ChatProvider>( &self, msg: impl Into<String>, runtime: AgentRuntime<P, Idle>, ) -> Result<SendStreamHandle<P>, OrchestrateError>
Streaming variant of send.