mirror of
https://github.com/AstrBotDevs/AstrBot
synced 2026-07-15 17:30:13 +08:00
* feat: filesystem grep, read, edit file * feat: add file write tool and enhance file read functionality * feat: enhance tool prompt formatting and add escaped text decoding for file editing * feat: remove redundant safe path tests from security restrictions * feat: implement file read tool with support for text and image files, including validation for large files * feat: add file read utilities and integrate with filesystem tools * refactor: move computer tools to builtin tools registry * refactor: remove unused plugin_context parameter from _apply_sandbox_tools * feat: supports to display enabled builtin tools in configs * feat: add tooltip for disabled builtin tools and update localization strings * feat: add workspace extra prompt handling in message processing * feat: add ripgrep installation to Dockerfile * perf: shell executed in workspace dir in local env * feat: enhance file reading capabilities to support PDF and DOCX parsing, including workspace storage for long documents * feat: update converted text notice to suggest using grep for large files * feat: implement handling for large tool results with overflow file writing and read tool integration * fix: test * feat: enhance onboarding steps to include computer access configuration and related help information * feat: add support for additional temporary path in restricted environment checks * feat: update computer access hints and add detailed configuration instructions
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
from astrbot.core import sp
|
|
from astrbot.core.provider.func_tool_manager import FunctionToolManager
|
|
from astrbot.core.tools.computer_tools.shell import ExecuteShellTool
|
|
from astrbot.core.tools.message_tools import SendMessageToUserTool
|
|
|
|
|
|
def test_get_builtin_tool_by_class_returns_cached_instance():
|
|
manager = FunctionToolManager()
|
|
|
|
tool_by_class = manager.get_builtin_tool(SendMessageToUserTool)
|
|
tool_by_name = manager.get_builtin_tool("send_message_to_user")
|
|
|
|
assert tool_by_class is tool_by_name
|
|
assert manager.get_func("send_message_to_user") is tool_by_class
|
|
assert tool_by_class.name == "send_message_to_user"
|
|
|
|
|
|
def test_builtin_tool_ignores_inactivated_llm_tools():
|
|
manager = FunctionToolManager()
|
|
sp.put(
|
|
"inactivated_llm_tools",
|
|
["send_message_to_user"],
|
|
scope="global",
|
|
scope_id="global",
|
|
)
|
|
|
|
try:
|
|
tool = manager.get_builtin_tool(SendMessageToUserTool)
|
|
assert tool.active is True
|
|
finally:
|
|
sp.put("inactivated_llm_tools", [], scope="global", scope_id="global")
|
|
|
|
|
|
def test_computer_tools_are_registered_as_builtin_tools():
|
|
manager = FunctionToolManager()
|
|
|
|
tool = manager.get_builtin_tool(ExecuteShellTool)
|
|
|
|
assert tool.name == "astrbot_execute_shell"
|
|
assert manager.is_builtin_tool("astrbot_execute_shell") is True
|