|
@@ -1,6 +1,4 @@
|
|
|
-from typing import cast
|
|
|
|
|
|
-from core.app.app_config.entities import VariableEntity
|
|
|
from core.workflow.entities.base_node_data_entities import BaseNodeData
|
|
|
from core.workflow.entities.node_entities import NodeRunResult, NodeType, SystemVariable
|
|
|
from core.workflow.entities.variable_pool import VariablePool
|
|
@@ -19,12 +17,8 @@ class StartNode(BaseNode):
|
|
|
:param variable_pool: variable pool
|
|
|
:return:
|
|
|
"""
|
|
|
- node_data = self.node_data
|
|
|
- node_data = cast(self._node_data_cls, node_data)
|
|
|
- variables = node_data.variables
|
|
|
-
|
|
|
# Get cleaned inputs
|
|
|
- cleaned_inputs = self._get_cleaned_inputs(variables, variable_pool.user_inputs)
|
|
|
+ cleaned_inputs = variable_pool.user_inputs
|
|
|
|
|
|
for var in variable_pool.system_variables:
|
|
|
if var == SystemVariable.CONVERSATION:
|
|
@@ -38,42 +32,6 @@ class StartNode(BaseNode):
|
|
|
outputs=cleaned_inputs
|
|
|
)
|
|
|
|
|
|
- def _get_cleaned_inputs(self, variables: list[VariableEntity], user_inputs: dict):
|
|
|
- if user_inputs is None:
|
|
|
- user_inputs = {}
|
|
|
-
|
|
|
- filtered_inputs = {}
|
|
|
-
|
|
|
- for variable_config in variables:
|
|
|
- variable = variable_config.variable
|
|
|
-
|
|
|
- if variable not in user_inputs or not user_inputs[variable]:
|
|
|
- if variable_config.required:
|
|
|
- raise ValueError(f"Input form variable {variable} is required")
|
|
|
- else:
|
|
|
- filtered_inputs[variable] = variable_config.default if variable_config.default is not None else ""
|
|
|
- continue
|
|
|
-
|
|
|
- value = user_inputs[variable]
|
|
|
-
|
|
|
- if value:
|
|
|
- if not isinstance(value, str):
|
|
|
- raise ValueError(f"{variable} in input form must be a string")
|
|
|
-
|
|
|
- if variable_config.type == VariableEntity.Type.SELECT:
|
|
|
- options = variable_config.options if variable_config.options is not None else []
|
|
|
- if value not in options:
|
|
|
- raise ValueError(f"{variable} in input form must be one of the following: {options}")
|
|
|
- else:
|
|
|
- if variable_config.max_length is not None:
|
|
|
- max_length = variable_config.max_length
|
|
|
- if len(value) > max_length:
|
|
|
- raise ValueError(f'{variable} in input form must be less than {max_length} characters')
|
|
|
-
|
|
|
- filtered_inputs[variable] = value.replace('\x00', '') if value else None
|
|
|
-
|
|
|
- return filtered_inputs
|
|
|
-
|
|
|
@classmethod
|
|
|
def _extract_variable_selector_to_variable_mapping(cls, node_data: BaseNodeData) -> dict[str, list[str]]:
|
|
|
"""
|