| from abc import ABC, abstractmethod | from abc import ABC, abstractmethod | ||||
| from copy import deepcopy | |||||
| from enum import Enum | from enum import Enum | ||||
| from typing import Any, Optional, Union | from typing import Any, Optional, Union | ||||
| """ | """ | ||||
| Transform tool parameters type | Transform tool parameters type | ||||
| """ | """ | ||||
| return {p.name: ToolParameterConverter.cast_parameter_by_type(tool_parameters[p.name], p.type) | |||||
| for p in self.parameters if p.name in tool_parameters} | |||||
| # Temp fix for the issue that the tool parameters will be converted to empty while validating the credentials | |||||
| result = deepcopy(tool_parameters) | |||||
| for parameter in self.parameters: | |||||
| if parameter.name in tool_parameters: | |||||
| result[parameter.name] = ToolParameterConverter.cast_parameter_by_type(tool_parameters[parameter.name], parameter.type) | |||||
| return result | |||||
| @abstractmethod | @abstractmethod | ||||
| def _invoke(self, user_id: str, tool_parameters: dict[str, Any]) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]: | def _invoke(self, user_id: str, tool_parameters: dict[str, Any]) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]: |