pub struct InvocationContext {Show 15 fields
pub app_name: String,
pub user_id: String,
pub invocation_id: String,
pub session: Arc<Mutex<Session>>,
pub session_service: Arc<dyn SessionService>,
pub artifact_service: Option<Arc<dyn ArtifactService>>,
pub memory_service: Option<Arc<dyn MemoryService>>,
pub credential_service: Option<Arc<dyn CredentialService>>,
pub run_config: RunConfig,
pub origin: InvocationOrigin,
pub user_content: Option<Content>,
pub llm_call_count: Arc<Mutex<u32>>,
pub cancellation: CancellationToken,
pub attributes: Arc<Mutex<HashMap<String, Value>>>,
pub root_agent: Option<Arc<dyn BaseAgent>>,
}Expand description
Per-invocation context carried through the agent run.
Fields§
§app_name: StringApp name.
user_id: StringUser id.
invocation_id: StringInvocation id (unique per runner.run call).
session: Arc<Mutex<Session>>The session being mutated. Wrapped in Arc<Mutex> so the runner
and tool callbacks can both mutate state safely.
session_service: Arc<dyn SessionService>Active session service.
artifact_service: Option<Arc<dyn ArtifactService>>Optional artifact service.
memory_service: Option<Arc<dyn MemoryService>>Optional memory service.
credential_service: Option<Arc<dyn CredentialService>>Optional credential service.
run_config: RunConfigPer-invocation config.
origin: InvocationOriginOrigin of the invocation (CLI, web, API).
user_content: Option<Content>User content for this invocation, if any.
llm_call_count: Arc<Mutex<u32>>Counter of LLM calls performed (capped by RunConfig::max_llm_calls).
cancellation: CancellationTokenCooperative cancellation flag. Agents check this at safe points and
short-circuit cleanly when it flips. Flipped by
crate::runner::Runner::cancel or by the A2A tasks/cancel
handler — the same token plumbs through to both surfaces so cancels
initiated from either side reach the in-flight agent.
attributes: Arc<Mutex<HashMap<String, Value>>>Free-form attribute bag for plugins / agent-specific bookkeeping.
root_agent: Option<Arc<dyn BaseAgent>>Root of the agent tree for this invocation (set by the runner). Agent transfer resolves targets from here, so an agent can reach siblings and ancestors, not just its own subtree.
Implementations§
Source§impl InvocationContext
impl InvocationContext
Sourcepub fn check_and_inc_llm_call(&self) -> Result<()>
pub fn check_and_inc_llm_call(&self) -> Result<()>
Increment the LLM call counter. Returns Err if the cap was already
reached.
Sourcepub fn is_cancelled(&self) -> bool
pub fn is_cancelled(&self) -> bool
True if Self::cancellation has been flipped. Agents call this
at safe points (between iterations of the LLM↔tool loop, between
sub-agents) to halt cleanly.
Trait Implementations§
Source§impl Clone for InvocationContext
impl Clone for InvocationContext
Source§fn clone(&self) -> InvocationContext
fn clone(&self) -> InvocationContext
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for InvocationContext
impl !UnwindSafe for InvocationContext
impl Freeze for InvocationContext
impl Send for InvocationContext
impl Sync for InvocationContext
impl Unpin for InvocationContext
impl UnsafeUnpin for InvocationContext
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request