vellum-ai 0.13.9__py3-none-any.whl → 0.13.10__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.
Files changed (44) hide show
  1. vellum/client/core/client_wrapper.py +1 -1
  2. vellum/workflows/descriptors/utils.py +1 -1
  3. vellum/workflows/nodes/bases/base.py +1 -1
  4. vellum/workflows/nodes/displayable/api_node/node.py +4 -1
  5. vellum/workflows/nodes/displayable/bases/api_node/node.py +4 -1
  6. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +4 -1
  7. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +4 -0
  8. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +4 -0
  9. vellum/workflows/nodes/displayable/bases/search_node.py +4 -0
  10. vellum/workflows/nodes/displayable/code_execution_node/node.py +4 -1
  11. vellum/workflows/nodes/displayable/conditional_node/node.py +4 -0
  12. vellum/workflows/nodes/displayable/final_output_node/node.py +4 -0
  13. vellum/workflows/nodes/displayable/guardrail_node/node.py +4 -1
  14. vellum/workflows/nodes/displayable/inline_prompt_node/node.py +4 -0
  15. vellum/workflows/nodes/displayable/merge_node/node.py +3 -1
  16. vellum/workflows/nodes/displayable/note_node/node.py +4 -0
  17. vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +4 -0
  18. vellum/workflows/nodes/displayable/search_node/node.py +4 -0
  19. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +4 -1
  20. {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.10.dist-info}/METADATA +1 -1
  21. {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.10.dist-info}/RECORD +44 -44
  22. vellum_ee/workflows/display/nodes/base_node_display.py +100 -0
  23. vellum_ee/workflows/display/nodes/vellum/base_node.py +34 -105
  24. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +2 -1
  25. vellum_ee/workflows/display/nodes/vellum/try_node.py +7 -0
  26. vellum_ee/workflows/display/nodes/vellum/utils.py +0 -69
  27. vellum_ee/workflows/display/tests/test_vellum_workflow_display.py +56 -0
  28. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +3 -2
  29. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +143 -26
  30. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +10 -10
  31. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +6 -6
  32. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +32 -34
  33. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +4 -4
  34. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +5 -5
  35. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +1 -1
  36. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +6 -3
  37. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +6 -3
  38. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +3 -3
  39. vellum_ee/workflows/display/utils/vellum.py +74 -4
  40. vellum_ee/workflows/display/workflows/base_workflow_display.py +6 -4
  41. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +0 -2
  42. {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.10.dist-info}/LICENSE +0 -0
  43. {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.10.dist-info}/WHEEL +0 -0
  44. {vellum_ai-0.13.9.dist-info → vellum_ai-0.13.10.dist-info}/entry_points.txt +0 -0
@@ -1,47 +1,148 @@
1
- import pytest
1
+ from uuid import uuid4
2
2
 
3
3
  from deepdiff import DeepDiff
4
4
 
5
5
  from vellum.workflows.inputs.base import BaseInputs
6
6
  from vellum.workflows.nodes.bases.base import BaseNode
7
- from vellum.workflows.nodes.core.map_node.node import MapNode
7
+ from vellum.workflows.nodes.core.retry_node.node import RetryNode
8
+ from vellum.workflows.nodes.core.try_node.node import TryNode
8
9
  from vellum.workflows.outputs.base import BaseOutputs
9
- from vellum.workflows.state.base import BaseState
10
+ from vellum_ee.workflows.display.base import WorkflowInputsDisplay
11
+ from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
12
+ from vellum_ee.workflows.display.nodes.vellum.base_node import BaseNodeDisplay
13
+ from vellum_ee.workflows.display.nodes.vellum.try_node import BaseTryNodeDisplay
10
14
 
11
15
 
12
16
  class Inputs(BaseInputs):
13
- foo: str
17
+ input: str
14
18
 
15
19
 
