pub struct PluginManager { /* private fields */ }plugin only.Expand description
Manages a collection of plugins and coordinates callback execution.
The PluginManager runs callbacks from all registered plugins in order. For callbacks that can modify data (like on_user_message), the first plugin to return a modification wins.
§Example
use adk_plugin::{Plugin, PluginManager, PluginConfig};
let plugins = vec![
Plugin::new(PluginConfig {
name: "logging".to_string(),
on_event: Some(log_events()),
..Default::default()
}),
Plugin::new(PluginConfig {
name: "metrics".to_string(),
before_run: Some(start_timer()),
after_run: Some(stop_timer()),
..Default::default()
}),
];
let manager = PluginManager::new(plugins);Implementations§
Source§impl PluginManager
impl PluginManager
Sourcepub fn new(plugins: Vec<Plugin>) -> PluginManager
pub fn new(plugins: Vec<Plugin>) -> PluginManager
Create a new plugin manager with the given plugins.
Sourcepub fn with_config(
plugins: Vec<Plugin>,
config: PluginManagerConfig,
) -> PluginManager
pub fn with_config( plugins: Vec<Plugin>, config: PluginManagerConfig, ) -> PluginManager
Create a new plugin manager with custom configuration.
Sourcepub fn plugin_count(&self) -> usize
pub fn plugin_count(&self) -> usize
Get the number of registered plugins.
Sourcepub fn plugin_names(&self) -> Vec<&str>
pub fn plugin_names(&self) -> Vec<&str>
Get plugin names.
Sourcepub async fn run_on_user_message(
&self,
ctx: Arc<dyn InvocationContext>,
content: Content,
) -> Result<Option<Content>, AdkError>
pub async fn run_on_user_message( &self, ctx: Arc<dyn InvocationContext>, content: Content, ) -> Result<Option<Content>, AdkError>
Run on_user_message callbacks from all plugins.
Returns the modified content if any plugin modified it.
Sourcepub async fn run_on_event(
&self,
ctx: Arc<dyn InvocationContext>,
event: Event,
) -> Result<Option<Event>, AdkError>
pub async fn run_on_event( &self, ctx: Arc<dyn InvocationContext>, event: Event, ) -> Result<Option<Event>, AdkError>
Run on_event callbacks from all plugins.
Returns the modified event if any plugin modified it.
Sourcepub async fn run_before_run(
&self,
ctx: Arc<dyn InvocationContext>,
) -> Result<Option<Content>, AdkError>
pub async fn run_before_run( &self, ctx: Arc<dyn InvocationContext>, ) -> Result<Option<Content>, AdkError>
Run before_run callbacks from all plugins.
If any plugin returns content, the run should be skipped.
Sourcepub async fn run_after_run(&self, ctx: Arc<dyn InvocationContext>)
pub async fn run_after_run(&self, ctx: Arc<dyn InvocationContext>)
Run after_run callbacks from all plugins.
This does NOT emit events - it’s for cleanup/metrics only.
Sourcepub async fn run_before_agent(
&self,
ctx: Arc<dyn CallbackContext>,
) -> Result<Option<Content>, AdkError>
pub async fn run_before_agent( &self, ctx: Arc<dyn CallbackContext>, ) -> Result<Option<Content>, AdkError>
Run before_agent callbacks from all plugins.
If any plugin returns content, the agent run should be skipped.
Sourcepub async fn run_after_agent(
&self,
ctx: Arc<dyn CallbackContext>,
) -> Result<Option<Content>, AdkError>
pub async fn run_after_agent( &self, ctx: Arc<dyn CallbackContext>, ) -> Result<Option<Content>, AdkError>
Run after_agent callbacks from all plugins.
Sourcepub async fn run_before_model(
&self,
ctx: Arc<dyn CallbackContext>,
request: LlmRequest,
) -> Result<BeforeModelResult, AdkError>
pub async fn run_before_model( &self, ctx: Arc<dyn CallbackContext>, request: LlmRequest, ) -> Result<BeforeModelResult, AdkError>
Run before_model callbacks from all plugins.
Callbacks can modify the request or skip the model call.
Sourcepub async fn run_after_model(
&self,
ctx: Arc<dyn CallbackContext>,
response: LlmResponse,
) -> Result<Option<LlmResponse>, AdkError>
pub async fn run_after_model( &self, ctx: Arc<dyn CallbackContext>, response: LlmResponse, ) -> Result<Option<LlmResponse>, AdkError>
Run after_model callbacks from all plugins.
Sourcepub async fn run_on_model_error(
&self,
ctx: Arc<dyn CallbackContext>,
request: LlmRequest,
error: String,
) -> Result<Option<LlmResponse>, AdkError>
pub async fn run_on_model_error( &self, ctx: Arc<dyn CallbackContext>, request: LlmRequest, error: String, ) -> Result<Option<LlmResponse>, AdkError>
Run on_model_error callbacks from all plugins.
Sourcepub async fn run_before_tool(
&self,
ctx: Arc<dyn CallbackContext>,
) -> Result<Option<Content>, AdkError>
pub async fn run_before_tool( &self, ctx: Arc<dyn CallbackContext>, ) -> Result<Option<Content>, AdkError>
Run before_tool callbacks from all plugins.
Sourcepub async fn run_after_tool(
&self,
ctx: Arc<dyn CallbackContext>,
) -> Result<Option<Content>, AdkError>
pub async fn run_after_tool( &self, ctx: Arc<dyn CallbackContext>, ) -> Result<Option<Content>, AdkError>
Run after_tool callbacks from all plugins.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for PluginManager
impl !RefUnwindSafe for PluginManager
impl Send for PluginManager
impl Sync for PluginManager
impl Unpin for PluginManager
impl UnsafeUnpin for PluginManager
impl !UnwindSafe for PluginManager
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> 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