pub struct Runner { /* private fields */ }runner only.Expand description
Agent execution runtime.
Orchestrates session retrieval, agent dispatch, event streaming, context
caching, and compaction. Construct via Runner::builder() or
Runner::new().
Implementations§
Source§impl Runner
impl Runner
Sourcepub fn builder() -> RunnerConfigBuilder<NoAppName, NoAgent, NoSessionService>
pub fn builder() -> RunnerConfigBuilder<NoAppName, NoAgent, NoSessionService>
Create a typestate builder for constructing a Runner.
The builder enforces at compile time that the three required fields
(app_name, agent, session_service) are set before build() is
callable.
§Example
let runner = Runner::builder()
.app_name("my-app")
.agent(agent)
.session_service(session_service)
.build()?;Sourcepub fn new(config: RunnerConfig) -> Result<Runner, AdkError>
pub fn new(config: RunnerConfig) -> Result<Runner, AdkError>
Create a new runner from a RunnerConfig.
Prefer Runner::builder() for a compile-time-safe construction API.
Sourcepub fn with_skill_injector(self, injector: SkillInjector) -> Runner
Available on crate feature skills only.
pub fn with_skill_injector(self, injector: SkillInjector) -> Runner
skills only.Enable skill injection using a pre-built injector.
Skill injection runs before plugin on_user_message callbacks.
Sourcepub fn with_auto_skills(
self,
root: impl AsRef<Path>,
config: SkillInjectorConfig,
) -> Result<Runner, SkillError>
👎Deprecated: Use with_auto_skills_mut instead
Available on crate feature skills only.
pub fn with_auto_skills( self, root: impl AsRef<Path>, config: SkillInjectorConfig, ) -> Result<Runner, SkillError>
Use with_auto_skills_mut instead
skills only.Enable skill injection by auto-loading .skills/ from the given root path.
Sourcepub fn with_auto_skills_mut(
&mut self,
root: impl AsRef<Path>,
config: SkillInjectorConfig,
) -> Result<(), SkillError>
Available on crate feature skills only.
pub fn with_auto_skills_mut( &mut self, root: impl AsRef<Path>, config: SkillInjectorConfig, ) -> Result<(), SkillError>
skills only.Enable skill injection by auto-loading .skills/ from the given root path.
Unlike with_auto_skills, this method borrows
the Runner mutably instead of consuming it. On error, the Runner remains
valid with no skill injector configured.
Sourcepub async fn run(
&self,
user_id: UserId,
session_id: SessionId,
user_content: Content,
) -> Result<Pin<Box<dyn Stream<Item = Result<Event, AdkError>> + Send>>, AdkError>
pub async fn run( &self, user_id: UserId, session_id: SessionId, user_content: Content, ) -> Result<Pin<Box<dyn Stream<Item = Result<Event, AdkError>> + Send>>, AdkError>
Execute the root agent for the given user and session, returning an event stream.
Retrieves the existing session, resolves the target agent, runs plugins and skills, and streams events as the agent executes.
Sourcepub fn session_service(&self) -> &Arc<dyn SessionService> ⓘ
pub fn session_service(&self) -> &Arc<dyn SessionService> ⓘ
Returns the runner’s session service.
Sourcepub fn run_config(&self) -> &RunConfig
pub fn run_config(&self) -> &RunConfig
Returns the runner’s configured RunConfig.
Useful as a base to clone and adjust for Self::run_with_config.
Sourcepub async fn run_with_config(
&self,
user_id: UserId,
session_id: SessionId,
user_content: Content,
run_config: Option<RunConfig>,
) -> Result<Pin<Box<dyn Stream<Item = Result<Event, AdkError>> + Send>>, AdkError>
pub async fn run_with_config( &self, user_id: UserId, session_id: SessionId, user_content: Content, run_config: Option<RunConfig>, ) -> Result<Pin<Box<dyn Stream<Item = Result<Event, AdkError>> + Send>>, AdkError>
Runs the agent with a per-invocation RunConfig override.
Passing None uses the runner’s configured RunConfig. Supply one to vary a single
invocation — injecting runtime_toolsets for tools that only exist for the duration of
that run, for example, as SandboxRunner does with tools bound to a live sandbox session.
§Errors
Returns an error if invocation setup fails before the stream is created. Session lookup and agent execution failures are yielded by the returned stream.
Sourcepub async fn run_str(
&self,
user_id: &str,
session_id: &str,
user_content: Content,
) -> Result<Pin<Box<dyn Stream<Item = Result<Event, AdkError>> + Send>>, AdkError>
pub async fn run_str( &self, user_id: &str, session_id: &str, user_content: Content, ) -> Result<Pin<Box<dyn Stream<Item = Result<Event, AdkError>> + Send>>, AdkError>
Sourcepub fn interrupt(&self, session_id: &str) -> bool
pub fn interrupt(&self, session_id: &str) -> bool
Interrupt a running agent for the given session.
Cancels the agent’s current execution within the event loop. Events
already produced and appended to the session are preserved — only
future events are stopped. The caller can then issue a new run()
call with a different instruction to redirect the agent.
Returns true if a running session was found and interrupted,
false if no active run exists for that session ID.
§Example
// Start a run in the background
let mut stream = runner.run(user_id, session_id, content).await?;
tokio::spawn(async move { while stream.next().await.is_some() {} });
// Later, interrupt it
let was_running = runner.interrupt("session-1");
assert!(was_running);
// Redirect with a new instruction
let mut stream = runner.run(user_id, session_id, new_content).await?;Sourcepub fn interrupt_identity(
&self,
app_name: &str,
user_id: &str,
session_id: &str,
) -> bool
pub fn interrupt_identity( &self, app_name: &str, user_id: &str, session_id: &str, ) -> bool
Interrupts runs for one exact identity.
A session ID is only unique within an app and user, so this is the precise
form of Runner::interrupt for a Runner shared across tenants.
Returns true when at least one run was cancelled.
§Example
let cancelled = runner.interrupt_identity("my-app", "user-1", "session-1");Sourcepub fn active_runs(&self) -> Vec<AdkIdentity>
pub fn active_runs(&self) -> Vec<AdkIdentity>
Returns the identity of every run currently in flight.
One identity appears once per in-flight run, so a repeated entry means that identity has concurrent runs.
Sourcepub fn active_session_ids(&self) -> Vec<String>
pub fn active_session_ids(&self) -> Vec<String>
Returns the session IDs of all currently running agent executions.
Session IDs are deduplicated. Use Runner::active_runs when the app and
user dimensions matter.
Sourcepub fn find_agent_to_run(
root_agent: &Arc<dyn Agent>,
session: &dyn Session,
) -> Arc<dyn Agent> ⓘ
pub fn find_agent_to_run( root_agent: &Arc<dyn Agent>, session: &dyn Session, ) -> Arc<dyn Agent> ⓘ
Find which agent should handle the request based on session history
Sourcepub fn find_agent(
current: &Arc<dyn Agent>,
target_name: &str,
) -> Option<Arc<dyn Agent>>
pub fn find_agent( current: &Arc<dyn Agent>, target_name: &str, ) -> Option<Arc<dyn Agent>>
Recursively search agent tree for agent with given name
Sourcepub fn compute_transfer_context(
root: &Arc<dyn Agent>,
target_name: &str,
) -> (Option<String>, Vec<String>)
pub fn compute_transfer_context( root: &Arc<dyn Agent>, target_name: &str, ) -> (Option<String>, Vec<String>)
Compute the parent name and peer names for a given agent in the tree.
Returns (parent_name, peer_names).
Walks the agent tree to find the parent of target_name, then collects
the parent’s name and the sibling agent names (excluding the target itself).
Auto Trait Implementations§
impl !RefUnwindSafe for Runner
impl !UnwindSafe for Runner
impl Freeze for Runner
impl Send for Runner
impl Sync for Runner
impl Unpin for Runner
impl UnsafeUnpin for Runner
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> MaybeSend for Twhere
T: Send,
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.