16
- class State(BaseState):
17
- bar: str
20
+ @RetryNode.wrap(max_attempts=3)
21
+ class InnerRetryGenericNode(BaseNode):
22
+ input = Inputs.input
23
+
24
+ class Outputs(BaseOutputs):
25
+ output: str
26
+
27
+
28
+ class InnerRetryGenericNodeDisplay(BaseNodeDisplay[InnerRetryGenericNode.__wrapped_node__]): # type: ignore
29
+ pass
30
+
31
+
32
+ class OuterRetryNodeDisplay(BaseNodeDisplay[InnerRetryGenericNode]):
33
+ pass
34
+
35
+
36
+ def test_serialize_node__retry(serialize_node):
37
+ input_id = uuid4()
38
+ serialized_node = serialize_node(
39
+ node_class=InnerRetryGenericNode,
40
+ global_workflow_input_displays={Inputs.input: WorkflowInputsDisplay(id=input_id)},
41
+ global_node_displays={
42
+ InnerRetryGenericNode.__wrapped_node__: InnerRetryGenericNodeDisplay,
43
+ InnerRetryGenericNode: OuterRetryNodeDisplay,
44
+ },
45
+ )
46
+
47
+ serialized_node["adornments"][0]["attributes"] = sorted(
48
+ serialized_node["adornments"][0]["attributes"], key=lambda x: x["name"]
49
+ )
50
+ assert not DeepDiff(
51
+ {
52
+ "id": "f2a95e79-7d4b-47ad-b986-4f648297ec65",
53
+ "label": "InnerRetryGenericNode",
54
+ "type": "GENERIC",
55
+ "display_data": {"position": {"x": 0.0, "y": 0.0}},
56
+ "base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
57
+ "definition": {
58
+ "name": "InnerRetryGenericNode",
59
+ "module": [
60
+ "vellum_ee",
61
+ "workflows",
62
+ "display",
63
+ "tests",
64
+ "workflow_serialization",
65
+ "generic_nodes",
66
+ "test_adornments_serialization",
67
+ ],
68
+ },
69
+ "trigger": {"id": "af9ba01c-4cde-4632-9aa1-7673b42e7bd8", "merge_behavior": "AWAIT_ATTRIBUTES"},
70
+ "ports": [{"id": "c2ecc6c0-f353-4495-9b93-a61a47248556", "name": "default", "type": "DEFAULT"}],
71
+ "adornments": [
72
+ {
73
+ "id": "5be7d260-74f7-4734-b31b-a46a94539586",
74
+ "label": "RetryNode",
75
+ "base": {
76
+ "name": "RetryNode",
77
+ "module": ["vellum", "workflows", "nodes", "core", "retry_node", "node"],
78
+ },
79
+ "attributes": [
80
+ {
81
+ "id": "f388e93b-8c68-4f54-8577-bbd0c9091557",
82
+ "name": "max_attempts",
83
+ "value": {"type": "CONSTANT_VALUE", "value": {"type": "NUMBER", "value": 3.0}},
84
+ },
85
+ {
86
+ "id": "73a02e62-4535-4e1f-97b5-1264ca8b1d71",
87
+ "name": "retry_on_condition",
88
+ "value": {"type": "CONSTANT_VALUE", "value": {"type": "JSON", "value": None}},
89
+ },
90
+ {
91
+ "id": "c91782e3-140f-4938-9c23-d2a7b85dcdd8",
92
+ "name": "retry_on_error_code",
93
+ "value": {"type": "CONSTANT_VALUE", "value": {"type": "JSON", "value": None}},
94
+ },
95
+ ],
96
+ }
97
+ ],
98
+ "attributes": [
99
+ {
100
+ "id": "c363daa7-9482-4c0e-aee8-faa080602ee3",
101
+ "name": "input",
102
+ "value": {"type": "WORKFLOW_INPUT", "input_variable_id": str(input_id)},
103
+ }
104
+ ],
105
+ "outputs": [
106
+ {"id": "8aaf6cd8-3fa5-4f17-a60f-ec7da5ec6498", "name": "output", "type": "STRING", "value": None}
107
+ ],
108
+ },
109
+ serialized_node,
110
+ )
18
111
 
19
112
 
20
- @MapNode.wrap(items=[1, 2, 3])
21
- class MapGenericNode(BaseNode):
22
- item = MapNode.SubworkflowInputs.item
23
- foo = Inputs.foo
24
- bar = State.bar
113
+ @TryNode.wrap()
114
+ class InnerTryGenericNode(BaseNode):
115
+ input = Inputs.input
25
116
 
26
117
  class Outputs(BaseOutputs):
27
- value: str
118
+ output: str
28
119
 
29
- def run(self) -> Outputs:
30
- return self.Outputs(value=f"{self.foo} {self.bar} {self.item}")
120
+
121
+ @BaseTryNodeDisplay.wrap()
122
+ class InnerTryGenericNodeDisplay(BaseNodeDisplay[InnerTryGenericNode]):
123
+ pass
31
124
 
32
125
 
33
- @pytest.mark.skip(reason="not implemented")
34
126
  def test_serialize_node__try(serialize_node):
