use super::DraftError;
use lys_pass::drafts::ApprovedDraft;
pub trait AgentProjection: Send + Sync {
fn apply(&self, draft: &ApprovedDraft) -> Result<(), DraftError>;
}
impl AgentProjection for crate::agents::runtime::Agents {
fn apply(&self, draft: &ApprovedDraft) -> Result<(), DraftError> {
if draft.target.action == "create_agent" {
self.created(&draft.target.id)
.map_err(|_| DraftError::Store)?;
}
Ok(())
}
}
impl AgentProjection for crate::server::connection::services::LiminalConnectionServices {
fn apply(&self, draft: &ApprovedDraft) -> Result<(), DraftError> {
self.execute_agent_draft(draft)
.map_err(|_| DraftError::Store)?;
Ok(())
}
}