use async_trait::async_trait;
use nexo_driver_claude::ClaudeError;
use nexo_driver_permission::PermissionRequest;
use nexo_driver_types::{Decision, GoalId};
#[async_trait]
pub trait DecisionMemory: Send + Sync + 'static {
async fn recall(&self, req: &PermissionRequest, k: usize) -> Vec<Decision>;
async fn record(&self, _decision: &Decision) -> Result<(), ClaudeError> {
Ok(())
}
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub enum Namespace {
PerGoal(GoalId),
Global,
}