refactor: Refactored use_tools field to enabled_tools field to make the use of the field more clear

This commit is contained in:
2025-11-04 12:37:14 -07:00
parent 7b08d1ef96
commit 865ef5827b
8 changed files with 52 additions and 50 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
--- ---
use_tools: all enabled_tools: all
--- ---
+1 -1
View File
@@ -1,6 +1,6 @@
--- ---
name: repo-analyzer name: repo-analyzer
use_tools: fs_cat,fs_ls,fs_write,fs_patch,execute_command enabled_tools: fs_cat,fs_ls,fs_write,fs_patch,execute_command
--- ---
**Context:** The task requires the AI to analyze the {{__cwd__}} repository and provide comprehensive insights into **Context:** The task requires the AI to analyze the {{__cwd__}} repository and provide comprehensive insights into
various aspects such as directory structure, design patterns, coding conventions, libraries, architecture, module various aspects such as directory structure, design patterns, coding conventions, libraries, architecture, module
+2 -2
View File
@@ -16,8 +16,8 @@ vault_password_file: null # Path to a file containing the password for th
function_calling: true # Enables or disables function calling (Globally). function_calling: true # Enables or disables function calling (Globally).
mapping_tools: # Alias for a tool or toolset mapping_tools: # Alias for a tool or toolset
fs: 'fs_cat,fs_ls,fs_mkdir,fs_rm,fs_write' fs: 'fs_cat,fs_ls,fs_mkdir,fs_rm,fs_write'
use_tools: null # Which tools to use by default. (e.g. 'fs,web_search_loki') enabled_tools: null # Which tools to enable by default. (e.g. 'fs,web_search_loki')
visible_tools: # Which tools are visible to be compiled (and are thus able to be defined in 'use_tools') visible_tools: # Which tools are visible to be compiled (and are thus able to be defined in 'enabled_tools')
# - demo_py.py # - demo_py.py
# - demo_sh.sh # - demo_sh.sh
- execute_command.sh - execute_command.sh
+1 -1
View File
@@ -4,7 +4,7 @@ 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
use_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 use_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
View File
@@ -418,7 +418,7 @@ impl RoleLike for Agent {
self.config.top_p self.config.top_p
} }
fn use_tools(&self) -> Option<String> { fn enabled_tools(&self) -> Option<String> {
self.config.global_tools.clone().join(",").into() self.config.global_tools.clone().join(",").into()
} }
@@ -439,7 +439,7 @@ impl RoleLike for Agent {
self.config.top_p = value; self.config.top_p = value;
} }
fn set_use_tools(&mut self, value: Option<String>) { fn set_enabled_tools(&mut self, value: Option<String>) {
match value { match value {
Some(tools) => { Some(tools) => {
let tools = tools let tools = tools
+17 -17
View File
@@ -130,7 +130,7 @@ pub struct Config {
pub function_calling: bool, pub function_calling: bool,
pub mapping_tools: IndexMap<String, String>, pub mapping_tools: IndexMap<String, String>,
pub use_tools: Option<String>, pub enabled_tools: Option<String>,
pub visible_tools: Option<Vec<String>>, pub visible_tools: Option<Vec<String>>,
pub mcp_servers: bool, pub mcp_servers: bool,
@@ -216,7 +216,7 @@ impl Default for Config {
function_calling: true, function_calling: true,
mapping_tools: Default::default(), mapping_tools: Default::default(),
use_tools: None, enabled_tools: None,
visible_tools: None, visible_tools: None,
mcp_servers: true, mcp_servers: true,
@@ -647,7 +647,7 @@ impl Config {
&self.model, &self.model,
self.temperature, self.temperature,
self.top_p, self.top_p,
self.use_tools.clone(), self.enabled_tools.clone(),
self.use_mcp_servers.clone(), self.use_mcp_servers.clone(),
); );
role role
@@ -694,7 +694,7 @@ impl Config {
("model", role.model().id()), ("model", role.model().id()),
("temperature", format_option_value(&role.temperature())), ("temperature", format_option_value(&role.temperature())),
("top_p", format_option_value(&role.top_p())), ("top_p", format_option_value(&role.top_p())),
("use_tools", format_option_value(&role.use_tools())), ("enabled_tools", format_option_value(&role.enabled_tools())),
( (
"use_mcp_servers", "use_mcp_servers",
format_option_value(&role.use_mcp_servers()), format_option_value(&role.use_mcp_servers()),
@@ -767,9 +767,9 @@ impl Config {
let value = parse_value(value)?; let value = parse_value(value)?;
config.write().set_top_p(value); config.write().set_top_p(value);
} }
"use_tools" => { "enabled_tools" => {
let value = parse_value(value)?; let value = parse_value(value)?;
config.write().set_use_tools(value); config.write().set_enabled_tools(value);
} }
"use_mcp_servers" => { "use_mcp_servers" => {
let value: Option<String> = parse_value(value)?; let value: Option<String> = parse_value(value)?;
@@ -970,10 +970,10 @@ impl Config {
} }
} }
pub fn set_use_tools(&mut self, value: Option<String>) { pub fn set_enabled_tools(&mut self, value: Option<String>) {
match self.role_like_mut() { match self.role_like_mut() {
Some(role_like) => role_like.set_use_tools(value), Some(role_like) => role_like.set_enabled_tools(value),
None => self.use_tools = value, None => self.enabled_tools = value,
} }
} }
@@ -1955,7 +1955,7 @@ impl Config {
fn select_enabled_functions(&self, role: &Role) -> Vec<FunctionDeclaration> { fn select_enabled_functions(&self, role: &Role) -> Vec<FunctionDeclaration> {
let mut functions = vec![]; let mut functions = vec![];
if self.function_calling { if self.function_calling {
if let Some(use_tools) = role.use_tools() { if let Some(enabled_tools) = role.enabled_tools() {
let mut tool_names: HashSet<String> = Default::default(); let mut tool_names: HashSet<String> = Default::default();
let declaration_names: HashSet<String> = self let declaration_names: HashSet<String> = self
.functions .functions
@@ -1967,10 +1967,10 @@ impl Config {
}) })
.map(|v| v.name.to_string()) .map(|v| v.name.to_string())
.collect(); .collect();
if use_tools == "all" { if enabled_tools == "all" {
tool_names.extend(declaration_names); tool_names.extend(declaration_names);
} else { } else {
for item in use_tools.split(',') { for item in enabled_tools.split(',') {
let item = item.trim(); let item = item.trim();
if let Some(values) = self.mapping_tools.get(item) { if let Some(values) = self.mapping_tools.get(item) {
tool_names.extend( tool_names.extend(
@@ -2189,7 +2189,7 @@ impl Config {
let mut values = vec![ let mut values = vec![
"temperature", "temperature",
"top_p", "top_p",
"use_tools", "enabled_tools",
"use_mcp_servers", "use_mcp_servers",
"save_session", "save_session",
"compress_threshold", "compress_threshold",
@@ -2232,7 +2232,7 @@ impl Config {
"stream" => complete_bool(self.stream), "stream" => complete_bool(self.stream),
"save" => complete_bool(self.save), "save" => complete_bool(self.save),
"function_calling" => complete_bool(self.function_calling), "function_calling" => complete_bool(self.function_calling),
"use_tools" => { "enabled_tools" => {
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(',') {
@@ -2736,8 +2736,8 @@ impl Config {
self.mapping_tools = v; self.mapping_tools = v;
} }
} }
if let Some(v) = read_env_value::<String>(&get_env_name("use_tools")) { if let Some(v) = read_env_value::<String>(&get_env_name("enabled_tools")) {
self.use_tools = v; self.enabled_tools = v;
} }
if let Some(v) = read_env_value::<String>(&get_env_name("repl_prelude")) { if let Some(v) = read_env_value::<String>(&get_env_name("repl_prelude")) {
@@ -2951,7 +2951,7 @@ pub async fn macro_execute(
let mut config = config.read().clone(); let mut config = config.read().clone();
config.temperature = role.temperature(); config.temperature = role.temperature();
config.top_p = role.top_p(); config.top_p = role.top_p();
config.use_tools = role.use_tools().clone(); config.enabled_tools = role.enabled_tools().clone();
config.use_mcp_servers = role.use_mcp_servers().clone(); config.use_mcp_servers = role.use_mcp_servers().clone();
config.macro_flag = true; config.macro_flag = true;
config.model = role.model().clone(); config.model = role.model().clone();
+17 -15
View File
@@ -28,12 +28,12 @@ pub trait RoleLike {
fn model(&self) -> &Model; fn model(&self) -> &Model;
fn temperature(&self) -> Option<f64>; fn temperature(&self) -> Option<f64>;
fn top_p(&self) -> Option<f64>; fn top_p(&self) -> Option<f64>;
fn use_tools(&self) -> Option<String>; fn enabled_tools(&self) -> Option<String>;
fn use_mcp_servers(&self) -> Option<String>; fn use_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_use_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_use_mcp_servers(&mut self, value: Option<String>);
} }
@@ -52,7 +52,7 @@ pub struct Role {
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
top_p: Option<f64>, top_p: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
use_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>, use_mcp_servers: Option<String>,
@@ -85,7 +85,9 @@ impl Role {
"model" => role.model_id = value.as_str().map(|v| v.to_string()), "model" => role.model_id = value.as_str().map(|v| v.to_string()),
"temperature" => role.temperature = value.as_f64(), "temperature" => role.temperature = value.as_f64(),
"top_p" => role.top_p = value.as_f64(), "top_p" => role.top_p = value.as_f64(),
"use_tools" => role.use_tools = value.as_str().map(|v| v.to_string()), "enabled_tools" => {
role.enabled_tools = value.as_str().map(|v| v.to_string())
}
"use_mcp_servers" => { "use_mcp_servers" => {
role.use_mcp_servers = value.as_str().map(|v| v.to_string()) role.use_mcp_servers = value.as_str().map(|v| v.to_string())
} }
@@ -126,8 +128,8 @@ impl Role {
if let Some(top_p) = self.top_p() { if let Some(top_p) = self.top_p() {
metadata.push(format!("top_p: {top_p}")); metadata.push(format!("top_p: {top_p}"));
} }
if let Some(use_tools) = self.use_tools() { if let Some(enabled_tools) = self.enabled_tools() {
metadata.push(format!("use_tools: {use_tools}")); metadata.push(format!("enabled_tools: {enabled_tools}"));
} }
if let Some(use_mcp_servers) = self.use_mcp_servers() { if let Some(use_mcp_servers) = self.use_mcp_servers() {
metadata.push(format!("use_mcp_servers: {use_mcp_servers}")); metadata.push(format!("use_mcp_servers: {use_mcp_servers}"));
@@ -168,9 +170,9 @@ impl Role {
let model = role_like.model(); let model = role_like.model();
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 use_tools = role_like.use_tools(); let enabled_tools = role_like.enabled_tools();
let use_mcp_servers = role_like.use_mcp_servers(); let use_mcp_servers = role_like.use_mcp_servers();
self.batch_set(model, temperature, top_p, use_tools, use_mcp_servers); self.batch_set(model, temperature, top_p, enabled_tools, use_mcp_servers);
} }
pub fn batch_set( pub fn batch_set(
@@ -178,7 +180,7 @@ impl Role {
model: &Model, model: &Model,
temperature: Option<f64>, temperature: Option<f64>,
top_p: Option<f64>, top_p: Option<f64>,
use_tools: Option<String>, enabled_tools: Option<String>,
use_mcp_servers: Option<String>, use_mcp_servers: Option<String>,
) { ) {
self.set_model(model.clone()); self.set_model(model.clone());
@@ -188,8 +190,8 @@ impl Role {
if top_p.is_some() { if top_p.is_some() {
self.set_top_p(top_p); self.set_top_p(top_p);
} }
if use_tools.is_some() { if enabled_tools.is_some() {
self.set_use_tools(use_tools); self.set_enabled_tools(enabled_tools);
} }
if use_mcp_servers.is_some() { if use_mcp_servers.is_some() {
self.set_use_mcp_servers(use_mcp_servers); self.set_use_mcp_servers(use_mcp_servers);
@@ -285,8 +287,8 @@ impl RoleLike for Role {
self.top_p self.top_p
} }
fn use_tools(&self) -> Option<String> { fn enabled_tools(&self) -> Option<String> {
self.use_tools.clone() self.enabled_tools.clone()
} }
fn use_mcp_servers(&self) -> Option<String> { fn use_mcp_servers(&self) -> Option<String> {
@@ -308,8 +310,8 @@ impl RoleLike for Role {
self.top_p = value; self.top_p = value;
} }
fn set_use_tools(&mut self, value: Option<String>) { fn set_enabled_tools(&mut self, value: Option<String>) {
self.use_tools = value; self.enabled_tools = value;
} }
fn set_use_mcp_servers(&mut self, value: Option<String>) { fn set_use_mcp_servers(&mut self, value: Option<String>) {
+11 -11
View File
@@ -25,7 +25,7 @@ pub struct Session {
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
top_p: Option<f64>, top_p: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
use_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>, use_mcp_servers: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
@@ -156,8 +156,8 @@ impl Session {
if let Some(top_p) = self.top_p() { if let Some(top_p) = self.top_p() {
data["top_p"] = top_p.into(); data["top_p"] = top_p.into();
} }
if let Some(use_tools) = self.use_tools() { if let Some(enabled_tools) = self.enabled_tools() {
data["use_tools"] = use_tools.into(); data["enabled_tools"] = enabled_tools.into();
} }
if let Some(use_mcp_servers) = self.use_mcp_servers() { if let Some(use_mcp_servers) = self.use_mcp_servers() {
data["use_mcp_servers"] = use_mcp_servers.into(); data["use_mcp_servers"] = use_mcp_servers.into();
@@ -204,8 +204,8 @@ impl Session {
items.push(("top_p", top_p.to_string())); items.push(("top_p", top_p.to_string()));
} }
if let Some(use_tools) = self.use_tools() { if let Some(enabled_tools) = self.enabled_tools() {
items.push(("use_tools", use_tools)); items.push(("enabled_tools", enabled_tools));
} }
if let Some(use_mcp_servers) = self.use_mcp_servers() { if let Some(use_mcp_servers) = self.use_mcp_servers() {
@@ -280,7 +280,7 @@ impl Session {
self.model_id = role.model().id(); self.model_id = role.model().id();
self.temperature = role.temperature(); self.temperature = role.temperature();
self.top_p = role.top_p(); self.top_p = role.top_p();
self.use_tools = role.use_tools(); self.enabled_tools = role.enabled_tools();
self.use_mcp_servers = role.use_mcp_servers(); self.use_mcp_servers = role.use_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());
@@ -587,8 +587,8 @@ impl RoleLike for Session {
self.top_p self.top_p
} }
fn use_tools(&self) -> Option<String> { fn enabled_tools(&self) -> Option<String> {
self.use_tools.clone() self.enabled_tools.clone()
} }
fn use_mcp_servers(&self) -> Option<String> { fn use_mcp_servers(&self) -> Option<String> {
@@ -618,9 +618,9 @@ impl RoleLike for Session {
} }
} }
fn set_use_tools(&mut self, value: Option<String>) { fn set_enabled_tools(&mut self, value: Option<String>) {
if self.use_tools != value { if self.enabled_tools != value {
self.use_tools = value; self.enabled_tools = value;
self.dirty = true; self.dirty = true;
} }
} }