35
- serialized_node = serialize_node(MapGenericNode)
127
+ input_id = uuid4()
128
+ serialized_node = serialize_node(
129
+ base_class=BaseNodeVellumDisplay,
130
+ node_class=InnerTryGenericNode,
131
+ global_workflow_input_displays={Inputs.input: WorkflowInputsDisplay(id=input_id)},
132
+ global_node_displays={
133
+ InnerTryGenericNode.__wrapped_node__: InnerTryGenericNodeDisplay,
134
+ },
135
+ )
136
+
36
137
  assert not DeepDiff(
37
138
  {
38
- "id": "c2ed23f7-f6cb-4a56-a91c-2e5f9d8fda7f",
39
- "label": "BasicGenericNode",
139
+ "id": str(InnerTryGenericNode.__wrapped_node__.__id__),
140
+ "label": "InnerTryGenericNode",
40
141
  "type": "GENERIC",
41
142
  "display_data": {"position": {"x": 0.0, "y": 0.0}},
42
143
  "base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
43
144
  "definition": {
44
- "name": "BasicGenericNode",
145
+ "name": "InnerTryGenericNode",
45
146
  "module": [
46
147
  "vellum_ee",
47
148
  "workflows",
@@ -52,16 +153,32 @@ def test_serialize_node__try(serialize_node):
52
153
  "test_adornments_serialization",
53
154
  ],
54
155
  },
55
- "trigger": {"id": "9d3a1b3d-4a38-4f2e-bbf1-dd8be152bce8", "merge_behavior": "AWAIT_ANY"},
56
- "ports": [
156
+ "trigger": {"id": "741f7f75-e921-47a9-8c05-9e66640d0866", "merge_behavior": "AWAIT_ATTRIBUTES"},
157
+ "ports": [{"id": "1b8f8ab5-a656-4015-926c-80655bbd9cb8", "name": "default", "type": "DEFAULT"}],
158
+ "adornments": [
57
159
  {
58
- "id": "4fbf0fff-a42e-4410-852a-238b5059198e",
59
- "type": "DEFAULT",
160
+ "id": "3344083c-a32c-4a32-920b-0fb5093448fa",
161
+ "label": "TryNode",
162
+ "base": {"name": "TryNode", "module": ["vellum", "workflows", "nodes", "core", "try_node", "node"]},
163
+ "attributes": [
164
+ {
165
+ "id": "ab2fbab0-e2a0-419b-b1ef-ce11ecf11e90",
166
+ "name": "on_error_code",
167
+ "value": {"type": "CONSTANT_VALUE", "value": {"type": "JSON", "value": None}},
168
+ }
169
+ ],
60
170
  }
61
171
  ],
62
- "adornments": None,
63
- "attributes": [],
172
+ "attributes": [
173
+ {
174
+ "id": "4d8b4c2c-4f92-4c7a-abf0-b9c88a15a790",
175
+ "name": "input",
176
+ "value": {"type": "WORKFLOW_INPUT", "input_variable_id": str(input_id)},
177
+ }
178
+ ],
179
+ "outputs": [
180
+ {"id": "63ba929b-bf79-44ee-bd1f-d259dbe8d48e", "name": "output", "type": "STRING", "value": None}
181
+ ],
64
182
  },
65
183
  serialized_node,
66
- ignore_order=True,
67
184
  )
@@ -44,8 +44,8 @@ def test_serialize_node__constant_value(serialize_node):
44
44
  "test_attributes_serialization",
45
45
  ],
46
46
  },
47
- "trigger": {"id": "279e8228-9b82-43a3-8c31-affc036e3a0b", "merge_behavior": "AWAIT_ANY"},
48
- "ports": [{"id": "e6cf13b0-5590-421c-84f2-5a0b169677e1", "type": "DEFAULT", "name": "default"}],
47
+ "trigger": {"id": "279e8228-9b82-43a3-8c31-affc036e3a0b", "merge_behavior": "AWAIT_ATTRIBUTES"},
48
+ "ports": [{"id": "7cd373aa-34d1-402d-bcb4-1c8f329b63e9", "type": "DEFAULT", "name": "default"}],
49
49
  "adornments": None,
50
50
  "attributes": [
51
51
  {
@@ -96,8 +96,8 @@ def test_serialize_node__workflow_input(serialize_node):
96
96
  "test_attributes_serialization",
97
97
  ],
98
98
  },
99
- "trigger": {"id": "b1a5d749-bac0-4f11-8427-191febb2198e", "merge_behavior": "AWAIT_ANY"},
100
- "ports": [{"id": "f013bf3f-49f6-41cd-ac13-7439b71a304a", "type": "DEFAULT", "name": "default"}],
99
+ "trigger": {"id": "b1a5d749-bac0-4f11-8427-191febb2198e", "merge_behavior": "AWAIT_ATTRIBUTES"},
100
+ "ports": [{"id": "d15c7175-139c-4885-8ef8-3e4081db121b", "type": "DEFAULT", "name": "default"}],
101
101
  "adornments": None,
102
102
  "attributes": [
103
103
  {
@@ -160,8 +160,8 @@ def test_serialize_node__node_output(serialize_node):
160
160
  "test_attributes_serialization",
161
161
  ],
162
162
  },
