pub struct PluginManager { /* private fields */ }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 with_config(plugins: Vec<Plugin>, config: PluginManagerConfig) -> Self
pub fn with_config(plugins: Vec<Plugin>, config: PluginManagerConfig) -> Self
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>>
pub async fn run_on_user_message( &self, ctx: Arc<dyn InvocationContext>, content: Content, ) -> Result<Option<Content>>
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>>
pub async fn run_on_event( &self, ctx: Arc<dyn InvocationContext>, event: Event, ) -> Result<Option<Event>>
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>>
pub async fn run_before_run( &self, ctx: Arc<dyn InvocationContext>, ) -> Result<Option<Content>>
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>>
pub async fn run_before_agent( &self, ctx: Arc<dyn CallbackContext>, ) -> Result<Option<Content>>
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>>
pub async fn run_after_agent( &self, ctx: Arc<dyn CallbackContext>, ) -> Result<Option<Content>>
Run after_agent callbacks from all plugins.
Sourcepub async fn run_before_model(
&self,
ctx: Arc<dyn CallbackContext>,
request: LlmRequest,
) -> Result<BeforeModelResult>
pub async fn run_before_model( &self, ctx: Arc<dyn CallbackContext>, request: LlmRequest, ) -> Result<BeforeModelResult>
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>>
pub async fn run_after_model( &self, ctx: Arc<dyn CallbackContext>, response: LlmResponse, ) -> Result<Option<LlmResponse>>
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>>
pub async fn run_on_model_error( &self, ctx: Arc<dyn CallbackContext>, request: LlmRequest, error: String, ) -> Result<Option<LlmResponse>>
Run on_model_error callbacks from all plugins.
Sourcepub async fn run_before_tool(
&self,
ctx: Arc<dyn CallbackContext>,
) -> Result<Option<Content>>
pub async fn run_before_tool( &self, ctx: Arc<dyn CallbackContext>, ) -> Result<Option<Content>>
Run before_tool callbacks from all plugins.
Sourcepub async fn run_after_tool(
&self,
ctx: Arc<dyn CallbackContext>,
) -> Result<Option<Content>>
pub async fn run_after_tool( &self, ctx: Arc<dyn CallbackContext>, ) -> Result<Option<Content>>
Run after_tool callbacks from all plugins.