use crate::error::ClawDBResult;
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum PluginCapability {
MemoryRead,
MemoryWrite,
EventBus,
Network,
}
#[derive(Debug, Clone)]
pub struct PluginMeta {
pub name: String,
pub version: String,
pub description: String,
pub capabilities: Vec<PluginCapability>,
}
pub trait ClawPlugin: Send + Sync + 'static {
fn meta(&self) -> PluginMeta;
fn on_load(&self) -> ClawDBResult<()> {
Ok(())
}
fn on_unload(&self) -> ClawDBResult<()> {
Ok(())
}
fn on_memory_added(&self, _memory_id: &str, _content: &str) -> ClawDBResult<()> {
Ok(())
}
fn on_search_complete(
&self,
_query: &str,
_results: &mut Vec<serde_json::Value>,
) -> ClawDBResult<()> {
Ok(())
}
}