Expand description
Plugin system for extending LLM-Memory-Graph functionality
This module provides a flexible plugin architecture that allows users to extend the core functionality of LLM-Memory-Graph with custom behavior. Plugins can hook into various operations to provide:
- Validation: Content validation and rule enforcement
- Enrichment: Automatic metadata enhancement
- Transformation: Data transformation and normalization
- Auditing: Custom audit logging and compliance tracking
- Integration: External system integration
§Architecture
The plugin system is designed around these core concepts:
- Plugin Trait: The main interface all plugins must implement
- Plugin Context: Provides plugins with access to operation data
- Hook Points: Specific points in the execution flow where plugins are called
- Plugin Manager: Manages plugin lifecycle and execution
§Example
use llm_memory_graph::plugin::{Plugin, PluginBuilder, PluginContext, PluginError, PluginMetadata};
use async_trait::async_trait;
struct MyValidationPlugin {
metadata: PluginMetadata,
}
impl MyValidationPlugin {
pub fn new() -> Self {
let metadata = PluginBuilder::new("my_validator", "1.0.0")
.author("Your Name")
.description("Custom validation plugin")
.capability("validation")
.build();
Self { metadata }
}
}
#[async_trait]
impl Plugin for MyValidationPlugin {
fn metadata(&self) -> &PluginMetadata {
&self.metadata
}
async fn before_create_node(&self, context: &PluginContext) -> Result<(), PluginError> {
// Custom validation logic
Ok(())
}
}Re-exports§
pub use hooks::HookExecutor;pub use hooks::HookPoint;pub use hooks::HookRegistry;pub use manager::PluginManager;pub use registry::PluginDiscovery;pub use registry::PluginRegistry;
Modules§
- hooks
- Hook execution framework
- manager
- Plugin lifecycle management
- registry
- Plugin registry and discovery system
Structs§
- Plugin
Builder - Plugin builder for configuration
- Plugin
Context - Plugin context for hooks
- Plugin
Metadata - Plugin metadata
Enums§
- Plugin
Error - Plugin error type
Traits§
- Plugin
- Plugin trait - all plugins must implement this