163
- "trigger": {"id": "449072ba-f7b6-4314-ac96-682123f225e5", "merge_behavior": "AWAIT_ANY"},
164
- "ports": [{"id": "ec9a79b8-65c3-4de8-bd29-42c914d72d4f", "type": "DEFAULT", "name": "default"}],
163
+ "trigger": {"id": "449072ba-f7b6-4314-ac96-682123f225e5", "merge_behavior": "AWAIT_ATTRIBUTES"},
164
+ "ports": [{"id": "1879f33e-6efa-46a0-9281-e02bbbc1d413", "type": "DEFAULT", "name": "default"}],
165
165
  "adornments": None,
166
166
  "attributes": [
167
167
  {
@@ -210,8 +210,8 @@ def test_serialize_node__vellum_secret(serialize_node):
210
210
  "test_attributes_serialization",
211
211
  ],
212
212
  },
213
- "trigger": {"id": "3ea0305d-d8ea-45fe-8cf1-f6c1c85e6979", "merge_behavior": "AWAIT_ANY"},
214
- "ports": [{"id": "69e49322-8f8a-42d2-b36f-3fbe53dad616", "type": "DEFAULT", "name": "default"}],
213
+ "trigger": {"id": "3ea0305d-d8ea-45fe-8cf1-f6c1c85e6979", "merge_behavior": "AWAIT_ATTRIBUTES"},
214
+ "ports": [{"id": "881abc1c-ada3-4405-8faf-e167fa2f851b", "type": "DEFAULT", "name": "default"}],
215
215
  "adornments": None,
216
216
  "attributes": [
217
217
  {
@@ -266,8 +266,8 @@ def test_serialize_node__node_execution(serialize_node):
266
266
  "test_attributes_serialization",
267
267
  ],
268
268
  },
269
- "trigger": {"id": "68a91426-4c30-4194-a4c0-cff224d3c0f3", "merge_behavior": "AWAIT_ANY"},
270
- "ports": [{"id": "1794c2eb-5cab-49fe-9354-dfc29f11b374", "type": "DEFAULT", "name": "default"}],
269
+ "trigger": {"id": "68a91426-4c30-4194-a4c0-cff224d3c0f3", "merge_behavior": "AWAIT_ATTRIBUTES"},
270
+ "ports": [{"id": "0e1f78d5-8be1-4533-b2b4-a52777a8d43d", "type": "DEFAULT", "name": "default"}],
271
271
  "adornments": None,
272
272
  "attributes": [
273
273
  {
@@ -40,8 +40,8 @@ def test_serialize_node__annotated_output(serialize_node):
40
40
  "test_outputs_serialization",
41
41
  ],
42
42
  },
43
- "trigger": {"id": "256ef76c-39a6-4a8f-8bda-922f5972a1d4", "merge_behavior": "AWAIT_ANY"},
44
- "ports": [{"id": "378d8939-7a0f-4c87-a849-7fd00067cd2d", "type": "DEFAULT", "name": "default"}],
43
+ "trigger": {"id": "256ef76c-39a6-4a8f-8bda-922f5972a1d4", "merge_behavior": "AWAIT_ATTRIBUTES"},
44
+ "ports": [{"id": "9f391128-5d83-4c46-a62e-2b8bd075f569", "type": "DEFAULT", "name": "default"}],
45
45
  "adornments": None,
46
46
  "attributes": [],
47
47
  "outputs": [
@@ -89,8 +89,8 @@ def test_serialize_node__workflow_input(serialize_node):
89
89
  "test_outputs_serialization",
90
90
  ],
91
91
  },
92
- "trigger": {"id": "b1a5d749-bac0-4f11-8427-191febb2198e", "merge_behavior": "AWAIT_ANY"},
93
- "ports": [{"id": "f013bf3f-49f6-41cd-ac13-7439b71a304a", "type": "DEFAULT", "name": "default"}],
92
+ "trigger": {"id": "b1a5d749-bac0-4f11-8427-191febb2198e", "merge_behavior": "AWAIT_ATTRIBUTES"},
93
+ "ports": [{"id": "d15c7175-139c-4885-8ef8-3e4081db121b", "type": "DEFAULT", "name": "default"}],
94
94
  "adornments": None,
95
95
  "attributes": [],
96
96
  "outputs": [
@@ -155,8 +155,8 @@ def test_serialize_node__node_output_reference(serialize_node):
155
155
  "test_outputs_serialization",
156
156
  ],
157
157
  },
158
- "trigger": {"id": "449072ba-f7b6-4314-ac96-682123f225e5", "merge_behavior": "AWAIT_ANY"},
159
- "ports": [{"id": "ec9a79b8-65c3-4de8-bd29-42c914d72d4f", "type": "DEFAULT", "name": "default"}],
158
+ "trigger": {"id": "449072ba-f7b6-4314-ac96-682123f225e5", "merge_behavior": "AWAIT_ATTRIBUTES"},
159
+ "ports": [{"id": "1879f33e-6efa-46a0-9281-e02bbbc1d413", "type": "DEFAULT", "name": "default"}],
160
160
  "adornments": None,
161
161
  "attributes": [],
