|
|
|
|
@ -41,6 +41,10 @@ class ToolNodeData(BaseNodeData, ToolEntity):
|
|
|
|
|
def check_type(cls, value, validation_info: ValidationInfo):
|
|
|
|
|
typ = value
|
|
|
|
|
value = validation_info.data.get("value")
|
|
|
|
|
|
|
|
|
|
if value is None:
|
|
|
|
|
return typ
|
|
|
|
|
|
|
|
|
|
if typ == "mixed" and not isinstance(value, str):
|
|
|
|
|
raise ValueError("value must be a string")
|
|
|
|
|
elif typ == "variable":
|
|
|
|
|
@ -54,3 +58,22 @@ class ToolNodeData(BaseNodeData, ToolEntity):
|
|
|
|
|
return typ
|
|
|
|
|
|
|
|
|
|
tool_parameters: dict[str, ToolInput]
|
|
|
|
|
|
|
|
|
|
@field_validator("tool_parameters", mode="before")
|
|
|
|
|
@classmethod
|
|
|
|
|
def filter_none_tool_inputs(cls, value):
|
|
|
|
|
if not isinstance(value, dict):
|
|
|
|
|
return value
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
key: tool_input
|
|
|
|
|
for key, tool_input in value.items()
|
|
|
|
|
if tool_input is not None and cls._has_valid_value(tool_input)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
|
def _has_valid_value(tool_input):
|
|
|
|
|
"""Check if the value is valid"""
|
|
|
|
|
if isinstance(tool_input, dict):
|
|
|
|
|
return tool_input.get("value") is not None
|
|
|
|
|
return getattr(tool_input, "value", None) is not None
|
|
|
|
|
|