feat: add present_file tool

This commit is contained in:
Henry Li
2026-01-16 21:48:00 +08:00
parent 91eff99f01
commit 1517e8675d
3 changed files with 34 additions and 1 deletions

View File

@@ -0,0 +1,3 @@
from .present_file_tool import present_file_tool
__all__ = ["present_file_tool"]

View File

@@ -0,0 +1,24 @@
from langchain.tools import tool
@tool("present_files", parse_docstring=True)
def present_file_tool(filepaths: list[str]) -> str:
"""Make files visible to the user for viewing and rendering in the client interface.
When to use the present_files tool:
- Making any file available for the user to view, download, or interact with
- Presenting multiple related files at once
- After creating a file that should be presented to the user
When NOT to use the present_files tool:
- When you only need to read file contents for your own processing
- For temporary or intermediate files not meant for user viewing
Args:
filepaths: List of absolute file paths to present to the user. **Only** files in `/mnt/user-data/outputs` can be presented.
Returns:
"OK" if the files were presented successfully.
"""
return "OK"

View File

@@ -2,9 +2,15 @@ from langchain.tools import BaseTool
from src.config import get_app_config
from src.reflection import resolve_variable
from src.tools.builtins import present_file_tool
BUILTIN_TOOLS = [
present_file_tool,
]
def get_available_tools(groups: list[str] | None = None) -> list[BaseTool]:
"""Get all available tools from config"""
config = get_app_config()
return [resolve_variable(tool.use, BaseTool) for tool in config.tools if groups is None or tool.group in groups]
loaded_tools = [resolve_variable(tool.use, BaseTool) for tool in config.tools if groups is None or tool.group in groups]
return loaded_tools + BUILTIN_TOOLS