ClickUp Operator

"""A skill set that combines multiple tool sets.""" from __future__ import annotations import contextlib from typing import TYPE_CHECKING from anthropic.types.beta.tools import ToolParam, ToolUseBlock, ToolUseBlockParam from ..exceptions import ToolNotFoundError from .basic_set import BasicToolSet if TYPE_CHECKING: from .tools import ToolResult from .sets import ToolSet class UnionSkillSet(BasicToolSet): """A skill set that combines multiple tool sets.""" def __init__(self, *sets: ToolSet) -> None: """Initialize the UnionSkillSet. Args: sets: The tool sets to be combined. """ self.sets = list(sets) super().__init__() @property def tools_schema(self) -> list[ToolParam]: """Get the schema of the tools in the skill set. Returns: The list of tool parameters. """ return super().tools_schema + sum( (tool_set.tools_schema for tool_set in self.sets), [] ) def run_tool(self, input_data: ToolUseBlock | ToolUseBlockParam) -> ToolResult: """Run a tool using the skill set. Args: input_data: The input data for the tool. Returns: The result of running the tool. """ for tool_set in self.sets: with contextlib.suppress(ToolNotFoundError): return tool_set.run_tool(input_data) return super().run_tool(input_data) def add_skill(self, skill: ToolSet) -> None: """Add a tool set to the skill set. Args: skill: The tool set to be added. """ self.sets.append(skill)