use std::sync::Arc;
use async_trait::async_trait;
use crate::tool::ToolFunction;
use crate::toolset::Toolset;
use super::session_manager::McpSessionManager;
pub struct McpToolset {
session_manager: Arc<McpSessionManager>,
filter: Option<Vec<String>>,
}
impl McpToolset {
pub fn new(session_manager: Arc<McpSessionManager>) -> Self {
Self {
session_manager,
filter: None,
}
}
pub fn with_filter(mut self, names: Vec<String>) -> Self {
self.filter = Some(names);
self
}
pub fn filter(&self) -> Option<&[String]> {
self.filter.as_deref()
}
pub fn session_manager(&self) -> &Arc<McpSessionManager> {
&self.session_manager
}
}
#[async_trait]
impl Toolset for McpToolset {
fn get_tools(&self) -> Vec<Arc<dyn ToolFunction>> {
vec![]
}
async fn close(&self) {
}
}