162
162
  "outputs": [
@@ -40,10 +40,10 @@ def test_serialize_node__basic(serialize_node):
40
40
  "test_ports_serialization",
41
41
  ],
42
42
  },
43
- "trigger": {"id": "9d3a1b3d-4a38-4f2e-bbf1-dd8be152bce8", "merge_behavior": "AWAIT_ANY"},
43
+ "trigger": {"id": "9d3a1b3d-4a38-4f2e-bbf1-dd8be152bce8", "merge_behavior": "AWAIT_ATTRIBUTES"},
44
44
  "ports": [
45
45
  {
46
- "id": "4fbf0fff-a42e-4410-852a-238b5059198e",
46
+ "id": "89dccfa5-cc1a-4612-bd87-86cb444f6dd4",
47
47
  "name": "default",
48
48
  "type": "DEFAULT",
49
49
  }
@@ -87,10 +87,10 @@ def test_serialize_node__if(serialize_node):
87
87
  "test_ports_serialization",
88
88
  ],
89
89
  },
90
- "trigger": {"id": "a8afaebc-7333-4e3f-b221-24452b4a1d47", "merge_behavior": "AWAIT_ANY"},
90
+ "trigger": {"id": "a8afaebc-7333-4e3f-b221-24452b4a1d47", "merge_behavior": "AWAIT_ATTRIBUTES"},
91
91
  "ports": [
92
92
  {
93
- "id": "7605b4c0-a432-4517-b759-5858045a5146",
93
+ "id": "d713e346-b55a-4871-91de-f1470bfb3479",
94
94
  "type": "IF",
95
95
  "name": "if_branch",
96
96
  "expression": {
@@ -150,10 +150,10 @@ def test_serialize_node__if_else(serialize_node):
150
150
  "test_ports_serialization",
151
151
  ],
152
152
  },
153
- "trigger": {"id": "5b4f6553-69ca-4844-bbe4-9e5594bc8cae", "merge_behavior": "AWAIT_ANY"},
153
+ "trigger": {"id": "5b4f6553-69ca-4844-bbe4-9e5594bc8cae", "merge_behavior": "AWAIT_ATTRIBUTES"},
154
154
  "ports": [
155
155
  {
156
- "id": "3eeb7f03-7d65-45aa-b0e5-c7a453f5cbdf",
156
+ "id": "1b02eabf-f2bd-45bd-ab26-fe4034ed5978",
157
157
  "type": "IF",
158
158
  "name": "if_branch",
159
159
  "expression": {
@@ -173,7 +173,7 @@ def test_serialize_node__if_else(serialize_node):
173
173
  },
174
174
  },
175
175
  {
176
- "id": "b8472c77-74d5-4432-bf8b-6cd65d3dde06",
176
+ "id": "2c858834-8f65-4b6b-89d8-07b394764666",
177
177
  "type": "ELSE",
178
178
  "name": "else_branch",
179
179
  "expression": None,
@@ -184,7 +184,6 @@ def test_serialize_node__if_else(serialize_node):
184
184
  "outputs": [],
185
185
  },
186
186
  serialized_node,
187
- ignore_order=True,
188
187
  )
189
188
 
190
189
 
@@ -220,10 +219,10 @@ def test_serialize_node__if_elif_else(serialize_node):
220
219
  "test_ports_serialization",
221
220
  ],
222
221
  },
223
- "trigger": {"id": "22d55b5b-3545-4498-8658-9d0464202e78", "merge_behavior": "AWAIT_ANY"},
222
+ "trigger": {"id": "22d55b5b-3545-4498-8658-9d0464202e78", "merge_behavior": "AWAIT_ATTRIBUTES"},
224
223
  "ports": [
225
224
  {
226
- "id": "f6e0a2c0-192d-452f-bde4-32fb938e91bc",
225
+ "id": "dcaa1d8e-01c6-48b4-a851-8828b49d0f57",
227
226
  "type": "IF",
228
227
  "name": "if_branch",
229
228
  "expression": {
@@ -243,7 +242,7 @@ def test_serialize_node__if_elif_else(serialize_node):
243
242
  },
244
243
  },
245
244
  {
246
- "id": "7e44de04-e816-4da8-9251-cf389442a5d6",
245
+ "id": "e00351f8-f1f9-4f7b-bf7a-c24e3db40d6c",
247
246
  "type": "ELIF",
248
247
  "name": "elif_branch",
249
248
  "expression": {
@@ -263,7 +262,7 @@ def test_serialize_node__if_elif_else(serialize_node):
263
262
  },
264
263
  },
265
264
  {
266
- "id": "00db3698-ddf5-413b-8408-fff664c212d7",
265
+ "id": "90caeb67-5ab7-46aa-b65e-01c27f549eed",
267
266
  "type": "ELSE",
268
267
  "expression": None,
269
268
  "name": "else_branch",
@@ -274,7 +273,6 @@ def test_serialize_node__if_elif_else(serialize_node):
274
273
  "outputs": [],
275
274
  },
276
275
  serialized_node,
277
- ignore_order=True,
278
276
  )
