pub struct DefaultManagedAgentRuntime { /* private fields */ }Expand description
Default implementation of the managed agent runtime.
Composed from a ModelResolver + a pluggable SessionService +
optional sandbox factory and memory service. Has no platform dependencies —
the platform injects its own implementations of these traits.
§Fields
model_resolver— resolvesModelRefintoArc<dyn Llm>session_service— persistent session storage backendsandbox_factory— optional sandbox for built-in tool executionmemory— optional cross-session memory servicesessions— active session registry
§Example
use std::sync::Arc;
use adk_managed::default_runtime::DefaultManagedAgentRuntime;
use adk_managed::resolver::DefaultModelResolver;
use adk_session::InMemorySessionService;
// Minimal runtime with defaults
let runtime = DefaultManagedAgentRuntime::new(
Arc::new(DefaultModelResolver::new()),
Arc::new(InMemorySessionService::new()),
);
// With sandbox and memory (feature-gated)
let runtime = DefaultManagedAgentRuntime::new(
Arc::new(DefaultModelResolver::new()),
Arc::new(InMemorySessionService::new()),
)
.with_sandbox(my_sandbox)
.with_memory(my_memory_service);Implementations§
Source§impl DefaultManagedAgentRuntime
impl DefaultManagedAgentRuntime
Sourcepub fn new(
model_resolver: Arc<dyn ModelResolver>,
session_service: Arc<dyn SessionService>,
) -> Self
pub fn new( model_resolver: Arc<dyn ModelResolver>, session_service: Arc<dyn SessionService>, ) -> Self
Create a new DefaultManagedAgentRuntime with injected services.
§Arguments
model_resolver- ResolvesModelRefdeclarations into callable LLM instances.session_service- Persistent storage backend for sessions and checkpoints.
Use .with_sandbox() and .with_memory() builder methods to inject
optional sandbox and memory services (feature-gated).
§Example
use std::sync::Arc;
use adk_managed::default_runtime::DefaultManagedAgentRuntime;
use adk_managed::resolver::DefaultModelResolver;
use adk_session::InMemorySessionService;
let runtime = DefaultManagedAgentRuntime::new(
Arc::new(DefaultModelResolver::new()),
Arc::new(InMemorySessionService::new()),
);Sourcepub fn model_resolver(&self) -> &Arc<dyn ModelResolver>
pub fn model_resolver(&self) -> &Arc<dyn ModelResolver>
Get a reference to the model resolver.
Sourcepub fn session_service(&self) -> &Arc<dyn SessionService>
pub fn session_service(&self) -> &Arc<dyn SessionService>
Get a reference to the session service.
Trait Implementations§
Source§impl ManagedAgentRuntime for DefaultManagedAgentRuntime
impl ManagedAgentRuntime for DefaultManagedAgentRuntime
Source§fn create<'life0, 'async_trait>(
&'life0 self,
def: ManagedAgentDef,
) -> Pin<Box<dyn Future<Output = Result<AgentHandle, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create<'life0, 'async_trait>(
&'life0 self,
def: ManagedAgentDef,
) -> Pin<Box<dyn Future<Output = Result<AgentHandle, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Create a managed agent from a declarative definition.
Resolves the ModelRef into an Arc<dyn Llm>, builds a runnable agent,
stores it in the internal registry, and returns an opaque handle.
Source§fn start_session<'life0, 'life1, 'async_trait>(
&'life0 self,
agent: &'life1 AgentHandle,
_env: Option<EnvironmentConfig>,
) -> Pin<Box<dyn Future<Output = Result<SessionHandle, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn start_session<'life0, 'life1, 'async_trait>(
&'life0 self,
agent: &'life1 AgentHandle,
_env: Option<EnvironmentConfig>,
) -> Pin<Box<dyn Future<Output = Result<SessionHandle, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Start a new session for the given agent.
Creates internal communication channels, spawns the session loop as a
background task, and stores the active session handle. Initial status
is Queued.
Source§fn send_event<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
event: UserEvent,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn send_event<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
event: UserEvent,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Send a user event to the session.
Dispatches the event to the session loop’s input channel.
Source§fn stream_events<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
from_seq: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<BoxStream<'static, SessionEvent>, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn stream_events<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
from_seq: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<BoxStream<'static, SessionEvent>, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Subscribe to the session’s event stream.
If from_seq is provided, replays historical events first, then attaches
to the live broadcast.
Source§fn interrupt<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn interrupt<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Interrupt the session at the next safe boundary.
Source§fn pause<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn pause<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Pause the session, checkpointing current state.
Source§fn resume<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn resume<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Resume a paused session.
Source§fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<SessionStatus, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn status<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<SessionStatus, RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Query the current status of a session.
Source§fn archive<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn archive<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Archive a session (terminal state).
Source§fn delete_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 SessionHandle,
) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete a session and its associated data.