Rewrite extension management tools (#5057)

Signed-off-by: Angela Ning <aning@squareup.com>
This commit is contained in:
Angela Ning
2025-10-17 14:22:58 -04:00
committed by GitHub
parent db8fe34ff9
commit bccfa0156c
19 changed files with 926 additions and 354 deletions
@@ -1,4 +1,4 @@
use crate::agents::platform_tools::PLATFORM_MANAGE_EXTENSIONS_TOOL_NAME;
use crate::agents::extension_manager_extension::MANAGE_EXTENSIONS_TOOL_NAME_COMPLETE;
use crate::config::permission::PermissionLevel;
use crate::config::PermissionManager;
use crate::conversation::message::{Message, ToolRequest};
@@ -164,7 +164,7 @@ impl ToolInspector for PermissionInspector {
InspectionAction::Allow
}
// 4. Special case for extension management
else if tool_name == PLATFORM_MANAGE_EXTENSIONS_TOOL_NAME {
else if tool_name == MANAGE_EXTENSIONS_TOOL_NAME_COMPLETE {
InspectionAction::RequireApproval(Some(
"Extension management requires approval for security".to_string(),
))
@@ -189,7 +189,7 @@ impl ToolInspector for PermissionInspector {
}
InspectionAction::Deny => "User permission denies this tool".to_string(),
InspectionAction::RequireApproval(_) => {
if tool_name == PLATFORM_MANAGE_EXTENSIONS_TOOL_NAME {
if tool_name == MANAGE_EXTENSIONS_TOOL_NAME_COMPLETE {
"Extension management requires user approval".to_string()
} else {
"Tool requires user approval".to_string()
@@ -1,4 +1,4 @@
use crate::agents::platform_tools::PLATFORM_MANAGE_EXTENSIONS_TOOL_NAME;
use crate::agents::extension_manager_extension::MANAGE_EXTENSIONS_TOOL_NAME_COMPLETE;
use crate::config::permission::PermissionLevel;
use crate::config::PermissionManager;
use crate::conversation::message::{Message, MessageContent, ToolRequest};
@@ -188,7 +188,7 @@ pub async fn check_tool_permissions(
} else if mode == "auto" {
approved.push(request.clone());
} else {
if tool_call.name == PLATFORM_MANAGE_EXTENSIONS_TOOL_NAME {
if tool_call.name == MANAGE_EXTENSIONS_TOOL_NAME_COMPLETE {
extension_request_ids.push(request.id.clone());
}
@@ -442,7 +442,7 @@ mod tests {
let enable_extension = ToolRequest {
id: "tool_3".to_string(),
tool_call: Ok(CallToolRequestParam {
name: PLATFORM_MANAGE_EXTENSIONS_TOOL_NAME.into(),
name: MANAGE_EXTENSIONS_TOOL_NAME_COMPLETE.into(),
arguments: Some(object!({"action": "enable", "extension_name": "data_fetcher"})),
}),
};