feat: provide more context about exportable tools

This commit is contained in:
Lucas Gomide
2025-05-19 10:25:07 -03:00
parent f6399208fb
commit 6f73bd80f4
2 changed files with 9 additions and 6 deletions

View File

@@ -385,7 +385,7 @@ def extract_available_exports(dir_path: str = "src"):
raise SystemExit(1) raise SystemExit(1)
def _load_tools_from_init(init_file: Path) -> list: def _load_tools_from_init(init_file: Path) -> list[dict[str, Any]]:
""" """
Load and validate tools from a given __init__.py file. Load and validate tools from a given __init__.py file.
""" """
@@ -407,8 +407,11 @@ def _load_tools_from_init(init_file: Path) -> list:
raise SystemExit(1) raise SystemExit(1)
# TODO: Security check: prevent any inject malicious code, or stuff like that # TODO: Security check: prevent any inject malicious code, or stuff like that
return [ return [
name {
"name": name,
}
for name in module.__all__ for name in module.__all__
if hasattr(module, name) and is_valid_tool(getattr(module, name)) if hasattr(module, name) and is_valid_tool(getattr(module, name))
] ]

View File

@@ -165,7 +165,7 @@ __all__ = ['MyTool']
""", """,
) )
tools = utils.extract_available_exports(dir_path=temp_project_dir) tools = utils.extract_available_exports(dir_path=temp_project_dir)
assert ["MyTool"] == tools assert [{"name": "MyTool"}] == tools
def test_extract_available_exports_valid_tool_decorator(temp_project_dir): def test_extract_available_exports_valid_tool_decorator(temp_project_dir):
@@ -182,7 +182,7 @@ __all__ = ['my_tool_function']
""", """,
) )
tools = utils.extract_available_exports(dir_path=temp_project_dir) tools = utils.extract_available_exports(dir_path=temp_project_dir)
assert ["my_tool_function"] == tools assert [{"name": "my_tool_function"}] == tools
def test_extract_available_exports_multiple_valid_tools(temp_project_dir): def test_extract_available_exports_multiple_valid_tools(temp_project_dir):
@@ -203,7 +203,7 @@ __all__ = ['MyTool', 'my_tool_function']
""", """,
) )
tools = utils.extract_available_exports(dir_path=temp_project_dir) tools = utils.extract_available_exports(dir_path=temp_project_dir)
assert ["MyTool", "my_tool_function"] == tools assert [{"name": "MyTool"}, {"name": "my_tool_function"}] == tools
def test_extract_available_exports_with_invalid_tool_decorator(temp_project_dir): def test_extract_available_exports_with_invalid_tool_decorator(temp_project_dir):
@@ -222,7 +222,7 @@ __all__ = ['MyTool', 'not_a_tool']
""", """,
) )
tools = utils.extract_available_exports(dir_path=temp_project_dir) tools = utils.extract_available_exports(dir_path=temp_project_dir)
assert ["MyTool"] == tools assert [{"name": "MyTool"}] == tools
def test_extract_available_exports_import_error(temp_project_dir, capsys): def test_extract_available_exports_import_error(temp_project_dir, capsys):