use crate::{Agent, BoxFuture};
pub struct EvolutionContext {
pub memories: Vec<String>,
pub feedback_summary: String,
pub current_quality_score: f64,
}
pub trait EvolutionRuntime: Send + Sync {
fn feedback<'a>(
&'a self,
agent: &'a str,
rating: u8,
comment: Option<&'a str>,
) -> BoxFuture<'a, anyhow::Result<f64>>;
fn remember<'a>(
&'a self,
agent: &'a str,
insight: &'a str,
tags: &'a [String],
) -> BoxFuture<'a, anyhow::Result<()>>;
fn evolve<'a>(
&'a self,
agent: &'a Agent,
context: &'a EvolutionContext,
) -> BoxFuture<'a, anyhow::Result<String>>;
fn rollback<'a>(
&'a self,
agent: &'a str,
version: u32,
) -> BoxFuture<'a, anyhow::Result<String>>;
}