Files
AutoMetabuilder/backend/autometabuilder/workflow/tool_runner.py
johndoe6345789 877ba64de8 Introduce AutoMetabuilder core components and workflow packages:
- Implement core components: CLI argument parsing, environment loading, GitHub service creation, and logging configuration.
- Add support for OpenAI client setup and model resolution.
- Develop SDLC context loader from GitHub and repository files.
- Implement workflow context and engine builders.
- Introduce major workflow packages: `game_tick_loop` and `contextual_iterative_loop`.
- Update localization files with new package descriptions and labels.
- Streamline web navigation by loading items from a dedicated JSON file.
2026-01-10 00:45:46 +00:00

30 lines
1.0 KiB
Python

"""Run tools with logging and filtering."""
class ToolRunner:
"""Run tool callables with shared logging."""
def __init__(self, tool_map: dict, msgs: dict, logger):
self.tool_map = tool_map
self.msgs = msgs
self.logger = logger
def call(self, tool_name: str, **kwargs):
"""Call a named tool with filtered kwargs."""
tool = self.tool_map.get(tool_name)
if not tool:
msg = self.msgs.get(
"error_tool_not_found",
"Tool {name} not found or unavailable."
).format(name=tool_name)
self.logger.error(msg)
return msg
filtered_kwargs = {k: v for k, v in kwargs.items() if v is not None}
try:
result = tool(**filtered_kwargs)
return result if result is not None else "Success"
except Exception as error: # pylint: disable=broad-exception-caught
error_msg = f"Error executing {tool_name}: {error}"
self.logger.error(error_msg)
return error_msg