fix: disable extension (#3000)
This commit is contained in:
@@ -321,6 +321,31 @@ impl Agent {
|
|||||||
) -> (String, Result<Vec<Content>, ToolError>) {
|
) -> (String, Result<Vec<Content>, ToolError>) {
|
||||||
let mut extension_manager = self.extension_manager.lock().await;
|
let mut extension_manager = self.extension_manager.lock().await;
|
||||||
|
|
||||||
|
let selector = self.router_tool_selector.lock().await.clone();
|
||||||
|
if ToolRouterIndexManager::is_tool_router_enabled(&selector) {
|
||||||
|
if let Some(selector) = selector {
|
||||||
|
let selector_action = if action == "disable" { "remove" } else { "add" };
|
||||||
|
let extension_manager = self.extension_manager.lock().await;
|
||||||
|
let selector = Arc::new(selector);
|
||||||
|
if let Err(e) = ToolRouterIndexManager::update_extension_tools(
|
||||||
|
&selector,
|
||||||
|
&extension_manager,
|
||||||
|
&extension_name,
|
||||||
|
selector_action,
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
request_id,
|
||||||
|
Err(ToolError::ExecutionError(format!(
|
||||||
|
"Failed to update vector index: {}",
|
||||||
|
e
|
||||||
|
))),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if action == "disable" {
|
if action == "disable" {
|
||||||
let result = extension_manager
|
let result = extension_manager
|
||||||
.remove_extension(&extension_name)
|
.remove_extension(&extension_name)
|
||||||
@@ -368,34 +393,6 @@ impl Agent {
|
|||||||
})
|
})
|
||||||
.map_err(|e| ToolError::ExecutionError(e.to_string()));
|
.map_err(|e| ToolError::ExecutionError(e.to_string()));
|
||||||
|
|
||||||
// Update vector index if operation was successful and vector routing is enabled
|
|
||||||
if result.is_ok() {
|
|
||||||
let selector = self.router_tool_selector.lock().await.clone();
|
|
||||||
if ToolRouterIndexManager::is_tool_router_enabled(&selector) {
|
|
||||||
if let Some(selector) = selector {
|
|
||||||
let vector_action = if action == "disable" { "remove" } else { "add" };
|
|
||||||
let extension_manager = self.extension_manager.lock().await;
|
|
||||||
let selector = Arc::new(selector);
|
|
||||||
if let Err(e) = ToolRouterIndexManager::update_extension_tools(
|
|
||||||
&selector,
|
|
||||||
&extension_manager,
|
|
||||||
&extension_name,
|
|
||||||
vector_action,
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
{
|
|
||||||
return (
|
|
||||||
request_id,
|
|
||||||
Err(ToolError::ExecutionError(format!(
|
|
||||||
"Failed to update vector index: {}",
|
|
||||||
e
|
|
||||||
))),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
(request_id, result)
|
(request_id, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -521,9 +518,6 @@ impl Agent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn remove_extension(&self, name: &str) -> Result<()> {
|
pub async fn remove_extension(&self, name: &str) -> Result<()> {
|
||||||
let mut extension_manager = self.extension_manager.lock().await;
|
|
||||||
extension_manager.remove_extension(name).await?;
|
|
||||||
|
|
||||||
// If vector tool selection is enabled, remove tools from the index
|
// If vector tool selection is enabled, remove tools from the index
|
||||||
let selector = self.router_tool_selector.lock().await.clone();
|
let selector = self.router_tool_selector.lock().await.clone();
|
||||||
if ToolRouterIndexManager::is_tool_router_enabled(&selector) {
|
if ToolRouterIndexManager::is_tool_router_enabled(&selector) {
|
||||||
@@ -539,6 +533,9 @@ impl Agent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let mut extension_manager = self.extension_manager.lock().await;
|
||||||
|
extension_manager.remove_extension(name).await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user