#![allow(missing_docs)]
use mempill_types::{AgentId, ClaimRef, SubjectLineRef};
pub trait EmbeddingPort: Send + Sync + 'static {
type Error: std::error::Error + Send + Sync + 'static;
fn embed(&self, text: &str) -> Result<Vec<f32>, Self::Error>;
fn select_candidates(
&self,
agent_id: &AgentId,
query_vector: &[f32],
k: usize,
) -> Result<Vec<SubjectLineRef>, Self::Error>;
}
pub trait VectorPort: Send + Sync + 'static {
type Error: std::error::Error + Send + Sync + 'static;
fn store_embedding(
&self,
agent_id: &AgentId,
claim_ref: &ClaimRef,
vector: &[f32],
embedding_model_id: &str,
) -> Result<(), Self::Error>;
fn search(
&self,
agent_id: &AgentId,
query_vector: &[f32],
k: usize,
embedding_model_id: &str,
) -> Result<Vec<ClaimRef>, Self::Error>;
}