use async_trait::async_trait;
use serde_json::Value;
use anyhow::Result;
use crate::services::jug0::ChatOutput;
#[async_trait]
pub trait JuglansRuntime: Send + Sync {
async fn chat(
&self,
agent_config: Value,
messages: Vec<Value>,
tools: Option<Vec<Value>>,
chat_id: Option<&str>
) -> Result<ChatOutput>;
async fn fetch_prompt(&self, slug: &str) -> Result<String>;
async fn search_memories(&self, query: &str, limit: u64) -> Result<Vec<Value>>;
}