use anyhow::Result;
#[derive(Debug, Clone)]
pub struct OracleResult {
pub doc_id: String,
pub content: String,
pub source: &'static str,
pub score: f32,
pub score_type: &'static str,
pub metadata: OracleMetadata,
}
#[derive(Debug, Clone, Default)]
pub struct OracleMetadata {
pub file_path: Option<String>,
pub timestamp: Option<String>,
pub event_type: Option<String>,
pub matches: Option<Vec<String>>,
}
pub trait Oracle: Send + Sync {
fn name(&self) -> &'static str;
fn query(&self, query: &str, limit: usize) -> Result<Vec<OracleResult>>;
fn is_available(&self) -> bool;
}