vellum-ai 0.14.19__py3-none-any.whl → 0.14.21__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vellum/client/core/client_wrapper.py +1 -1
- vellum/workflows/nodes/displayable/api_node/node.py +1 -1
- vellum/workflows/nodes/displayable/bases/api_node/node.py +7 -2
- vellum/workflows/nodes/displayable/code_execution_node/node.py +1 -1
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py +41 -0
- vellum/workflows/nodes/displayable/code_execution_node/utils.py +6 -1
- vellum/workflows/nodes/tests/test_utils.py +34 -2
- vellum/workflows/nodes/utils.py +26 -0
- vellum/workflows/references/lazy.py +9 -1
- vellum/workflows/references/tests/test_lazy.py +30 -0
- {vellum_ai-0.14.19.dist-info → vellum_ai-0.14.21.dist-info}/METADATA +1 -1
- {vellum_ai-0.14.19.dist-info → vellum_ai-0.14.21.dist-info}/RECORD +44 -42
- vellum_ee/workflows/display/base.py +6 -6
- vellum_ee/workflows/display/nodes/base_node_display.py +27 -2
- vellum_ee/workflows/display/nodes/base_node_vellum_display.py +0 -20
- vellum_ee/workflows/display/nodes/get_node_display_class.py +3 -3
- vellum_ee/workflows/display/nodes/vellum/api_node.py +9 -16
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +7 -3
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +2 -6
- vellum_ee/workflows/display/nodes/vellum/merge_node.py +8 -5
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +2 -6
- vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +113 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +2 -2
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +4 -4
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +8 -8
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +3 -3
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +14 -14
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +3 -3
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +5 -5
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +1 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +1 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +2 -2
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +2 -2
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +3 -3
- vellum_ee/workflows/display/types.py +4 -7
- vellum_ee/workflows/display/vellum.py +11 -3
- vellum_ee/workflows/display/workflows/base_workflow_display.py +45 -34
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +33 -80
- vellum_ee/workflows/server/virtual_file_loader.py +52 -22
- vellum_ee/workflows/tests/local_workflow/display/workflow.py +3 -5
- vellum_ee/workflows/tests/test_server.py +61 -0
- {vellum_ai-0.14.19.dist-info → vellum_ai-0.14.21.dist-info}/LICENSE +0 -0
- {vellum_ai-0.14.19.dist-info → vellum_ai-0.14.21.dist-info}/WHEEL +0 -0
- {vellum_ai-0.14.19.dist-info → vellum_ai-0.14.21.dist-info}/entry_points.txt +0 -0
@@ -14,15 +14,6 @@ _APINodeType = TypeVar("_APINodeType", bound=APINode)
|
|
14
14
|
|
15
15
|
|
16
16
|
class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeType]):
|
17
|
-
url_input_id: ClassVar[Optional[UUID]] = None
|
18
|
-
method_input_id: ClassVar[Optional[UUID]] = None
|
19
|
-
body_input_id: ClassVar[Optional[UUID]] = None
|
20
|
-
|
21
|
-
authorization_type_input_id: ClassVar[Optional[UUID]] = None
|
22
|
-
bearer_token_value_input_id: ClassVar[Optional[UUID]] = None
|
23
|
-
api_key_header_key_input_id: ClassVar[Optional[UUID]] = None
|
24
|
-
api_key_header_value_input_id: ClassVar[Optional[UUID]] = None
|
25
|
-
|
26
17
|
# A mapping between node input keys and their ids for inputs representing additional header keys
|
27
18
|
additional_header_key_input_ids: ClassVar[Optional[Dict[str, UUID]]] = None
|
28
19
|
|
@@ -41,7 +32,7 @@ class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeTy
|
|
41
32
|
input_name="url",
|
42
33
|
value=node_url,
|
43
34
|
display_context=display_context,
|
44
|
-
input_id=self.
|
35
|
+
input_id=self.node_input_ids_by_name.get(APINode.url.name),
|
45
36
|
)
|
46
37
|
|
47
38
|
node_method = raise_if_descriptor(node.method)
|
@@ -50,7 +41,7 @@ class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeTy
|
|
50
41
|
input_name="method",
|
51
42
|
value=node_method,
|
52
43
|
display_context=display_context,
|
53
|
-
input_id=self.
|
44
|
+
input_id=self.node_input_ids_by_name.get(APINode.method.name),
|
54
45
|
)
|
55
46
|
|
56
47
|
node_data = raise_if_descriptor(node.data)
|
@@ -60,7 +51,9 @@ class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeTy
|
|
60
51
|
input_name="body",
|
61
52
|
value=node_data if node_data else node_json,
|
62
53
|
display_context=display_context,
|
63
|
-
input_id=self.
|
54
|
+
input_id=self.node_input_ids_by_name.get(APINode.json.name)
|
55
|
+
# Kept for backwards compatibility with a bug in previous versions of SDK serialization
|
56
|
+
or self.node_input_ids_by_name.get("body"),
|
64
57
|
)
|
65
58
|
|
66
59
|
headers = raise_if_descriptor(node.headers)
|
@@ -75,7 +68,7 @@ class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeTy
|
|
75
68
|
input_name="authorization_type",
|
76
69
|
value=authorization_type,
|
77
70
|
display_context=display_context,
|
78
|
-
input_id=self.
|
71
|
+
input_id=self.node_input_ids_by_name.get(APINode.authorization_type.name),
|
79
72
|
)
|
80
73
|
if authorization_type
|
81
74
|
else None
|
@@ -85,7 +78,7 @@ class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeTy
|
|
85
78
|
input_name="bearer_token_value",
|
86
79
|
value=bearer_token_value,
|
87
80
|
display_context=display_context,
|
88
|
-
input_id=self.
|
81
|
+
input_id=self.node_input_ids_by_name.get(APINode.bearer_token_value.name),
|
89
82
|
pointer_type=WorkspaceSecretPointer,
|
90
83
|
)
|
91
84
|
api_key_header_key_node_input = (
|
@@ -94,7 +87,7 @@ class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeTy
|
|
94
87
|
input_name="api_key_header_key",
|
95
88
|
value=api_key_header_key,
|
96
89
|
display_context=display_context,
|
97
|
-
input_id=self.
|
90
|
+
input_id=self.node_input_ids_by_name.get(APINode.api_key_header_key.name),
|
98
91
|
)
|
99
92
|
if api_key_header_key
|
100
93
|
else None
|
@@ -104,7 +97,7 @@ class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeTy
|
|
104
97
|
input_name="api_key_header_value",
|
105
98
|
value=api_key_header_value,
|
106
99
|
display_context=display_context,
|
107
|
-
input_id=self.
|
100
|
+
input_id=self.node_input_ids_by_name.get(APINode.api_key_header_value.name),
|
108
101
|
pointer_type=WorkspaceSecretPointer,
|
109
102
|
)
|
110
103
|
|
@@ -24,17 +24,20 @@ class BaseCodeExecutionNodeDisplay(BaseNodeVellumDisplay[_CodeExecutionNodeType]
|
|
24
24
|
node = self._node
|
25
25
|
node_id = self.node_id
|
26
26
|
raw_code = raise_if_descriptor(node.code)
|
27
|
+
filepath = raise_if_descriptor(node.filepath)
|
27
28
|
|
28
29
|
code_value: Optional[str]
|
29
30
|
if raw_code:
|
30
31
|
code_value = raw_code
|
31
|
-
|
32
|
+
elif filepath:
|
32
33
|
node_file_path = inspect.getfile(node)
|
33
34
|
file_code = read_file_from_path(
|
34
35
|
node_filepath=node_file_path,
|
35
|
-
script_filepath=
|
36
|
+
script_filepath=filepath,
|
36
37
|
)
|
37
38
|
code_value = file_code
|
39
|
+
else:
|
40
|
+
code_value = ""
|
38
41
|
|
39
42
|
code_inputs = raise_if_descriptor(node.code_inputs)
|
40
43
|
|
@@ -44,7 +47,8 @@ class BaseCodeExecutionNodeDisplay(BaseNodeVellumDisplay[_CodeExecutionNodeType]
|
|
44
47
|
input_name=variable_name,
|
45
48
|
value=variable_value,
|
46
49
|
display_context=display_context,
|
47
|
-
input_id=self.node_input_ids_by_name.get(variable_name)
|
50
|
+
input_id=self.node_input_ids_by_name.get(f"{CodeExecutionNode.code_inputs.name}.{variable_name}")
|
51
|
+
or self.node_input_ids_by_name.get(variable_name),
|
48
52
|
)
|
49
53
|
for variable_name, variable_value in code_inputs.items()
|
50
54
|
]
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from uuid import UUID
|
2
|
-
from typing import Callable,
|
2
|
+
from typing import Callable, Dict, Generic, List, Optional, Tuple, Type, TypeVar, Union
|
3
3
|
|
4
4
|
from vellum import FunctionDefinition, PromptBlock, RichTextChildBlock, VellumVariable
|
5
5
|
from vellum.workflows.nodes import InlinePromptNode
|
@@ -17,10 +17,6 @@ _InlinePromptNodeType = TypeVar("_InlinePromptNodeType", bound=InlinePromptNode)
|
|
17
17
|
|
18
18
|
|
19
19
|
class BaseInlinePromptNodeDisplay(BaseNodeVellumDisplay[_InlinePromptNodeType], Generic[_InlinePromptNodeType]):
|
20
|
-
output_id: ClassVar[Optional[UUID]] = None
|
21
|
-
array_output_id: ClassVar[Optional[UUID]] = None
|
22
|
-
prompt_input_ids_by_name: ClassVar[Dict[str, UUID]] = {}
|
23
|
-
|
24
20
|
def serialize(
|
25
21
|
self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
|
26
22
|
) -> JsonObject:
|
@@ -98,7 +94,7 @@ class BaseInlinePromptNodeDisplay(BaseNodeVellumDisplay[_InlinePromptNodeType],
|
|
98
94
|
input_name=variable_name,
|
99
95
|
value=variable_value,
|
100
96
|
display_context=display_context,
|
101
|
-
input_id=self.
|
97
|
+
input_id=self.node_input_ids_by_name.get(variable_name),
|
102
98
|
)
|
103
99
|
vellum_variable_type = infer_vellum_variable_type(variable_value)
|
104
100
|
node_inputs.append(node_input)
|
@@ -6,7 +6,6 @@ from vellum.workflows.types.core import JsonObject
|
|
6
6
|
from vellum.workflows.utils.uuids import uuid4_from_hash
|
7
7
|
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
8
8
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
9
|
-
from vellum_ee.workflows.display.vellum import EdgeVellumDisplay
|
10
9
|
|
11
10
|
_MergeNodeType = TypeVar("_MergeNodeType", bound=MergeNode)
|
12
11
|
|
@@ -22,16 +21,20 @@ class BaseMergeNodeDisplay(BaseNodeVellumDisplay[_MergeNodeType], Generic[_Merge
|
|
22
21
|
node = self._node
|
23
22
|
node_id = self.node_id
|
24
23
|
|
25
|
-
|
26
|
-
|
24
|
+
merged_source_ports = [
|
25
|
+
source_node_port
|
26
|
+
for (source_node_port, target_node), _ in display_context.edge_displays.items()
|
27
|
+
if target_node.__id__ == self.node_id
|
28
|
+
]
|
27
29
|
|
28
30
|
target_handle_ids = self.get_target_handle_ids()
|
29
31
|
|
30
32
|
if target_handle_ids is None:
|
31
33
|
target_handle_ids = [
|
32
|
-
uuid4_from_hash(f"{node_id}|target_handle|{
|
34
|
+
uuid4_from_hash(f"{node_id}|target_handle|{source_node_port.node_class.__id__}")
|
35
|
+
for source_node_port in merged_source_ports
|
33
36
|
]
|
34
|
-
elif len(target_handle_ids) != len(
|
37
|
+
elif len(target_handle_ids) != len(merged_source_ports):
|
35
38
|
raise ValueError("If you explicitly specify target_handle_ids, you must specify one for each incoming edge")
|
36
39
|
|
37
40
|
return {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from uuid import UUID
|
2
|
-
from typing import
|
2
|
+
from typing import Generic, Optional, TypeVar, cast
|
3
3
|
|
4
4
|
from vellum.workflows.nodes.displayable.prompt_deployment_node import PromptDeploymentNode
|
5
5
|
from vellum.workflows.references import OutputReference
|
@@ -16,10 +16,6 @@ _PromptDeploymentNodeType = TypeVar("_PromptDeploymentNodeType", bound=PromptDep
|
|
16
16
|
class BasePromptDeploymentNodeDisplay(
|
17
17
|
BaseNodeVellumDisplay[_PromptDeploymentNodeType], Generic[_PromptDeploymentNodeType]
|
18
18
|
):
|
19
|
-
output_id: ClassVar[Optional[UUID]] = None
|
20
|
-
array_output_id: ClassVar[Optional[UUID]] = None
|
21
|
-
prompt_input_ids_by_name: ClassVar[Dict[str, UUID]] = {}
|
22
|
-
|
23
19
|
def serialize(
|
24
20
|
self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
|
25
21
|
) -> JsonObject:
|
@@ -34,7 +30,7 @@ class BasePromptDeploymentNodeDisplay(
|
|
34
30
|
input_name=variable_name,
|
35
31
|
value=variable_value,
|
36
32
|
display_context=display_context,
|
37
|
-
input_id=self.
|
33
|
+
input_id=self.node_input_ids_by_name.get(variable_name),
|
38
34
|
)
|
39
35
|
for variable_name, variable_value in prompt_inputs.items()
|
40
36
|
]
|
@@ -0,0 +1,113 @@
|
|
1
|
+
import pytest
|
2
|
+
from uuid import UUID
|
3
|
+
from typing import Type
|
4
|
+
|
5
|
+
from vellum.workflows.nodes.displayable.code_execution_node.node import CodeExecutionNode
|
6
|
+
from vellum.workflows.workflows.base import BaseWorkflow
|
7
|
+
from vellum_ee.workflows.display.nodes.vellum.code_execution_node import BaseCodeExecutionNodeDisplay
|
8
|
+
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
9
|
+
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
10
|
+
|
11
|
+
|
12
|
+
def _no_display_class(Node: Type[CodeExecutionNode]):
|
13
|
+
return None
|
14
|
+
|
15
|
+
|
16
|
+
def _display_class_with_node_input_ids_by_name(Node: Type[CodeExecutionNode]):
|
17
|
+
class CodeExecutionNodeDisplay(BaseCodeExecutionNodeDisplay[Node]): # type: ignore[valid-type]
|
18
|
+
node_input_ids_by_name = {"foo": UUID("fba6a4d5-835a-4e99-afb7-f6a4aed15110")}
|
19
|
+
|
20
|
+
return CodeExecutionNodeDisplay
|
21
|
+
|
22
|
+
|
23
|
+
def _display_class_with_node_input_ids_by_name_with_inputs_prefix(Node: Type[CodeExecutionNode]):
|
24
|
+
class CodeExecutionNodeDisplay(BaseCodeExecutionNodeDisplay[Node]): # type: ignore[valid-type]
|
25
|
+
node_input_ids_by_name = {"code_inputs.foo": UUID("fba6a4d5-835a-4e99-afb7-f6a4aed15110")}
|
26
|
+
|
27
|
+
return CodeExecutionNodeDisplay
|
28
|
+
|
29
|
+
|
30
|
+
@pytest.mark.parametrize(
|
31
|
+
["GetDisplayClass", "expected_input_id"],
|
32
|
+
[
|
33
|
+
(_no_display_class, "e3cdb222-324e-4ad1-abb2-bdd7881b3a0e"),
|
34
|
+
(_display_class_with_node_input_ids_by_name, "fba6a4d5-835a-4e99-afb7-f6a4aed15110"),
|
35
|
+
(_display_class_with_node_input_ids_by_name_with_inputs_prefix, "fba6a4d5-835a-4e99-afb7-f6a4aed15110"),
|
36
|
+
],
|
37
|
+
ids=[
|
38
|
+
"no_display_class",
|
39
|
+
"display_class_with_node_input_ids_by_name",
|
40
|
+
"display_class_with_node_input_ids_by_name_with_inputs_prefix",
|
41
|
+
],
|
42
|
+
)
|
43
|
+
def test_serialize_node__code_node_inputs(GetDisplayClass, expected_input_id):
|
44
|
+
# GIVEN a code node with inputs
|
45
|
+
class MyCodeExecutionNode(CodeExecutionNode):
|
46
|
+
code_inputs = {"foo": "bar"}
|
47
|
+
|
48
|
+
# AND a workflow with the code node
|
49
|
+
class Workflow(BaseWorkflow):
|
50
|
+
graph = MyCodeExecutionNode
|
51
|
+
|
52
|
+
# AND a display class
|
53
|
+
GetDisplayClass(MyCodeExecutionNode)
|
54
|
+
|
55
|
+
# WHEN the workflow is serialized
|
56
|
+
workflow_display = get_workflow_display(base_display_class=VellumWorkflowDisplay, workflow_class=Workflow)
|
57
|
+
serialized_workflow: dict = workflow_display.serialize()
|
58
|
+
|
59
|
+
# THEN the node should properly serialize the inputs
|
60
|
+
my_code_execution_node = next(
|
61
|
+
node for node in serialized_workflow["workflow_raw_data"]["nodes"] if node["type"] == "CODE_EXECUTION"
|
62
|
+
)
|
63
|
+
|
64
|
+
assert my_code_execution_node["inputs"] == [
|
65
|
+
{
|
66
|
+
"id": expected_input_id,
|
67
|
+
"key": "foo",
|
68
|
+
"value": {
|
69
|
+
"combinator": "OR",
|
70
|
+
"rules": [
|
71
|
+
{
|
72
|
+
"type": "CONSTANT_VALUE",
|
73
|
+
"data": {
|
74
|
+
"type": "STRING",
|
75
|
+
"value": "bar",
|
76
|
+
},
|
77
|
+
}
|
78
|
+
],
|
79
|
+
},
|
80
|
+
},
|
81
|
+
{
|
82
|
+
"id": "9774d864-c76d-4a1a-8181-b632ed3ab87c",
|
83
|
+
"key": "code",
|
84
|
+
"value": {
|
85
|
+
"combinator": "OR",
|
86
|
+
"rules": [
|
87
|
+
{
|
88
|
+
"type": "CONSTANT_VALUE",
|
89
|
+
"data": {
|
90
|
+
"type": "STRING",
|
91
|
+
"value": "",
|
92
|
+
},
|
93
|
+
}
|
94
|
+
],
|
95
|
+
},
|
96
|
+
},
|
97
|
+
{
|
98
|
+
"id": "34742235-5699-45cd-9d34-bce3745e743d",
|
99
|
+
"key": "runtime",
|
100
|
+
"value": {
|
101
|
+
"combinator": "OR",
|
102
|
+
"rules": [
|
103
|
+
{
|
104
|
+
"type": "CONSTANT_VALUE",
|
105
|
+
"data": {
|
106
|
+
"type": "STRING",
|
107
|
+
"value": "PYTHON_3_11_6",
|
108
|
+
},
|
109
|
+
}
|
110
|
+
],
|
111
|
+
},
|
112
|
+
},
|
113
|
+
]
|
@@ -12,7 +12,7 @@ from vellum_ee.workflows.display.base import StateValueDisplayType, WorkflowInpu
|
|
12
12
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
13
13
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
14
14
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay
|
15
|
-
from vellum_ee.workflows.display.types import
|
15
|
+
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
16
16
|
from vellum_ee.workflows.display.vellum import NodeDisplayData, WorkflowMetaVellumDisplay
|
17
17
|
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
18
18
|
|
@@ -24,7 +24,7 @@ def serialize_node():
|
|
24
24
|
base_class: type[BaseNodeDisplay[Any]] = BaseNodeDisplay,
|
25
25
|
global_workflow_input_displays: Dict[WorkflowInputReference, WorkflowInputsDisplayType] = {},
|
26
26
|
global_state_value_displays: Dict[StateValueReference, StateValueDisplayType] = {},
|
27
|
-
global_node_displays: Dict[Type[BaseNode],
|
27
|
+
global_node_displays: Dict[Type[BaseNode], BaseNodeDisplay] = {},
|
28
28
|
global_node_output_displays: Dict[OutputReference, Tuple[Type[BaseNode], NodeOutputDisplay]] = {},
|
29
29
|
) -> JsonObject:
|
30
30
|
node_display_class = get_node_display_class(base_class, node_class)
|
@@ -64,7 +64,7 @@ def test_serialize_node__retry(serialize_node):
|
|
64
64
|
"test_adornments_serialization",
|
65
65
|
],
|
66
66
|
},
|
67
|
-
"trigger": {"id": "
|
67
|
+
"trigger": {"id": "75fbe874-c00b-4fc2-9ade-52f4fe9209fa", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
68
68
|
"ports": [{"id": "078650c9-f775-4cd0-a08c-23af9983a361", "name": "default", "type": "DEFAULT"}],
|
69
69
|
"adornments": [
|
70
70
|
{
|
@@ -175,7 +175,7 @@ def test_serialize_node__try(serialize_node):
|
|
175
175
|
"test_adornments_serialization",
|
176
176
|
],
|
177
177
|
},
|
178
|
-
"trigger": {"id": "
|
178
|
+
"trigger": {"id": "bbb343ff-2b7a-4793-a8cf-fb05132ca46a", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
179
179
|
"ports": [{"id": "8d25f244-4b12-4f8b-b202-8948698679a0", "name": "default", "type": "DEFAULT"}],
|
180
180
|
"adornments": [
|
181
181
|
{
|
@@ -283,7 +283,7 @@ def test_serialize_node__stacked():
|
|
283
283
|
"test_adornments_serialization",
|
284
284
|
],
|
285
285
|
},
|
286
|
-
"trigger": {"id": "
|
286
|
+
"trigger": {"id": "6e4af17f-bbee-4777-b10d-af042cd6e16a", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
287
287
|
"ports": [{"id": "408cd5fb-3a3e-4eb2-9889-61111bd6a129", "name": "default", "type": "DEFAULT"}],
|
288
288
|
"adornments": [
|
289
289
|
{
|
@@ -342,7 +342,7 @@ def test_serialize_node__stacked():
|
|
342
342
|
"source_node_id": "c14c1c9b-a7a4-4d2c-84fb-c940cfb09525",
|
343
343
|
"source_handle_id": "51a5eb25-af14-4bee-9ced-d2aa534ea8e9",
|
344
344
|
"target_node_id": "074833b0-e142-4bbc-8dec-209a35e178a3",
|
345
|
-
"target_handle_id": "
|
345
|
+
"target_handle_id": "6e4af17f-bbee-4777-b10d-af042cd6e16a",
|
346
346
|
"type": "DEFAULT",
|
347
347
|
}
|
348
348
|
],
|
@@ -48,7 +48,7 @@ def test_serialize_node__constant_value(serialize_node):
|
|
48
48
|
"test_attributes_serialization",
|
49
49
|
],
|
50
50
|
},
|
51
|
-
"trigger": {"id": "
|
51
|
+
"trigger": {"id": "e2cde904-de60-4755-87cf-55052ea23a51", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
52
52
|
"ports": [{"id": "96ac6512-0128-4cf7-ba51-2725b4807c8f", "type": "DEFAULT", "name": "default"}],
|
53
53
|
"adornments": None,
|
54
54
|
"attributes": [
|
@@ -96,7 +96,7 @@ def test_serialize_node__constant_value_reference(serialize_node):
|
|
96
96
|
"test_attributes_serialization",
|
97
97
|
],
|
98
98
|
},
|
99
|
-
"trigger": {"id": "
|
99
|
+
"trigger": {"id": "dc2f90b9-14a1-457a-a9f9-dec7a04f74eb", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
100
100
|
"ports": [{"id": "61adfacf-c3a9-4aea-a3da-bcdbc03273c6", "name": "default", "type": "DEFAULT"}],
|
101
101
|
"adornments": None,
|
102
102
|
"attributes": [
|
@@ -138,7 +138,7 @@ def test_serialize_node__lazy_reference(serialize_node):
|
|
138
138
|
"test_attributes_serialization",
|
139
139
|
],
|
140
140
|
},
|
141
|
-
"trigger": {"id": "
|
141
|
+
"trigger": {"id": "14ec4d19-13e5-4db3-94fa-4e15274bffc7", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
142
142
|
"ports": [{"id": "2dba7224-a376-4780-8414-2b50601f9283", "name": "default", "type": "DEFAULT"}],
|
143
143
|
"adornments": None,
|
144
144
|
"attributes": [
|
@@ -221,7 +221,7 @@ def test_serialize_node__workflow_input(serialize_node):
|
|
221
221
|
"test_attributes_serialization",
|
222
222
|
],
|
223
223
|
},
|
224
|
-
"trigger": {"id": "
|
224
|
+
"trigger": {"id": "debf37b9-720d-48dd-9699-69283966f927", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
225
225
|
"ports": [{"id": "20d91130-ca86-4420-b2e7-a962c0f1a509", "type": "DEFAULT", "name": "default"}],
|
226
226
|
"adornments": None,
|
227
227
|
"attributes": [
|
@@ -309,7 +309,7 @@ def test_serialize_node__node_output(serialize_node):
|
|
309
309
|
"test_attributes_serialization",
|
310
310
|
],
|
311
311
|
},
|
312
|
-
"trigger": {"id": "
|
312
|
+
"trigger": {"id": "d4b08664-bb78-4fdd-83a2-877c4ca4175a", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
313
313
|
"ports": [{"id": "a345665a-decd-4f6b-af38-387bd41c2643", "type": "DEFAULT", "name": "default"}],
|
314
314
|
"adornments": None,
|
315
315
|
"attributes": [
|
@@ -359,7 +359,7 @@ def test_serialize_node__vellum_secret(serialize_node):
|
|
359
359
|
"test_attributes_serialization",
|
360
360
|
],
|
361
361
|
},
|
362
|
-
"trigger": {"id": "
|
362
|
+
"trigger": {"id": "70a3d4c0-83e3-428d-ac84-bf9e5644a84d", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
363
363
|
"ports": [{"id": "6d1c2139-64bd-4433-84d7-3fe08850134b", "type": "DEFAULT", "name": "default"}],
|
364
364
|
"adornments": None,
|
365
365
|
"attributes": [
|
@@ -412,7 +412,7 @@ def test_serialize_node__node_execution(serialize_node):
|
|
412
412
|
"test_attributes_serialization",
|
413
413
|
],
|
414
414
|
},
|
415
|
-
"trigger": {"id": "
|
415
|
+
"trigger": {"id": "0c06baa5-55b6-494a-a89d-9535dfa5f24b", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
416
416
|
"ports": [{"id": "59844b72-ac5e-43c5-b3a7-9c57ba73ec8c", "type": "DEFAULT", "name": "default"}],
|
417
417
|
"adornments": None,
|
418
418
|
"attributes": [
|
@@ -493,7 +493,7 @@ def test_serialize_node__coalesce(serialize_node):
|
|
493
493
|
"test_attributes_serialization",
|
494
494
|
],
|
495
495
|
},
|
496
|
-
"trigger": {"id": "
|
496
|
+
"trigger": {"id": "b9894d9a-1887-416d-895d-a4129aac37b8", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
497
497
|
"ports": [{"id": "9d97a0c9-6a79-433a-bcdf-e07aa10c0f3c", "name": "default", "type": "DEFAULT"}],
|
498
498
|
"adornments": None,
|
499
499
|
"attributes": [
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py
CHANGED
@@ -39,7 +39,7 @@ def test_serialize_node__annotated_output(serialize_node):
|
|
39
39
|
"test_outputs_serialization",
|
40
40
|
],
|
41
41
|
},
|
42
|
-
"trigger": {"id": "
|
42
|
+
"trigger": {"id": "e66c7dde-02c9-4f6d-84a6-16117b54cd88", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
43
43
|
"ports": [{"id": "d83b7a5d-bbac-47ee-9277-1fbed71e83e8", "type": "DEFAULT", "name": "default"}],
|
44
44
|
"adornments": None,
|
45
45
|
"attributes": [],
|
@@ -87,7 +87,7 @@ def test_serialize_node__workflow_input(serialize_node):
|
|
87
87
|
"test_outputs_serialization",
|
88
88
|
],
|
89
89
|
},
|
90
|
-
"trigger": {"id": "
|
90
|
+
"trigger": {"id": "debf37b9-720d-48dd-9699-69283966f927", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
91
91
|
"ports": [{"id": "20d91130-ca86-4420-b2e7-a962c0f1a509", "type": "DEFAULT", "name": "default"}],
|
92
92
|
"adornments": None,
|
93
93
|
"attributes": [],
|
@@ -150,7 +150,7 @@ def test_serialize_node__node_output_reference(serialize_node):
|
|
150
150
|
"test_outputs_serialization",
|
151
151
|
],
|
152
152
|
},
|
153
|
-
"trigger": {"id": "
|
153
|
+
"trigger": {"id": "c8804b97-9f84-41b6-ade8-aa74544d6846", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
154
154
|
"ports": [{"id": "383dc10a-d8f3-4bac-b995-8b95bc6deb21", "type": "DEFAULT", "name": "default"}],
|
155
155
|
"adornments": None,
|
156
156
|
"attributes": [],
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py
CHANGED
@@ -40,7 +40,7 @@ def test_serialize_node__basic(serialize_node):
|
|
40
40
|
"test_ports_serialization",
|
41
41
|
],
|
42
42
|
},
|
43
|
-
"trigger": {"id": "
|
43
|
+
"trigger": {"id": "b95cca96-b570-42ac-ace8-51ca0f627881", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
44
44
|
"ports": [
|
45
45
|
{
|
46
46
|
"id": "8bec8d0c-113f-4110-afcb-4a6e566e7236",
|
@@ -86,7 +86,7 @@ def test_serialize_node__if(serialize_node):
|
|
86
86
|
"test_ports_serialization",
|
87
87
|
],
|
88
88
|
},
|
89
|
-
"trigger": {"id": "
|
89
|
+
"trigger": {"id": "46e21bcc-47e1-457f-8134-ead575253b74", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
90
90
|
"ports": [
|
91
91
|
{
|
92
92
|
"id": "9889fe69-62f8-4bb3-aac6-425b75700bea",
|
@@ -148,7 +148,7 @@ def test_serialize_node__if_else(serialize_node):
|
|
148
148
|
"test_ports_serialization",
|
149
149
|
],
|
150
150
|
},
|
151
|
-
"trigger": {"id": "
|
151
|
+
"trigger": {"id": "664c941c-275c-474c-9a5c-8501b934e86d", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
152
152
|
"ports": [
|
153
153
|
{
|
154
154
|
"id": "6fd9edea-9c1f-4463-aeb9-bfdde3231ee0",
|
@@ -217,7 +217,7 @@ def test_serialize_node__if_elif_else(serialize_node):
|
|
217
217
|
"test_ports_serialization",
|
218
218
|
],
|
219
219
|
},
|
220
|
-
"trigger": {"id": "
|
220
|
+
"trigger": {"id": "bba33909-beeb-4ebd-ad77-46b617ab07b0", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
221
221
|
"ports": [
|
222
222
|
{
|
223
223
|
"id": "19a1cc62-1f18-49b0-8026-7c82709e34db",
|
@@ -316,7 +316,7 @@ def test_serialize_node__node_output_reference(serialize_node):
|
|
316
316
|
],
|
317
317
|
},
|
318
318
|
"base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
|
319
|
-
"trigger": {"id": "
|
319
|
+
"trigger": {"id": "c8804b97-9f84-41b6-ade8-aa74544d6846", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
320
320
|
"ports": [
|
321
321
|
{
|
322
322
|
"id": "500075dc-fc65-428a-b3c0-a410f8c7f8cf",
|
@@ -379,7 +379,7 @@ def test_serialize_node__vellum_secret_reference(serialize_node):
|
|
379
379
|
],
|
380
380
|
},
|
381
381
|
"base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
|
382
|
-
"trigger": {"id": "
|
382
|
+
"trigger": {"id": "93cc612b-c020-420b-94ef-62d9687c212c", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
383
383
|
"ports": [
|
384
384
|
{
|
385
385
|
"id": "3b6b4048-8622-446d-9772-2766357d7b18",
|
@@ -445,7 +445,7 @@ def test_serialize_node__execution_count_reference(serialize_node):
|
|
445
445
|
],
|
446
446
|
},
|
447
447
|
"base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
|
448
|
-
"trigger": {"id": "
|
448
|
+
"trigger": {"id": "ccc61dda-a947-47ac-b484-78f971ae1148", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
449
449
|
"ports": [
|
450
450
|
{
|
451
451
|
"id": "79d0cfa3-c8f9-4434-a2f8-5e416d66437a",
|
@@ -506,7 +506,7 @@ def test_serialize_node__null(serialize_node):
|
|
506
506
|
"test_ports_serialization",
|
507
507
|
],
|
508
508
|
},
|
509
|
-
"trigger": {"id": "
|
509
|
+
"trigger": {"id": "ad543514-516f-47ac-a363-1bbfccb0dfa9", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
510
510
|
"ports": [
|
511
511
|
{
|
512
512
|
"id": "7f1fb75d-0c8b-4ebc-8c59-4ae68f1a68e1",
|
@@ -564,7 +564,7 @@ def test_serialize_node__between(serialize_node):
|
|
564
564
|
"test_ports_serialization",
|
565
565
|
],
|
566
566
|
},
|
567
|
-
"trigger": {"id": "
|
567
|
+
"trigger": {"id": "36799ad9-5c1a-4bb6-be13-aee5487c021b", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
568
568
|
"ports": [
|
569
569
|
{
|
570
570
|
"id": "b745c089-1023-46dc-b2b6-ba75ac37563a",
|
@@ -633,7 +633,7 @@ def test_serialize_node__or(serialize_node):
|
|
633
633
|
"test_ports_serialization",
|
634
634
|
],
|
635
635
|
},
|
636
|
-
"trigger": {"id": "
|
636
|
+
"trigger": {"id": "f2837ac2-2132-4af2-b8bb-30de9b0a2815", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
637
637
|
"ports": [
|
638
638
|
{
|
639
639
|
"id": "0bd64819-b866-4333-82e0-8ac672c09b79",
|
@@ -716,7 +716,7 @@ def test_serialize_node__and_then_or(serialize_node):
|
|
716
716
|
"test_ports_serialization",
|
717
717
|
],
|
718
718
|
},
|
719
|
-
"trigger": {"id": "
|
719
|
+
"trigger": {"id": "aa7747fe-4b59-4994-a5c4-0ccc8065f93d", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
720
720
|
"ports": [
|
721
721
|
{
|
722
722
|
"id": "8bb89da2-a752-4541-8f90-1276c44910a8",
|
@@ -818,7 +818,7 @@ def test_serialize_node__parenthesized_and_then_or(serialize_node):
|
|
818
818
|
"test_ports_serialization",
|
819
819
|
],
|
820
820
|
},
|
821
|
-
"trigger": {"id": "
|
821
|
+
"trigger": {"id": "71601746-3722-423c-8fc0-d15a6bb6ddd4", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
822
822
|
"ports": [
|
823
823
|
{
|
824
824
|
"id": "30478083-924d-469e-ad55-df28bc282cdb",
|
@@ -920,7 +920,7 @@ def test_serialize_node__or_then_and(serialize_node):
|
|
920
920
|
"test_ports_serialization",
|
921
921
|
],
|
922
922
|
},
|
923
|
-
"trigger": {"id": "
|
923
|
+
"trigger": {"id": "9c875b19-fce1-4eef-80ea-19651dec1a76", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
924
924
|
"ports": [
|
925
925
|
{
|
926
926
|
"id": "7f442cce-0b99-482c-aec8-8eed6ccadde2",
|
@@ -1021,7 +1021,7 @@ def test_serialize_node__parse_json(serialize_node):
|
|
1021
1021
|
"test_ports_serialization",
|
1022
1022
|
],
|
1023
1023
|
},
|
1024
|
-
"trigger": {"id": "
|
1024
|
+
"trigger": {"id": "ecff8eef-b928-48e7-ac26-841322ff2752", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
1025
1025
|
"ports": [
|
1026
1026
|
{
|
1027
1027
|
"id": "5a88bac8-89b3-4d81-b539-2f977a36a9c0",
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py
CHANGED
@@ -33,7 +33,7 @@ def test_serialize_node__basic(serialize_node):
|
|
33
33
|
"test_trigger_serialization",
|
34
34
|
],
|
35
35
|
},
|
36
|
-
"trigger": {"id": "
|
36
|
+
"trigger": {"id": "b95cca96-b570-42ac-ace8-51ca0f627881", "merge_behavior": "AWAIT_ATTRIBUTES"},
|
37
37
|
"ports": [
|
38
38
|
{
|
39
39
|
"id": "8bec8d0c-113f-4110-afcb-4a6e566e7236",
|
@@ -75,7 +75,7 @@ def test_serialize_node__await_any(serialize_node):
|
|
75
75
|
"test_trigger_serialization",
|
76
76
|
],
|
77
77
|
},
|
78
|
-
"trigger": {"id": "
|
78
|
+
"trigger": {"id": "c0db17e7-6766-4062-aaee-7404580d76e4", "merge_behavior": "AWAIT_ANY"},
|
79
79
|
"ports": [
|
80
80
|
{
|
81
81
|
"id": "d9a84db7-8bd6-4a15-9e3c-c2e898c26d16",
|
@@ -117,7 +117,7 @@ def test_serialize_node__await_all(serialize_node):
|
|
117
117
|
"test_trigger_serialization",
|
118
118
|
],
|
119
119
|
},
|
120
|
-
"trigger": {"id": "
|
120
|
+
"trigger": {"id": "1b22935e-0e79-485a-b274-a2f316c0983c", "merge_behavior": "AWAIT_ALL"},
|
121
121
|
"ports": [
|
122
122
|
{
|
123
123
|
"id": "fa73da35-0bf9-4f02-bf5b-0b0d1a6f1494",
|