279
277
 
280
278
 
@@ -323,10 +321,10 @@ def test_serialize_node__node_output_reference(serialize_node):
323
321
  ],
324
322
  },
325
323
  "base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
326
- "trigger": {"id": "449072ba-f7b6-4314-ac96-682123f225e5", "merge_behavior": "AWAIT_ANY"},
324
+ "trigger": {"id": "449072ba-f7b6-4314-ac96-682123f225e5", "merge_behavior": "AWAIT_ATTRIBUTES"},
327
325
  "ports": [
328
326
  {
329
- "id": "ec9a79b8-65c3-4de8-bd29-42c914d72d4f",
327
+ "id": "eecccf2b-82af-4559-8a1b-0c5de5890ac2",
330
328
  "type": "IF",
331
329
  "name": "if_branch",
332
330
  "expression": {
@@ -387,10 +385,10 @@ def test_serialize_node__vellum_secret_reference(serialize_node):
387
385
  ],
388
386
  },
389
387
  "base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
390
- "trigger": {"id": "2709539b-352d-455a-bb86-dba070b59aa1", "merge_behavior": "AWAIT_ANY"},
388
+ "trigger": {"id": "2709539b-352d-455a-bb86-dba070b59aa1", "merge_behavior": "AWAIT_ATTRIBUTES"},
391
389
  "ports": [
392
390
  {
393
- "id": "a353d3f6-2a1f-457c-b8d1-13db5b45be8f",
391
+ "id": "b6387c9c-2cce-4667-9567-97e433503e72",
394
392
  "type": "IF",
395
393
  "name": "if_branch",
396
394
  "expression": {
@@ -456,10 +454,10 @@ def test_serialize_node__execution_count_reference(serialize_node):
456
454
  ],
457
455
  },
458
456
  "base": {"name": "BaseNode", "module": ["vellum", "workflows", "nodes", "bases", "base"]},
459
- "trigger": {"id": "68a91426-4c30-4194-a4c0-cff224d3c0f3", "merge_behavior": "AWAIT_ANY"},
457
+ "trigger": {"id": "68a91426-4c30-4194-a4c0-cff224d3c0f3", "merge_behavior": "AWAIT_ATTRIBUTES"},
460
458
  "ports": [
461
459
  {
462
- "id": "1794c2eb-5cab-49fe-9354-dfc29f11b374",
460
+ "id": "13ab561e-09c9-48ed-b22b-a4de4d9df887",
463
461
  "type": "IF",
464
462
  "name": "if_branch",
465
463
  "expression": {
@@ -473,7 +471,7 @@ def test_serialize_node__execution_count_reference(serialize_node):
473
471
  "type": "CONSTANT_VALUE",
474
472
  "value": {
475
473
  "type": "NUMBER",
476
- "value": 5,
474
+ "value": 5.0,
477
475
  },
478
476
  },
479
477
  },
@@ -518,10 +516,10 @@ def test_serialize_node__null(serialize_node):
518
516
  "test_ports_serialization",
519
517
  ],
520
518
  },
521
- "trigger": {"id": "26b257ed-6a7d-4ca3-a5c8-d17ba1e776ba", "merge_behavior": "AWAIT_ANY"},
519
+ "trigger": {"id": "26b257ed-6a7d-4ca3-a5c8-d17ba1e776ba", "merge_behavior": "AWAIT_ATTRIBUTES"},
522
520
  "ports": [
523
521
  {
524
- "id": "51932d23-492e-4b3b-8b03-6ad7303a80c9",
522
+ "id": "76a2867d-dd4c-409c-b97f-94b168a2233a",
525
523
  "type": "IF",
526
524
  "name": "if_branch",
527
525
  "expression": {
@@ -578,10 +576,10 @@ def test_serialize_node__between(serialize_node):
578
576
  "test_ports_serialization",
579
577
  ],
580
578
  },
581
- "trigger": {"id": "086a355e-d9ef-4039-af35-9f1211497b32", "merge_behavior": "AWAIT_ANY"},
579
+ "trigger": {"id": "086a355e-d9ef-4039-af35-9f1211497b32", "merge_behavior": "AWAIT_ATTRIBUTES"},
582
580
  "ports": [
583
581
  {
584
- "id": "a86bd19f-a9f7-45c3-80ff-73330b1b75af",
582
+ "id": "71493245-0778-46f2-8bda-863af50d910d",
585
583
  "type": "IF",
586
584
  "name": "if_branch",
587
585
  "expression": {
@@ -595,14 +593,14 @@ def test_serialize_node__between(serialize_node):
595
593
  "type": "CONSTANT_VALUE",
596
594
  "value": {
597
595
  "type": "NUMBER",
598
- "value": 1,
596
+ "value": 1.0,
599
597
  },
600
598
  },
601
599
  "rhs": {
602
600
  "type": "CONSTANT_VALUE",
603
601
  "value": {
604
602
  "type": "NUMBER",
605
- "value": 10,
603
+ "value": 10.0,
606
604
  },
607
605
  },
608
606
  },
@@ -647,10 +645,10 @@ def test_serialize_node__or(serialize_node):
647
645
  "test_ports_serialization",
648
646
  ],
649
647
  },
650
- "trigger": {"id": "dc245f37-9be7-4097-a50a-4f7196e24313", "merge_behavior": "AWAIT_ANY"},
648
+ "trigger": {"id": "dc245f37-9be7-4097-a50a-4f7196e24313", "merge_behavior": "AWAIT_ATTRIBUTES"},
651
649
  "ports": [
652
650
  {
653
- "id": "652a42f9-f4e7-4791-8167-8903ff839520",
651
+ "id": "9b4511aa-2d57-44f9-8156-d41dd8b5f98e",
654
652
  "type": "IF",
655
653
  "name": "if_branch",
656
654
  "expression": {
@@ -731,10 +729,10 @@ def test_serialize_node__and_then_or(serialize_node):
731
729
  "test_ports_serialization",
732
730
  ],
733
731
  },
734
- "trigger": {"id": "33cfa8f4-bfc5-40b3-8df8-ab86371c26e0", "merge_behavior": "AWAIT_ANY"},
732
+ "trigger": {"id": "33cfa8f4-bfc5-40b3-8df8-ab86371c26e0", "merge_behavior": "AWAIT_ATTRIBUTES"},
735
733
  "ports": [
736
734
  {
737
- "id": "42c89e95-6bbf-4e85-8f26-d4b6fc55d99c",
735
+ "id": "91174ae5-6ce0-4f6c-9c05-ecfbfb4058f6",
738
736
  "type": "IF",
739
737
  "name": "if_branch",
740
738
  "expression": {
@@ -834,10 +832,10 @@ def test_serialize_node__parenthesized_and_then_or(serialize_node):
834
832
  "test_ports_serialization",
835
833
  ],
836
834
  },
837
- "trigger": {"id": "91ac3b05-c931-4a4c-bb48-c2ba0e883867", "merge_behavior": "AWAIT_ANY"},
835
+ "trigger": {"id": "91ac3b05-c931-4a4c-bb48-c2ba0e883867", "merge_behavior": "AWAIT_ATTRIBUTES"},
838
836
  "ports": [
839
837
  {
840
- "id": "cc07394b-f20b-4370-8a5b-af90e847a73f",
838
+ "id": "915f923b-f398-48af-93a4-5f7e66b8aa76",
841
839
  "type": "IF",
842
840
  "name": "if_branch",
843
841
  "expression": {
@@ -937,10 +935,10 @@ def test_serialize_node__or_then_and(serialize_node):
937
935
  "test_ports_serialization",
938
936
  ],
939
937
  },
940
- "trigger": {"id": "dfa53d32-36cc-4b1d-adad-d4de21ac1e5a", "merge_behavior": "AWAIT_ANY"},
938
+ "trigger": {"id": "dfa53d32-36cc-4b1d-adad-d4de21ac1e5a", "merge_behavior": "AWAIT_ATTRIBUTES"},
941
939
  "ports": [
942
940
  {
943
- "id": "daaff604-da1e-45e6-b3df-5bc8de8d55fe",
941
+ "id": "413bba3d-6a16-4f96-ba45-b5372f819277",
944
942
  "type": "IF",
945
943
  "name": "if_branch",
946
944
  "expression": {
@@ -34,10 +34,10 @@ def test_serialize_node__basic(serialize_node):
34
34
  "test_trigger_serialization",
35
35
  ],
36
36
  },
37
- "trigger": {"id": "9d3a1b3d-4a38-4f2e-bbf1-dd8be152bce8", "merge_behavior": "AWAIT_ANY"},
37
+ "trigger": {"id": "9d3a1b3d-4a38-4f2e-bbf1-dd8be152bce8", "merge_behavior": "AWAIT_ATTRIBUTES"},
38
38
  "ports": [
39
39
  {
40
- "id": "4fbf0fff-a42e-4410-852a-238b5059198e",
40
+ "id": "89dccfa5-cc1a-4612-bd87-86cb444f6dd4",
41
41
  "name": "default",
42
42
  "type": "DEFAULT",
43
43
  }
@@ -80,7 +80,7 @@ def test_serialize_node__await_any(serialize_node):
80
80
  "trigger": {"id": "ffa72187-9a18-453f-ae55-b77aad332630", "merge_behavior": "AWAIT_ANY"},
81
81
  "ports": [
82
82
  {
83
- "id": "3e219c0a-e5f8-443a-ac78-1a458b189009",
83
+ "id": "38b83138-cb07-40cb-82d2-83982ded6883",
84
84
  "name": "default",
85
85
  "type": "DEFAULT",
86
86
  }
@@ -123,7 +123,7 @@ def test_serialize_node__await_all(serialize_node):
123
123
  "trigger": {"id": "62074276-c817-476d-b59d-da523ae3f218", "merge_behavior": "AWAIT_ALL"},
124
124
  "ports": [
125
125
  {
126
- "id": "9797e93f-9fe6-48b2-a48e-476abbd20e32",
126
+ "id": "9edef179-a1c2-4624-b185-593bb84f08a0",
127
127
  "name": "default",
128
128
  "type": "DEFAULT",
129
129
  }
@@ -672,7 +672,7 @@ def test_serialize_workflow():
672
672
  "source_node_id": "9b619e4d-b0a7-4121-9060-100d457868cb",
673
673
  "source_handle_id": "3a45b81f-95e4-4cbd-8997-bfdbe30251e8",
674
674
  "target_node_id": "0d959311-c836-4641-a867-58f63df9dfea",
675
- "target_handle_id": "7beba198-c452-4749-a38a-ea9420d84e14",
675
+ "target_handle_id": "139c6965-68f0-4bae-a6d9-3ee68d6347c0",
676
676
  "type": "DEFAULT",
677
677
  },
678
678
  {
@@ -680,7 +680,7 @@ def test_serialize_workflow():
680
680
  "source_node_id": "9b619e4d-b0a7-4121-9060-100d457868cb",
681
681
  "source_handle_id": "7202f702-1ebc-4067-ab1e-ec67e49158ee",
682
682
  "target_node_id": "68c02b7c-5077-4087-803d-841474a8081f",
683
- "target_handle_id": "1dc4eebe-b6db-4229-96e5-115ff8cedb76",
683
+ "target_handle_id": "6d2c998b-1525-475f-9327-d8495b5e2692",
684
684
  "type": "DEFAULT",
685
685
  },
686
686
  {
@@ -688,7 +688,7 @@ def test_serialize_workflow():
688
688
  "source_node_id": "9b619e4d-b0a7-4121-9060-100d457868cb",
689
689
  "source_handle_id": "cf45705d-1a47-43a6-9d24-a7fdf78baae0",
690
690
  "target_node_id": "8df781b1-ff28-48a5-98a2-d7d796b932b0",
691
- "target_handle_id": "b73c39be-cbfe-4225-86e6-e6e4c161881e",
691
+ "target_handle_id": "4584996a-4c1e-45d0-8f49-6918d69b755e",
692
692
  "type": "DEFAULT",
693
693
  },
694
694
  {
@@ -696,7 +696,7 @@ def test_serialize_workflow():
696
696
  "source_node_id": "9b619e4d-b0a7-4121-9060-100d457868cb",
697
697
  "source_handle_id": "f04610dd-61cf-41b0-b337-2235e101cdb0",
698
698
  "target_node_id": "ed7caf01-9ae7-47a3-b15a-16697abaf486",
699
- "target_handle_id": "76fe7aec-5cd4-4c1a-b386-cfe09ebe66e4",
699
+ "target_handle_id": "8da86a9b-0d22-442c-b622-63afe1b569ab",
700
700
  "type": "DEFAULT",
701
701
  },
702
702
  {
@@ -704,7 +704,7 @@ def test_serialize_workflow():
704
704
  "source_node_id": "9b619e4d-b0a7-4121-9060-100d457868cb",
705
705
  "source_handle_id": "f9dde637-ea90-465f-a871-caf8380ae377",
706
706
  "target_node_id": "148c61bd-e8b0-4d4b-8734-b043a72b90ed",
707
- "target_handle_id": "c88839af-3a79-4310-abbd-e1553d981dce",
707
+ "target_handle_id": "f81bbac8-d7f1-4bfd-95ec-9d0b93e28114",
708
708
  "type": "DEFAULT",
709
709
  },
710
710
  {
@@ -123,7 +123,7 @@ def test_serialize_workflow(vellum_client):
123
123
  "source_node_id": "f1e4678f-c470-400b-a40e-c8922cc99a86",
124
124
  "source_handle_id": "40201804-8beb-43ad-8873-a027759512f1",
125
125
  "target_node_id": "c2ed23f7-f6cb-4a56-a91c-2e5f9d8fda7f",
126
- "target_handle_id": "b7bfb298-959a-4d2b-8b85-bbd0d2522703",
126
+ "target_handle_id": "9d3a1b3d-4a38-4f2e-bbf1-dd8be152bce8",
127
127
  "type": "DEFAULT",
128
128
  },
129
129
  {