pub struct AgentTool { /* private fields */ }tools only.Expand description
AgentTool wraps an Agent to make it callable as a Tool.
When the parent LLM generates a function call targeting this tool, the framework executes the wrapped agent, captures its final response, and returns it as the tool’s result.
Implementations§
Source§impl AgentTool
impl AgentTool
Sourcepub fn new(agent: Arc<dyn Agent>) -> AgentTool
pub fn new(agent: Arc<dyn Agent>) -> AgentTool
Create a new AgentTool wrapping the given agent.
Sourcepub fn with_config(agent: Arc<dyn Agent>, config: AgentToolConfig) -> AgentTool
pub fn with_config(agent: Arc<dyn Agent>, config: AgentToolConfig) -> AgentTool
Create a new AgentTool with custom configuration.
Sourcepub fn skip_summarization(self, skip: bool) -> AgentTool
pub fn skip_summarization(self, skip: bool) -> AgentTool
Set whether to skip summarization.
Sourcepub fn forward_artifacts(self, forward: bool) -> AgentTool
pub fn forward_artifacts(self, forward: bool) -> AgentTool
Set whether to forward artifacts.
Sourcepub fn input_schema(self, schema: Value) -> AgentTool
pub fn input_schema(self, schema: Value) -> AgentTool
Set custom input schema.
Sourcepub fn output_schema(self, schema: Value) -> AgentTool
pub fn output_schema(self, schema: Value) -> AgentTool
Set custom output schema.
Sourcepub fn session_snapshot(self, snapshot: AgentToolSessionSnapshot) -> AgentTool
pub fn session_snapshot(self, snapshot: AgentToolSessionSnapshot) -> AgentTool
Choose which parent session data is snapshotted into the isolated child session.
Sourcepub fn forward_memory(self, forward: bool) -> AgentTool
pub fn forward_memory(self, forward: bool) -> AgentTool
Set whether the wrapped agent can access the parent’s memory service.
Set whether the wrapped agent can access the parent’s parallel shared state.
This defaults to true to preserve the historical AgentTool behavior.
Sourcepub fn forward_events(self, forward: bool) -> AgentTool
pub fn forward_events(self, forward: bool) -> AgentTool
Set whether child events are emitted through the parent tool context.
The default is false for backward compatibility. State and artifact
deltas are merged regardless of this setting.
Sourcepub fn failure_mode(self, mode: AgentToolFailureMode) -> AgentTool
pub fn failure_mode(self, mode: AgentToolFailureMode) -> AgentTool
Choose whether delegated failures are returned as JSON or propagated.
Sourcepub fn propagate_failures(self, propagate: bool) -> AgentTool
pub fn propagate_failures(self, propagate: bool) -> AgentTool
Set whether delegated failures should be propagated as tool errors.
Sourcepub fn max_delegation_depth(self, max_depth: u32) -> AgentTool
pub fn max_delegation_depth(self, max_depth: u32) -> AgentTool
Bound the number of nested agent-as-tool delegations.
Sourcepub fn reject_child_handoffs(self, reject: bool) -> AgentTool
pub fn reject_child_handoffs(self, reject: bool) -> AgentTool
Reject child handoff events that cannot be executed by AgentTool itself.
Sourcepub fn execute_child_handoffs(
self,
agents: impl IntoIterator<Item = Arc<dyn Agent>>,
) -> AgentTool
pub fn execute_child_handoffs( self, agents: impl IntoIterator<Item = Arc<dyn Agent>>, ) -> AgentTool
Executes child handoffs using the supplied exact target registry.
Disabled by default for backward compatibility. When enabled, a child transfer remains inside the nested invocation until the terminal member returns, after which its result is returned to the original caller.
Sourcepub fn history_max_events(self, max_events: usize) -> AgentTool
pub fn history_max_events(self, max_events: usize) -> AgentTool
Limits the parent history copied into a delegated session.
A value of zero copies no history while still allowing a filtered state snapshot when parent-session forwarding is enabled.
Sourcepub fn state_keys(
self,
keys: impl IntoIterator<Item = impl Into<String>>,
) -> AgentTool
pub fn state_keys( self, keys: impl IntoIterator<Item = impl Into<String>>, ) -> AgentTool
Copies only these exact state keys into a delegated session.
Sourcepub fn output_state_keys(
self,
keys: impl IntoIterator<Item = impl Into<String>>,
) -> AgentTool
pub fn output_state_keys( self, keys: impl IntoIterator<Item = impl Into<String>>, ) -> AgentTool
Allows delegated state writes only to these exact keys.
Sourcepub fn state_merge_policy(self, policy: AgentToolStateMergePolicy) -> AgentTool
pub fn state_merge_policy(self, policy: AgentToolStateMergePolicy) -> AgentTool
Selects how child state writes merge with concurrent parent updates.
Sourcepub fn state_merge_exempt_keys(
self,
keys: impl IntoIterator<Item = impl Into<String>>,
) -> AgentTool
pub fn state_merge_exempt_keys( self, keys: impl IntoIterator<Item = impl Into<String>>, ) -> AgentTool
Exempts trusted framework-owned keys from concurrent merge checks.
Output allowlists still apply. This is intended for runtime bookkeeping that is deliberately updated by both the parent and delegated context.
Sourcepub fn artifact_prefixes(
self,
prefixes: impl IntoIterator<Item = impl Into<String>>,
) -> AgentTool
pub fn artifact_prefixes( self, prefixes: impl IntoIterator<Item = impl Into<String>>, ) -> AgentTool
Allows artifact writes only when their names start with one of these prefixes.
Trait Implementations§
Source§impl Tool for AgentTool
impl Tool for AgentTool
Source§fn description(&self) -> &str
fn description(&self) -> &str
Source§fn parameters_schema(&self) -> Option<Value>
fn parameters_schema(&self) -> Option<Value>
Source§fn response_schema(&self) -> Option<Value>
fn response_schema(&self) -> Option<Value>
Source§fn is_long_running(&self) -> bool
fn is_long_running(&self) -> bool
Source§fn execute<'life0, 'async_trait>(
&'life0 self,
ctx: Arc<dyn ToolContext>,
args: Value,
) -> Pin<Box<dyn Future<Output = Result<Value, AdkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
AgentTool: 'async_trait,
fn execute<'life0, 'async_trait>(
&'life0 self,
ctx: Arc<dyn ToolContext>,
args: Value,
) -> Pin<Box<dyn Future<Output = Result<Value, AdkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
AgentTool: 'async_trait,
Source§fn declaration(&self) -> Value
fn declaration(&self) -> Value
Source§fn enhanced_description(&self) -> String
fn enhanced_description(&self) -> String
Source§fn is_builtin(&self) -> bool
fn is_builtin(&self) -> bool
google_search, url_context). Read moreSource§fn required_scopes(&self) -> &[&str]
fn required_scopes(&self) -> &[&str]
Source§fn is_read_only(&self) -> bool
fn is_read_only(&self) -> bool
Source§fn is_concurrency_safe(&self) -> bool
fn is_concurrency_safe(&self) -> bool
Auto Trait Implementations§
impl !RefUnwindSafe for AgentTool
impl !UnwindSafe for AgentTool
impl Freeze for AgentTool
impl Send for AgentTool
impl Sync for AgentTool
impl Unpin for AgentTool
impl UnsafeUnpin for AgentTool
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> ScopeToolExt for Twhere
T: Tool,
impl<T> ScopeToolExt for Twhere
T: Tool,
Source§fn with_scope_guard(
self,
resolver: impl ScopeResolver + 'static,
) -> ScopedTool<Self>
fn with_scope_guard( self, resolver: impl ScopeResolver + 'static, ) -> ScopedTool<Self>
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.