use crate::space::Space;
use anda_core::{AgentOutput, BoxError, CompletionRequest};
use anda_kip::{Request, Response};
#[async_trait::async_trait]
pub trait AssessContext: Send + Sync {
async fn complete(&self, _req: CompletionRequest) -> Result<AgentOutput, BoxError> {
Err("assess context does not support LLM completions".into())
}
async fn judge_complete(&self, req: CompletionRequest) -> Result<AgentOutput, BoxError> {
self.complete(req).await
}
async fn execute_kip_readonly(&self, request: Request) -> Result<Response, BoxError>;
}
#[async_trait::async_trait]
impl AssessContext for Space {
async fn complete(&self, req: CompletionRequest) -> Result<AgentOutput, BoxError> {
self.diagnostic_complete(req).await
}
async fn judge_complete(&self, req: CompletionRequest) -> Result<AgentOutput, BoxError> {
match self.judge_model() {
Some(model) => model.completion(req).await,
None => self.diagnostic_complete(req).await,
}
}
async fn execute_kip_readonly(&self, request: Request) -> Result<Response, BoxError> {
self.execute_kip_readonly(request).await
}
}