From be7da983e7ca7d7acc56d7def846a3bd22ae4122 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 3 Apr 2026 10:36:48 +0100 Subject: [PATCH] fix: remove internal tools when creating tools and better Approval gate UX --- application/agents/tools/base.py | 2 ++ application/agents/tools/internal_search.py | 2 ++ application/agents/tools/think.py | 2 ++ application/agents/tools/tool_manager.py | 2 +- .../src/conversation/ConversationBubble.tsx | 21 ++++++++++++++++--- 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/application/agents/tools/base.py b/application/agents/tools/base.py index fd7b4a85..dfe8c85d 100644 --- a/application/agents/tools/base.py +++ b/application/agents/tools/base.py @@ -2,6 +2,8 @@ from abc import ABC, abstractmethod class Tool(ABC): + internal: bool = False + @abstractmethod def execute_action(self, action_name: str, **kwargs): pass diff --git a/application/agents/tools/internal_search.py b/application/agents/tools/internal_search.py index 2cd7915b..78001bf5 100644 --- a/application/agents/tools/internal_search.py +++ b/application/agents/tools/internal_search.py @@ -20,6 +20,8 @@ class InternalSearchTool(Tool): - list_files action: browse the file/folder structure """ + internal = True + def __init__(self, config: Dict): self.config = config self.retrieved_docs: List[Dict] = [] diff --git a/application/agents/tools/think.py b/application/agents/tools/think.py index 7c1fc2b6..24af553e 100644 --- a/application/agents/tools/think.py +++ b/application/agents/tools/think.py @@ -36,6 +36,8 @@ class ThinkTool(Tool): The reasoning content is captured in tool_call data for transparency. """ + internal = True + def __init__(self, config=None): pass diff --git a/application/agents/tools/tool_manager.py b/application/agents/tools/tool_manager.py index 08ef30a4..41970eac 100644 --- a/application/agents/tools/tool_manager.py +++ b/application/agents/tools/tool_manager.py @@ -19,7 +19,7 @@ class ToolManager: continue module = importlib.import_module(f"application.agents.tools.{name}") for member_name, obj in inspect.getmembers(module, inspect.isclass): - if issubclass(obj, Tool) and obj is not Tool: + if issubclass(obj, Tool) and obj is not Tool and not obj.internal: tool_config = self.config.get(name, {}) self.tools[name] = obj(tool_config) diff --git a/frontend/src/conversation/ConversationBubble.tsx b/frontend/src/conversation/ConversationBubble.tsx index 2f070789..41f81a42 100644 --- a/frontend/src/conversation/ConversationBubble.tsx +++ b/frontend/src/conversation/ConversationBubble.tsx @@ -928,13 +928,23 @@ function ToolCallApprovalBar({
)}