use crate::core::service::ServiceError;
use async_trait::async_trait;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ToolResult {
pub success: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AvailableTool {
pub name: String,
pub description: String,
}
#[async_trait]
pub trait ToolCallingService: Send + Sync {
async fn get_available_tools(&self) -> Result<Vec<AvailableTool>, ServiceError>;
}
pub struct ToolCallingServiceImpl;
impl Default for ToolCallingServiceImpl {
fn default() -> Self {
Self::new()
}
}
impl ToolCallingServiceImpl {
pub fn new() -> Self {
Self
}
}
#[async_trait]
impl ToolCallingService for ToolCallingServiceImpl {
async fn get_available_tools(&self) -> Result<Vec<AvailableTool>, ServiceError> {
Ok(vec![])
}
}