refactor: Refactored the use_mcp_servers field to enabled_mcp_servers to make the purpose of the field more clear
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
use_mcp_servers: github
|
enabled_mcp_servers: github
|
||||||
---
|
---
|
||||||
You are expert GitHub assistant designed to assist users with GitHub related tasks. You can perform various
|
You are expert GitHub assistant designed to assist users with GitHub related tasks. You can perform various
|
||||||
tasks related to GitHub, such as creating issues, searching for issues, and providing information about repositories.
|
tasks related to GitHub, such as creating issues, searching for issues, and providing information about repositories.
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
---
|
---
|
||||||
use_mcp_servers: all
|
enabled_mcp_servers: all
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
use_mcp_servers: slack
|
enabled_mcp_servers: slack
|
||||||
temperature: 0.2
|
temperature: 0.2
|
||||||
---
|
---
|
||||||
You are an expert Slack assistant designed to assist with Slack workspaces via the slack MCP server.
|
You are an expert Slack assistant designed to assist with Slack workspaces via the slack MCP server.
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@ visible_tools: # Which tools are visible to be compiled (and a
|
|||||||
mcp_servers: true # Enables or disables MCP servers (globally).
|
mcp_servers: true # Enables or disables MCP servers (globally).
|
||||||
mapping_mcp_servers: # Alias for an MCP server or set of servers
|
mapping_mcp_servers: # Alias for an MCP server or set of servers
|
||||||
git: github,gitmcp
|
git: github,gitmcp
|
||||||
use_mcp_servers: null # Which MCP servers to use by default (e.g. 'github,slack')
|
enabled_mcp_servers: null # Which MCP servers to enable by default (e.g. 'github,slack')
|
||||||
|
|
||||||
# ---- prelude ----
|
# ---- prelude ----
|
||||||
repl_prelude: null # Set a default role or session for REPL mode (e.g. role:<name>, session:<name>, <session>:<role>)
|
repl_prelude: null # Set a default role or session for REPL mode (e.g. role:<name>, session:<name>, <session>:<role>)
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
---
|
---
|
||||||
# Everything in this section is optional
|
# Everything in this section is optional
|
||||||
name: <role-name> # The name of the role
|
name: <role-name> # The name of the role
|
||||||
model: openai:gpt-4o # The model to use for this role
|
model: openai:gpt-4o # The model to use for this role
|
||||||
temperature: 0.2 # The temperature to use for this role when querying the model
|
temperature: 0.2 # The temperature to use for this role when querying the model
|
||||||
top_p: null # The top_p to use for this role when querying the model
|
top_p: null # The top_p to use for this role when querying the model
|
||||||
enabled_tools: fs_ls,fs_cat # A comma-separated list of tools to enable for this role
|
enabled_tools: fs_ls,fs_cat # A comma-separated list of tools to enable for this role
|
||||||
use_mcp_servers: github,gitmcp # A comma-separated list of MCP servers to enable for this role
|
enabled_mcp_servers: github,gitmcp # A comma-separated list of MCP servers to enable for this role
|
||||||
---
|
---
|
||||||
You are an expert at doing things. This is where I would write the instructions for the role.
|
You are an expert at doing things. This is where I would write the instructions for the role.
|
||||||
|
|||||||
+2
-2
@@ -422,7 +422,7 @@ impl RoleLike for Agent {
|
|||||||
self.config.global_tools.clone().join(",").into()
|
self.config.global_tools.clone().join(",").into()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn use_mcp_servers(&self) -> Option<String> {
|
fn enabled_mcp_servers(&self) -> Option<String> {
|
||||||
self.config.mcp_servers.clone().join(",").into()
|
self.config.mcp_servers.clone().join(",").into()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -455,7 +455,7 @@ impl RoleLike for Agent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_use_mcp_servers(&mut self, value: Option<String>) {
|
fn set_enabled_mcp_servers(&mut self, value: Option<String>) {
|
||||||
match value {
|
match value {
|
||||||
Some(servers) => {
|
Some(servers) => {
|
||||||
let servers = servers
|
let servers = servers
|
||||||
|
|||||||
+25
-24
@@ -135,7 +135,7 @@ pub struct Config {
|
|||||||
|
|
||||||
pub mcp_servers: bool,
|
pub mcp_servers: bool,
|
||||||
pub mapping_mcp_servers: IndexMap<String, String>,
|
pub mapping_mcp_servers: IndexMap<String, String>,
|
||||||
pub use_mcp_servers: Option<String>,
|
pub enabled_mcp_servers: Option<String>,
|
||||||
|
|
||||||
pub repl_prelude: Option<String>,
|
pub repl_prelude: Option<String>,
|
||||||
pub cmd_prelude: Option<String>,
|
pub cmd_prelude: Option<String>,
|
||||||
@@ -221,7 +221,7 @@ impl Default for Config {
|
|||||||
|
|
||||||
mcp_servers: true,
|
mcp_servers: true,
|
||||||
mapping_mcp_servers: Default::default(),
|
mapping_mcp_servers: Default::default(),
|
||||||
use_mcp_servers: None,
|
enabled_mcp_servers: None,
|
||||||
|
|
||||||
repl_prelude: None,
|
repl_prelude: None,
|
||||||
cmd_prelude: None,
|
cmd_prelude: None,
|
||||||
@@ -648,7 +648,7 @@ impl Config {
|
|||||||
self.temperature,
|
self.temperature,
|
||||||
self.top_p,
|
self.top_p,
|
||||||
self.enabled_tools.clone(),
|
self.enabled_tools.clone(),
|
||||||
self.use_mcp_servers.clone(),
|
self.enabled_mcp_servers.clone(),
|
||||||
);
|
);
|
||||||
role
|
role
|
||||||
}
|
}
|
||||||
@@ -696,8 +696,8 @@ impl Config {
|
|||||||
("top_p", format_option_value(&role.top_p())),
|
("top_p", format_option_value(&role.top_p())),
|
||||||
("enabled_tools", format_option_value(&role.enabled_tools())),
|
("enabled_tools", format_option_value(&role.enabled_tools())),
|
||||||
(
|
(
|
||||||
"use_mcp_servers",
|
"enabled_mcp_servers",
|
||||||
format_option_value(&role.use_mcp_servers()),
|
format_option_value(&role.enabled_mcp_servers()),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
"max_output_tokens",
|
"max_output_tokens",
|
||||||
@@ -771,13 +771,13 @@ impl Config {
|
|||||||
let value = parse_value(value)?;
|
let value = parse_value(value)?;
|
||||||
config.write().set_enabled_tools(value);
|
config.write().set_enabled_tools(value);
|
||||||
}
|
}
|
||||||
"use_mcp_servers" => {
|
"enabled_mcp_servers" => {
|
||||||
let value: Option<String> = parse_value(value)?;
|
let value: Option<String> = parse_value(value)?;
|
||||||
if let Some(servers) = value.as_ref() {
|
if let Some(servers) = value.as_ref() {
|
||||||
if let Some(registry) = &config.read().mcp_registry {
|
if let Some(registry) = &config.read().mcp_registry {
|
||||||
if registry.list_configured_servers().is_empty() {
|
if registry.list_configured_servers().is_empty() {
|
||||||
bail!(
|
bail!(
|
||||||
"No MCP servers are configured. Please configure MCP servers first before setting 'use_mcp_servers'."
|
"No MCP servers are configured. Please configure MCP servers first before setting 'enabled_mcp_servers'."
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -788,12 +788,12 @@ impl Config {
|
|||||||
|| s == "all"
|
|| s == "all"
|
||||||
}) {
|
}) {
|
||||||
bail!(
|
bail!(
|
||||||
"Some of the specified MCP servers in 'use_mcp_servers' are configured. Please check your MCP server configuration."
|
"Some of the specified MCP servers in 'enabled_mcp_servers' are configured. Please check your MCP server configuration."
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config.write().set_use_mcp_servers(value.clone());
|
config.write().set_enabled_mcp_servers(value.clone());
|
||||||
if config.read().mcp_servers {
|
if config.read().mcp_servers {
|
||||||
config.write().functions.clear_mcp_meta_functions();
|
config.write().functions.clear_mcp_meta_functions();
|
||||||
let registry = config
|
let registry = config
|
||||||
@@ -854,13 +854,14 @@ impl Config {
|
|||||||
.mcp_registry
|
.mcp_registry
|
||||||
.take()
|
.take()
|
||||||
.expect("MCP registry should be initialized");
|
.expect("MCP registry should be initialized");
|
||||||
let use_mcp_servers = if value {
|
let enabled_mcp_servers = if value {
|
||||||
config.read().use_mcp_servers.clone()
|
config.read().enabled_mcp_servers.clone()
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let new_registry =
|
let new_registry =
|
||||||
McpRegistry::reinit(registry, use_mcp_servers, abort_signal.clone()).await?;
|
McpRegistry::reinit(registry, enabled_mcp_servers, abort_signal.clone())
|
||||||
|
.await?;
|
||||||
if !new_registry.is_empty() && value {
|
if !new_registry.is_empty() && value {
|
||||||
config
|
config
|
||||||
.write()
|
.write()
|
||||||
@@ -977,10 +978,10 @@ impl Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_use_mcp_servers(&mut self, value: Option<String>) {
|
pub fn set_enabled_mcp_servers(&mut self, value: Option<String>) {
|
||||||
match self.role_like_mut() {
|
match self.role_like_mut() {
|
||||||
Some(role_like) => role_like.set_use_mcp_servers(value),
|
Some(role_like) => role_like.set_enabled_mcp_servers(value),
|
||||||
None => self.use_mcp_servers = value,
|
None => self.enabled_mcp_servers = value,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1094,7 +1095,7 @@ impl Config {
|
|||||||
pub async fn use_role(&mut self, name: &str, abort_signal: AbortSignal) -> Result<()> {
|
pub async fn use_role(&mut self, name: &str, abort_signal: AbortSignal) -> Result<()> {
|
||||||
let role = self.retrieve_role(name)?;
|
let role = self.retrieve_role(name)?;
|
||||||
let mcp_servers = if self.mcp_servers {
|
let mcp_servers = if self.mcp_servers {
|
||||||
role.use_mcp_servers()
|
role.enabled_mcp_servers()
|
||||||
} else {
|
} else {
|
||||||
eprintln!(
|
eprintln!(
|
||||||
"{}",
|
"{}",
|
||||||
@@ -1354,7 +1355,7 @@ impl Config {
|
|||||||
let mut new_session = false;
|
let mut new_session = false;
|
||||||
if let Some(session) = session.as_mut() {
|
if let Some(session) = session.as_mut() {
|
||||||
let mcp_servers = if self.mcp_servers {
|
let mcp_servers = if self.mcp_servers {
|
||||||
session.use_mcp_servers()
|
session.enabled_mcp_servers()
|
||||||
} else {
|
} else {
|
||||||
eprintln!(
|
eprintln!(
|
||||||
"{}",
|
"{}",
|
||||||
@@ -2034,7 +2035,7 @@ impl Config {
|
|||||||
fn select_enabled_mcp_servers(&self, role: &Role) -> Vec<FunctionDeclaration> {
|
fn select_enabled_mcp_servers(&self, role: &Role) -> Vec<FunctionDeclaration> {
|
||||||
let mut mcp_functions = vec![];
|
let mut mcp_functions = vec![];
|
||||||
if self.mcp_servers {
|
if self.mcp_servers {
|
||||||
if let Some(use_mcp_servers) = role.use_mcp_servers() {
|
if let Some(enabled_mcp_servers) = role.enabled_mcp_servers() {
|
||||||
let mut server_names: HashSet<String> = Default::default();
|
let mut server_names: HashSet<String> = Default::default();
|
||||||
let mcp_declaration_names: HashSet<String> = self
|
let mcp_declaration_names: HashSet<String> = self
|
||||||
.functions
|
.functions
|
||||||
@@ -2046,10 +2047,10 @@ impl Config {
|
|||||||
})
|
})
|
||||||
.map(|v| v.name.to_string())
|
.map(|v| v.name.to_string())
|
||||||
.collect();
|
.collect();
|
||||||
if use_mcp_servers == "all" {
|
if enabled_mcp_servers == "all" {
|
||||||
server_names.extend(mcp_declaration_names);
|
server_names.extend(mcp_declaration_names);
|
||||||
} else {
|
} else {
|
||||||
for item in use_mcp_servers.split(',') {
|
for item in enabled_mcp_servers.split(',') {
|
||||||
let item = item.trim();
|
let item = item.trim();
|
||||||
let item_invoke_name =
|
let item_invoke_name =
|
||||||
format!("{}_{item}", MCP_INVOKE_META_FUNCTION_NAME_PREFIX);
|
format!("{}_{item}", MCP_INVOKE_META_FUNCTION_NAME_PREFIX);
|
||||||
@@ -2190,7 +2191,7 @@ impl Config {
|
|||||||
"temperature",
|
"temperature",
|
||||||
"top_p",
|
"top_p",
|
||||||
"enabled_tools",
|
"enabled_tools",
|
||||||
"use_mcp_servers",
|
"enabled_mcp_servers",
|
||||||
"save_session",
|
"save_session",
|
||||||
"compress_threshold",
|
"compress_threshold",
|
||||||
"rag_reranker_model",
|
"rag_reranker_model",
|
||||||
@@ -2252,7 +2253,7 @@ impl Config {
|
|||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
"mcp_servers" => complete_bool(self.mcp_servers),
|
"mcp_servers" => complete_bool(self.mcp_servers),
|
||||||
"use_mcp_servers" => {
|
"enabled_mcp_servers" => {
|
||||||
let mut prefix = String::new();
|
let mut prefix = String::new();
|
||||||
let mut ignores = HashSet::new();
|
let mut ignores = HashSet::new();
|
||||||
if let Some((v, _)) = args[1].rsplit_once(',') {
|
if let Some((v, _)) = args[1].rsplit_once(',') {
|
||||||
@@ -2838,7 +2839,7 @@ impl Config {
|
|||||||
let mcp_registry = McpRegistry::init(
|
let mcp_registry = McpRegistry::init(
|
||||||
log_path,
|
log_path,
|
||||||
start_mcp_servers,
|
start_mcp_servers,
|
||||||
self.use_mcp_servers.clone(),
|
self.enabled_mcp_servers.clone(),
|
||||||
abort_signal.clone(),
|
abort_signal.clone(),
|
||||||
self,
|
self,
|
||||||
)
|
)
|
||||||
@@ -2952,7 +2953,7 @@ pub async fn macro_execute(
|
|||||||
config.temperature = role.temperature();
|
config.temperature = role.temperature();
|
||||||
config.top_p = role.top_p();
|
config.top_p = role.top_p();
|
||||||
config.enabled_tools = role.enabled_tools().clone();
|
config.enabled_tools = role.enabled_tools().clone();
|
||||||
config.use_mcp_servers = role.use_mcp_servers().clone();
|
config.enabled_mcp_servers = role.enabled_mcp_servers().clone();
|
||||||
config.macro_flag = true;
|
config.macro_flag = true;
|
||||||
config.model = role.model().clone();
|
config.model = role.model().clone();
|
||||||
config.role = None;
|
config.role = None;
|
||||||
|
|||||||
+22
-16
@@ -29,12 +29,12 @@ pub trait RoleLike {
|
|||||||
fn temperature(&self) -> Option<f64>;
|
fn temperature(&self) -> Option<f64>;
|
||||||
fn top_p(&self) -> Option<f64>;
|
fn top_p(&self) -> Option<f64>;
|
||||||
fn enabled_tools(&self) -> Option<String>;
|
fn enabled_tools(&self) -> Option<String>;
|
||||||
fn use_mcp_servers(&self) -> Option<String>;
|
fn enabled_mcp_servers(&self) -> Option<String>;
|
||||||
fn set_model(&mut self, model: Model);
|
fn set_model(&mut self, model: Model);
|
||||||
fn set_temperature(&mut self, value: Option<f64>);
|
fn set_temperature(&mut self, value: Option<f64>);
|
||||||
fn set_top_p(&mut self, value: Option<f64>);
|
fn set_top_p(&mut self, value: Option<f64>);
|
||||||
fn set_enabled_tools(&mut self, value: Option<String>);
|
fn set_enabled_tools(&mut self, value: Option<String>);
|
||||||
fn set_use_mcp_servers(&mut self, value: Option<String>);
|
fn set_enabled_mcp_servers(&mut self, value: Option<String>);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
|
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
|
||||||
@@ -54,7 +54,7 @@ pub struct Role {
|
|||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
enabled_tools: Option<String>,
|
enabled_tools: Option<String>,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
use_mcp_servers: Option<String>,
|
enabled_mcp_servers: Option<String>,
|
||||||
|
|
||||||
#[serde(skip)]
|
#[serde(skip)]
|
||||||
model: Model,
|
model: Model,
|
||||||
@@ -88,8 +88,8 @@ impl Role {
|
|||||||
"enabled_tools" => {
|
"enabled_tools" => {
|
||||||
role.enabled_tools = value.as_str().map(|v| v.to_string())
|
role.enabled_tools = value.as_str().map(|v| v.to_string())
|
||||||
}
|
}
|
||||||
"use_mcp_servers" => {
|
"enabled_mcp_servers" => {
|
||||||
role.use_mcp_servers = value.as_str().map(|v| v.to_string())
|
role.enabled_mcp_servers = value.as_str().map(|v| v.to_string())
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
@@ -131,8 +131,8 @@ impl Role {
|
|||||||
if let Some(enabled_tools) = self.enabled_tools() {
|
if let Some(enabled_tools) = self.enabled_tools() {
|
||||||
metadata.push(format!("enabled_tools: {enabled_tools}"));
|
metadata.push(format!("enabled_tools: {enabled_tools}"));
|
||||||
}
|
}
|
||||||
if let Some(use_mcp_servers) = self.use_mcp_servers() {
|
if let Some(enabled_mcp_servers) = self.enabled_mcp_servers() {
|
||||||
metadata.push(format!("use_mcp_servers: {use_mcp_servers}"));
|
metadata.push(format!("enabled_mcp_servers: {enabled_mcp_servers}"));
|
||||||
}
|
}
|
||||||
if metadata.is_empty() {
|
if metadata.is_empty() {
|
||||||
format!("{}\n", self.prompt)
|
format!("{}\n", self.prompt)
|
||||||
@@ -171,8 +171,14 @@ impl Role {
|
|||||||
let temperature = role_like.temperature();
|
let temperature = role_like.temperature();
|
||||||
let top_p = role_like.top_p();
|
let top_p = role_like.top_p();
|
||||||
let enabled_tools = role_like.enabled_tools();
|
let enabled_tools = role_like.enabled_tools();
|
||||||
let use_mcp_servers = role_like.use_mcp_servers();
|
let enabled_mcp_servers = role_like.enabled_mcp_servers();
|
||||||
self.batch_set(model, temperature, top_p, enabled_tools, use_mcp_servers);
|
self.batch_set(
|
||||||
|
model,
|
||||||
|
temperature,
|
||||||
|
top_p,
|
||||||
|
enabled_tools,
|
||||||
|
enabled_mcp_servers,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn batch_set(
|
pub fn batch_set(
|
||||||
@@ -181,7 +187,7 @@ impl Role {
|
|||||||
temperature: Option<f64>,
|
temperature: Option<f64>,
|
||||||
top_p: Option<f64>,
|
top_p: Option<f64>,
|
||||||
enabled_tools: Option<String>,
|
enabled_tools: Option<String>,
|
||||||
use_mcp_servers: Option<String>,
|
enabled_mcp_servers: Option<String>,
|
||||||
) {
|
) {
|
||||||
self.set_model(model.clone());
|
self.set_model(model.clone());
|
||||||
if temperature.is_some() {
|
if temperature.is_some() {
|
||||||
@@ -193,8 +199,8 @@ impl Role {
|
|||||||
if enabled_tools.is_some() {
|
if enabled_tools.is_some() {
|
||||||
self.set_enabled_tools(enabled_tools);
|
self.set_enabled_tools(enabled_tools);
|
||||||
}
|
}
|
||||||
if use_mcp_servers.is_some() {
|
if enabled_mcp_servers.is_some() {
|
||||||
self.set_use_mcp_servers(use_mcp_servers);
|
self.set_enabled_mcp_servers(enabled_mcp_servers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -291,8 +297,8 @@ impl RoleLike for Role {
|
|||||||
self.enabled_tools.clone()
|
self.enabled_tools.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn use_mcp_servers(&self) -> Option<String> {
|
fn enabled_mcp_servers(&self) -> Option<String> {
|
||||||
self.use_mcp_servers.clone()
|
self.enabled_mcp_servers.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_model(&mut self, model: Model) {
|
fn set_model(&mut self, model: Model) {
|
||||||
@@ -314,8 +320,8 @@ impl RoleLike for Role {
|
|||||||
self.enabled_tools = value;
|
self.enabled_tools = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_use_mcp_servers(&mut self, value: Option<String>) {
|
fn set_enabled_mcp_servers(&mut self, value: Option<String>) {
|
||||||
self.use_mcp_servers = value;
|
self.enabled_mcp_servers = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+11
-11
@@ -27,7 +27,7 @@ pub struct Session {
|
|||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
enabled_tools: Option<String>,
|
enabled_tools: Option<String>,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
use_mcp_servers: Option<String>,
|
enabled_mcp_servers: Option<String>,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
save_session: Option<bool>,
|
save_session: Option<bool>,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
@@ -159,8 +159,8 @@ impl Session {
|
|||||||
if let Some(enabled_tools) = self.enabled_tools() {
|
if let Some(enabled_tools) = self.enabled_tools() {
|
||||||
data["enabled_tools"] = enabled_tools.into();
|
data["enabled_tools"] = enabled_tools.into();
|
||||||
}
|
}
|
||||||
if let Some(use_mcp_servers) = self.use_mcp_servers() {
|
if let Some(enabled_mcp_servers) = self.enabled_mcp_servers() {
|
||||||
data["use_mcp_servers"] = use_mcp_servers.into();
|
data["enabled_mcp_servers"] = enabled_mcp_servers.into();
|
||||||
}
|
}
|
||||||
if let Some(save_session) = self.save_session() {
|
if let Some(save_session) = self.save_session() {
|
||||||
data["save_session"] = save_session.into();
|
data["save_session"] = save_session.into();
|
||||||
@@ -208,8 +208,8 @@ impl Session {
|
|||||||
items.push(("enabled_tools", enabled_tools));
|
items.push(("enabled_tools", enabled_tools));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(use_mcp_servers) = self.use_mcp_servers() {
|
if let Some(enabled_mcp_servers) = self.enabled_mcp_servers() {
|
||||||
items.push(("use_mcp_servers", use_mcp_servers));
|
items.push(("enabled_mcp_servers", enabled_mcp_servers));
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(save_session) = self.save_session() {
|
if let Some(save_session) = self.save_session() {
|
||||||
@@ -281,7 +281,7 @@ impl Session {
|
|||||||
self.temperature = role.temperature();
|
self.temperature = role.temperature();
|
||||||
self.top_p = role.top_p();
|
self.top_p = role.top_p();
|
||||||
self.enabled_tools = role.enabled_tools();
|
self.enabled_tools = role.enabled_tools();
|
||||||
self.use_mcp_servers = role.use_mcp_servers();
|
self.enabled_mcp_servers = role.enabled_mcp_servers();
|
||||||
self.model = role.model().clone();
|
self.model = role.model().clone();
|
||||||
self.role_name = convert_option_string(role.name());
|
self.role_name = convert_option_string(role.name());
|
||||||
self.role_prompt = role.prompt().to_string();
|
self.role_prompt = role.prompt().to_string();
|
||||||
@@ -591,8 +591,8 @@ impl RoleLike for Session {
|
|||||||
self.enabled_tools.clone()
|
self.enabled_tools.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn use_mcp_servers(&self) -> Option<String> {
|
fn enabled_mcp_servers(&self) -> Option<String> {
|
||||||
self.use_mcp_servers.clone()
|
self.enabled_mcp_servers.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_model(&mut self, model: Model) {
|
fn set_model(&mut self, model: Model) {
|
||||||
@@ -625,9 +625,9 @@ impl RoleLike for Session {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_use_mcp_servers(&mut self, value: Option<String>) {
|
fn set_enabled_mcp_servers(&mut self, value: Option<String>) {
|
||||||
if self.use_mcp_servers != value {
|
if self.enabled_mcp_servers != value {
|
||||||
self.use_mcp_servers = value;
|
self.enabled_mcp_servers = value;
|
||||||
self.dirty = true;
|
self.dirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-6
@@ -57,7 +57,7 @@ impl McpRegistry {
|
|||||||
pub async fn init(
|
pub async fn init(
|
||||||
log_path: Option<PathBuf>,
|
log_path: Option<PathBuf>,
|
||||||
start_mcp_servers: bool,
|
start_mcp_servers: bool,
|
||||||
use_mcp_servers: Option<String>,
|
enabled_mcp_servers: Option<String>,
|
||||||
abort_signal: AbortSignal,
|
abort_signal: AbortSignal,
|
||||||
config: &Config,
|
config: &Config,
|
||||||
) -> Result<Self> {
|
) -> Result<Self> {
|
||||||
@@ -109,7 +109,7 @@ impl McpRegistry {
|
|||||||
|
|
||||||
if start_mcp_servers && config.mcp_servers {
|
if start_mcp_servers && config.mcp_servers {
|
||||||
abortable_run_with_spinner(
|
abortable_run_with_spinner(
|
||||||
registry.start_select_mcp_servers(use_mcp_servers),
|
registry.start_select_mcp_servers(enabled_mcp_servers),
|
||||||
"Loading MCP servers",
|
"Loading MCP servers",
|
||||||
abort_signal,
|
abort_signal,
|
||||||
)
|
)
|
||||||
@@ -121,7 +121,7 @@ impl McpRegistry {
|
|||||||
|
|
||||||
pub async fn reinit(
|
pub async fn reinit(
|
||||||
registry: McpRegistry,
|
registry: McpRegistry,
|
||||||
use_mcp_servers: Option<String>,
|
enabled_mcp_servers: Option<String>,
|
||||||
abort_signal: AbortSignal,
|
abort_signal: AbortSignal,
|
||||||
) -> Result<Self> {
|
) -> Result<Self> {
|
||||||
debug!("Reinitializing MCP registry");
|
debug!("Reinitializing MCP registry");
|
||||||
@@ -134,7 +134,7 @@ impl McpRegistry {
|
|||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
abortable_run_with_spinner(
|
abortable_run_with_spinner(
|
||||||
new_registry.start_select_mcp_servers(use_mcp_servers),
|
new_registry.start_select_mcp_servers(enabled_mcp_servers),
|
||||||
"Loading MCP servers",
|
"Loading MCP servers",
|
||||||
abort_signal,
|
abort_signal,
|
||||||
)
|
)
|
||||||
@@ -143,13 +143,16 @@ impl McpRegistry {
|
|||||||
Ok(new_registry)
|
Ok(new_registry)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn start_select_mcp_servers(&mut self, use_mcp_servers: Option<String>) -> Result<()> {
|
async fn start_select_mcp_servers(
|
||||||
|
&mut self,
|
||||||
|
enabled_mcp_servers: Option<String>,
|
||||||
|
) -> Result<()> {
|
||||||
if self.config.is_none() {
|
if self.config.is_none() {
|
||||||
debug!("MCP config is not present; assuming MCP servers are disabled globally. Skipping MCP initialization");
|
debug!("MCP config is not present; assuming MCP servers are disabled globally. Skipping MCP initialization");
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(servers) = use_mcp_servers {
|
if let Some(servers) = enabled_mcp_servers {
|
||||||
debug!("Starting selected MCP servers: {:?}", servers);
|
debug!("Starting selected MCP servers: {:?}", servers);
|
||||||
let config = self
|
let config = self
|
||||||
.config
|
.config
|
||||||
|
|||||||
+14
-11
@@ -700,13 +700,13 @@ pub async fn run_repl_command(
|
|||||||
.mcp_registry
|
.mcp_registry
|
||||||
.take()
|
.take()
|
||||||
.expect("MCP registry should exist");
|
.expect("MCP registry should exist");
|
||||||
let use_mcp_servers = if config.read().mcp_servers {
|
let enabled_mcp_servers = if config.read().mcp_servers {
|
||||||
config.read().use_mcp_servers.clone()
|
config.read().enabled_mcp_servers.clone()
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let registry =
|
let registry =
|
||||||
McpRegistry::reinit(registry, use_mcp_servers, abort_signal.clone())
|
McpRegistry::reinit(registry, enabled_mcp_servers, abort_signal.clone())
|
||||||
.await?;
|
.await?;
|
||||||
if !registry.is_empty() {
|
if !registry.is_empty() {
|
||||||
config
|
config
|
||||||
@@ -726,14 +726,17 @@ pub async fn run_repl_command(
|
|||||||
.mcp_registry
|
.mcp_registry
|
||||||
.take()
|
.take()
|
||||||
.expect("MCP registry should exist");
|
.expect("MCP registry should exist");
|
||||||
let use_mcp_servers = if config.read().mcp_servers {
|
let enabled_mcp_servers = if config.read().mcp_servers {
|
||||||
config.read().use_mcp_servers.clone()
|
config.read().enabled_mcp_servers.clone()
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let registry =
|
let registry = McpRegistry::reinit(
|
||||||
McpRegistry::reinit(registry, use_mcp_servers, abort_signal.clone())
|
registry,
|
||||||
.await?;
|
enabled_mcp_servers,
|
||||||
|
abort_signal.clone(),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
if !registry.is_empty() {
|
if !registry.is_empty() {
|
||||||
config
|
config
|
||||||
.write()
|
.write()
|
||||||
@@ -757,13 +760,13 @@ pub async fn run_repl_command(
|
|||||||
.mcp_registry
|
.mcp_registry
|
||||||
.take()
|
.take()
|
||||||
.expect("MCP registry should exist");
|
.expect("MCP registry should exist");
|
||||||
let use_mcp_servers = if config.read().mcp_servers {
|
let enabled_mcp_servers = if config.read().mcp_servers {
|
||||||
config.read().use_mcp_servers.clone()
|
config.read().enabled_mcp_servers.clone()
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
let registry =
|
let registry =
|
||||||
McpRegistry::reinit(registry, use_mcp_servers, abort_signal.clone())
|
McpRegistry::reinit(registry, enabled_mcp_servers, abort_signal.clone())
|
||||||
.await?;
|
.await?;
|
||||||
if !registry.is_empty() {
|
if !registry.is_empty() {
|
||||||
config
|
config
|
||||||
|
|||||||
Reference in New Issue
Block a user