mcp_server_collection now also a library
own_assist now bundles the server collection by default
This commit is contained in:
+13
-6
@@ -8,6 +8,7 @@ use rmcp::ServiceError;
|
||||
use rmcp::model::{CallToolRequestParams, CallToolResult};
|
||||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
use ollama_rs::generation::completion::request::GenerationRequest;
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Debug, Copy, Clone, Default, Deserialize, PartialEq)]
|
||||
@@ -113,6 +114,13 @@ impl AgentChat {
|
||||
servers.insert(server.name.clone(), server);
|
||||
}
|
||||
|
||||
// lets the ollama server load the model
|
||||
let ollama_client_clone = ollama_client.clone();
|
||||
let model_clone = model.clone();
|
||||
tokio::spawn(async move {
|
||||
let _ = ollama_client_clone.generate(GenerationRequest::new(model_clone, "")).await;
|
||||
});
|
||||
|
||||
Ok(Self {
|
||||
ollama_client,
|
||||
model,
|
||||
@@ -124,8 +132,7 @@ impl AgentChat {
|
||||
pub fn get_all_tools(&self) -> impl Iterator<Item = &RestrictedTool> {
|
||||
self.mcp_servers
|
||||
.values()
|
||||
.map(|server| server.translated_tools.iter())
|
||||
.flatten()
|
||||
.flat_map(|server| server.translated_tools.iter())
|
||||
}
|
||||
|
||||
///
|
||||
@@ -300,10 +307,10 @@ impl AgentChat {
|
||||
let mcp_server_data = self
|
||||
.get_mcp_server_by_name(mcp_server_name.clone())
|
||||
.ok_or(ChatError::ServiceNotFoundError(mcp_server_name.clone()))?;
|
||||
let restricted_tool =
|
||||
AgentChat::get_tool(&mcp_server_data, full_unparsed_tool_name.clone()).ok_or(
|
||||
ChatError::ToolNotFoundError(full_unparsed_tool_name.clone()),
|
||||
)?;
|
||||
let restricted_tool = AgentChat::get_tool(mcp_server_data, full_unparsed_tool_name.clone())
|
||||
.ok_or(ChatError::ToolNotFoundError(
|
||||
full_unparsed_tool_name.clone(),
|
||||
))?;
|
||||
|
||||
match restricted_tool.permission {
|
||||
ToolPermission::Allowed => {
|
||||
|
||||
Reference in New Issue
Block a user