vellum-ai 1.3.7__py3-none-any.whl → 1.3.9__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 +2 -2
- vellum/client/reference.md +71 -0
- vellum/client/resources/workflows/client.py +80 -0
- vellum/client/resources/workflows/raw_client.py +98 -0
- vellum/client/types/node_execution_rejected_body.py +1 -0
- vellum/client/types/vellum_error.py +2 -1
- vellum/client/types/vellum_error_request.py +2 -1
- vellum/client/types/workflow_event_error.py +1 -0
- vellum/client/types/workflow_execution_rejected_body.py +1 -0
- vellum/workflows/descriptors/exceptions.py +18 -1
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +86 -0
- vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py +87 -7
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +60 -0
- vellum/workflows/runner/runner.py +16 -0
- vellum/workflows/utils/tests/test_vellum_variables.py +7 -1
- vellum/workflows/utils/vellum_variables.py +42 -3
- {vellum_ai-1.3.7.dist-info → vellum_ai-1.3.9.dist-info}/METADATA +1 -1
- {vellum_ai-1.3.7.dist-info → vellum_ai-1.3.9.dist-info}/RECORD +42 -42
- vellum_ee/workflows/display/editor/types.py +2 -0
- vellum_ee/workflows/display/nodes/base_node_display.py +42 -14
- vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +64 -0
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/retry_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py +70 -0
- vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +12 -12
- vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py +4 -4
- vellum_ee/workflows/display/nodes/vellum/try_node.py +1 -1
- vellum_ee/workflows/display/tests/test_base_workflow_display.py +46 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +1 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +8 -8
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +2 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py +2 -1
- vellum_ee/workflows/display/utils/events.py +7 -1
- vellum_ee/workflows/display/utils/expressions.py +33 -19
- vellum_ee/workflows/display/utils/tests/test_events.py +4 -4
- vellum_ee/workflows/display/workflows/base_workflow_display.py +1 -1
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +10 -10
- {vellum_ai-1.3.7.dist-info → vellum_ai-1.3.9.dist-info}/LICENSE +0 -0
- {vellum_ai-1.3.7.dist-info → vellum_ai-1.3.9.dist-info}/WHEEL +0 -0
- {vellum_ai-1.3.7.dist-info → vellum_ai-1.3.9.dist-info}/entry_points.txt +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
import pytest
|
2
2
|
from typing import List, Optional
|
3
3
|
|
4
|
-
from vellum import ChatMessage, SearchResult, VellumAudio, VellumDocument, VellumImage
|
4
|
+
from vellum import ChatMessage, SearchResult, VellumAudio, VellumDocument, VellumImage, VellumValue
|
5
5
|
from vellum.workflows.types.core import Json
|
6
6
|
from vellum.workflows.utils.vellum_variables import (
|
7
7
|
primitive_type_to_vellum_variable_type,
|
@@ -30,6 +30,12 @@ from vellum.workflows.utils.vellum_variables import (
|
|
30
30
|
(Optional[VellumAudio], "AUDIO"),
|
31
31
|
(VellumImage, "IMAGE"),
|
32
32
|
(Optional[VellumImage], "IMAGE"),
|
33
|
+
(list[ChatMessage], "CHAT_HISTORY"),
|
34
|
+
(Optional[list[ChatMessage]], "CHAT_HISTORY"),
|
35
|
+
(list[SearchResult], "SEARCH_RESULTS"),
|
36
|
+
(Optional[list[SearchResult]], "SEARCH_RESULTS"),
|
37
|
+
(list[VellumValue], "ARRAY"),
|
38
|
+
(Optional[list[VellumValue]], "ARRAY"),
|
33
39
|
],
|
34
40
|
)
|
35
41
|
def test_primitive_type_to_vellum_variable_type(type_, expected):
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import typing
|
2
|
-
from typing import List, Tuple, Type, Union, get_args, get_origin
|
2
|
+
from typing import Any, List, Tuple, Type, Union, get_args, get_origin
|
3
3
|
|
4
4
|
from vellum import (
|
5
5
|
ChatMessage,
|
@@ -86,6 +86,11 @@ def primitive_type_to_vellum_variable_type(type_: Union[Type, BaseDescriptor]) -
|
|
86
86
|
return "DOCUMENT"
|
87
87
|
elif _is_type_optionally_in(type_, (VellumError, VellumErrorRequest)):
|
88
88
|
return "ERROR"
|
89
|
+
|
90
|
+
builtin_list_type = _builtin_list_to_vellum_type(type_)
|
91
|
+
if builtin_list_type:
|
92
|
+
return builtin_list_type
|
93
|
+
|
89
94
|
elif _is_type_optionally_in(type_, (List[ChatMessage], List[ChatMessageRequest])):
|
90
95
|
return "CHAT_HISTORY"
|
91
96
|
elif _is_type_optionally_in(type_, (List[SearchResult], List[SearchResultRequest])):
|
@@ -128,7 +133,7 @@ def vellum_variable_type_to_openapi_type(vellum_type: VellumVariableType) -> str
|
|
128
133
|
return "object"
|
129
134
|
|
130
135
|
|
131
|
-
def _is_type_optionally_equal(type_: Type, target_type:
|
136
|
+
def _is_type_optionally_equal(type_: Type, target_type: Any) -> bool:
|
132
137
|
if type_ == target_type:
|
133
138
|
return True
|
134
139
|
|
@@ -147,7 +152,7 @@ def _is_type_optionally_equal(type_: Type, target_type: Type) -> bool:
|
|
147
152
|
return _is_type_optionally_equal(source_type, target_type)
|
148
153
|
|
149
154
|
|
150
|
-
def _is_type_optionally_in(type_: Type, target_types: Tuple[
|
155
|
+
def _is_type_optionally_in(type_: Type, target_types: Tuple[Any, ...]) -> bool:
|
151
156
|
return any(_is_type_optionally_equal(type_, target_type) for target_type in target_types)
|
152
157
|
|
153
158
|
|
@@ -181,3 +186,37 @@ def _is_subtype(source_type: Type, target_type: Type) -> bool:
|
|
181
186
|
return True
|
182
187
|
|
183
188
|
return False
|
189
|
+
|
190
|
+
|
191
|
+
def _unwrap_optional(type_: Type) -> Type:
|
192
|
+
origin = get_origin(type_)
|
193
|
+
if origin is typing.Union:
|
194
|
+
args = get_args(type_)
|
195
|
+
if len(args) == 2:
|
196
|
+
if args[1] is type(None):
|
197
|
+
return args[0]
|
198
|
+
if args[0] is type(None):
|
199
|
+
return args[1]
|
200
|
+
return type_
|
201
|
+
|
202
|
+
|
203
|
+
def _builtin_list_to_vellum_type(type_: Type) -> Union[str, None]:
|
204
|
+
candidate = _unwrap_optional(type_)
|
205
|
+
origin = get_origin(candidate)
|
206
|
+
if origin in (list, typing.List):
|
207
|
+
args = get_args(candidate)
|
208
|
+
if len(args) == 1:
|
209
|
+
item_type = args[0]
|
210
|
+
if _is_type_optionally_equal(item_type, ChatMessage) or _is_type_optionally_equal(
|
211
|
+
item_type, ChatMessageRequest
|
212
|
+
):
|
213
|
+
return "CHAT_HISTORY"
|
214
|
+
if _is_type_optionally_equal(item_type, SearchResult) or _is_type_optionally_equal(
|
215
|
+
item_type, SearchResultRequest
|
216
|
+
):
|
217
|
+
return "SEARCH_RESULTS"
|
218
|
+
if _is_type_optionally_equal(item_type, VellumValue) or _is_type_optionally_equal(
|
219
|
+
item_type, VellumValueRequest
|
220
|
+
):
|
221
|
+
return "ARRAY"
|
222
|
+
return None
|
@@ -27,13 +27,13 @@ vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
27
27
|
vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
28
|
vellum_ee/workflows/display/base.py,sha256=R3f2T8FlZrXn2FawAmpVuLB3fKFWw11mCUulWAyIKA0,1912
|
29
29
|
vellum_ee/workflows/display/editor/__init__.py,sha256=MSAgY91xCEg2neH5d8jXx5wRdR962ftZVa6vO9BGq9k,167
|
30
|
-
vellum_ee/workflows/display/editor/types.py,sha256=
|
30
|
+
vellum_ee/workflows/display/editor/types.py,sha256=rmaNXkNZUNRgK-mJJ_g1-Fm3OGxoQfqEB7zn-zzgJtc,664
|
31
31
|
vellum_ee/workflows/display/exceptions.py,sha256=Oys39dHoW-s-1dnlRSZxTntMq8_macj-b2CT_6dqzJs,355
|
32
32
|
vellum_ee/workflows/display/nodes/__init__.py,sha256=jI1aPBQf8DkmrYoZ4O-wR1duqZByOf5mDFmo_wFJPE4,307
|
33
|
-
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=
|
33
|
+
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=TVzb7NMGsid4HMss7iAeUwdxYXJ7-cW5KBiQXmFA2ns,19453
|
34
34
|
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=jI_kUi9LnNLDpY63QtlC4TfN8P571VN4LpzH0I1ZtLk,1149
|
35
35
|
vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
|
-
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=
|
36
|
+
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=JLa9nlG38dLfCo1Y8ISsJ21hrfDyy4-ae3pZ9H01yFs,5578
|
37
37
|
vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
|
38
38
|
vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
|
39
39
|
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLPyRNe8YIrx3Yo9HeeW-aXXFk,1668
|
@@ -42,7 +42,7 @@ vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=FHhPoGmmn
|
|
42
42
|
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=GfwA2Tn0OpdIUiPW9tD2dyv33e3M8yhGt9VfOeN81bU,5146
|
43
43
|
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=dtO9A-rjbDEJrywwrOxwEXahqrW-S493OIDHOti9Sjs,11498
|
44
44
|
vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=8tSb8qGVoRIELubu0qPeoDlt1LpiIqc6d9_30GWRd_k,2266
|
45
|
-
vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=
|
45
|
+
vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=z4oeTgKnMGVaGig8XOZm5B_xYL4H7zweYlFweCbhnyA,3000
|
46
46
|
vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=9_AslWjzj4RHH2sq3SIaq9FU0NCg7ex5TIWrNMybqXg,2173
|
47
47
|
vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=20tahU75zKImm6sAwLIYA9VEC6aNATjZdwA2beNnCIk,11949
|
48
48
|
vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=qy_EtBIAHIhju68PA-skm-WbFnaNEuDoxkSMWRl2SpQ,5870
|
@@ -50,7 +50,7 @@ vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=kwLqptup7bzYUDkGDbpc
|
|
50
50
|
vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=xMHaPfTSZWYprQenlHm2g47u0a5O9Me_dhAjfqo8nKQ,3116
|
51
51
|
vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=6PcAFA_EJn7vEMdqgoRjYTLHwnXCrJv80B10zuUx4jE,1026
|
52
52
|
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=uo4YZRV48iX4peGAA1xkGniSPrepywvW_gS7codt-VQ,3378
|
53
|
-
vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=
|
53
|
+
vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=NtCvRblVJDSpbm9qCNZ-zgJ-iKEc5tOrQbbtwjrDr_Q,3283
|
54
54
|
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=RMBW2cKbwCBPXqrkEo8zAHlMltotZJz3S8QjWnBgiEg,12161
|
55
55
|
vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=n6gaTWOkiycUExbO5Vk_ZYNXRW6_V4LNfXdxPDevWIs,2800
|
56
56
|
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=NwyFvpkk87nBI5KbncAVQZdyimvN2q4Ko7hDg7jmbnA,3181
|
@@ -60,24 +60,24 @@ vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha25
|
|
60
60
|
vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=540FoWMpJ3EN_DPjHsr9ODJWCRVcUa5hZBn-5T2GiHU,1665
|
61
61
|
vellum_ee/workflows/display/nodes/vellum/tests/test_inline_subworkflow_node.py,sha256=SKOYan-dxY4gsO0R4JyQUyWrABHBN8XImKw9Eeo4wGo,3535
|
62
62
|
vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py,sha256=uiMB0cOxKZzos7YKnj4ef4DFa2bOvZJWIv-hfbUV6Go,1218
|
63
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py,sha256=
|
64
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=
|
63
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py,sha256=54oatuBB98Dfbr08NqZU8ZNhfQdJWhODIwjsegPPJJw,6376
|
64
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=kXp0ZqTXEsEvSs2emM1a5C0-y6KZKhj0iWTCNtZ_8m8,14053
|
65
65
|
vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py,sha256=WyqX_g-jN4BOVHIto_HDRVb-uWCmDTaiCwHho4uYKOM,1954
|
66
66
|
vellum_ee/workflows/display/nodes/vellum/tests/test_search_node.py,sha256=KvByxgbUkVyfPIVxTUBUk6a92JiJMi8eReZWxzfPExU,3864
|
67
67
|
vellum_ee/workflows/display/nodes/vellum/tests/test_subworkflow_deployment_node.py,sha256=BUzHJgjdWnPeZxjFjHfDBKnbFjYjnbXPjc-1hne1B2Y,3965
|
68
68
|
vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py,sha256=LSk2gx9TpGXbAqKe8dggQW8yJZqj-Cf0EGJFeGGlEcw,3321
|
69
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py,sha256=
|
69
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py,sha256=GGEthHhl819cs5QJGNL47bC6wdQpkf-S_EXYhtahQJA,24819
|
70
70
|
vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=Khjsb53PKpZuyhKoRMgKAL45eGp5hZqXvHmVeQWRw4w,2289
|
71
71
|
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=rHybfUAWwa0LlstQTNthGb-zYXrUCLADFtn_4SGsbw8,4807
|
72
|
-
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=
|
72
|
+
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=SspL3yL8e1HvqwDJ7Vt11ZOYxEjT2jbmEFKs8M57VvE,4088
|
73
73
|
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=oICunzyaXPs0tYnW5zH1r93Bx35MSH7mcD-n0DEWRok,4978
|
74
74
|
vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
|
-
vellum_ee/workflows/display/tests/test_base_workflow_display.py,sha256
|
75
|
+
vellum_ee/workflows/display/tests/test_base_workflow_display.py,sha256=-LYQw5nWqTehhlCN0IxfurPNFyGQJB4KnlxwJzQozFI,17624
|
76
76
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
77
77
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
78
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=Y-ajeT65b5varmrZCw6L3hir4hJCFq-eO0jZfRcrs7g,1886
|
79
79
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=bD9AtBo7Pz1Drbh420NR0VSiHBfExw_UtNRPCiAqki0,13967
|
80
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=
|
80
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=TwJ8N8H2gJJ-gQ5YURNoCBrykN4pKxlrloEtkRHPlzY,25144
|
81
81
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=O1CIKMmRTaMaT3IhjwCAiMz1ZThPg9lAUbSiZkx_E8c,6321
|
82
82
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=fPXcX-tWQ0UMuEyOFAylgi7pWiE7lZWk9vrShlTExik,40053
|
83
83
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=FLvcD8eoABHUPv08oSpIp_P-65sw2gl4whMXEJJj4f8,6785
|
@@ -88,9 +88,9 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_stat
|
|
88
88
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=03Mk8OE3kWcoZW9lNBe7v4KThCYN-pXg5Rjbkfx-jOQ,6031
|
89
89
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=-T0cd2jx1bC0ZNtAESF78fnYD_0nOqo8zMMLwRHUTRM,6227
|
90
90
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=LnZp1YXDn-AaaxiYgxrhCQeH-rLgmlu_r_lvM65EQ5w,7517
|
91
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256
|
92
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=
|
93
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=
|
91
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=-A9CAnzIhPMn44l_dwZcofBXBPNFa-oHke9p0w3W5PA,26358
|
92
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=gn7kisqAEG9JCZ18V88qMGvlcsTulSwpWvvEwjCfh6Y,21871
|
93
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=ALNOn5BdcWxw0myi6pXi5IwWtTE9H2CGrodP1BANuAg,16790
|
94
94
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=UnfWTfKN8DrOLpjCfWMgENJBjgNLWcRVfexbwERKY-c,8501
|
95
95
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=SGlBiwohTTuf7oXqO3R1lP6u7gPea8Elt1CpZU_W9Bk,21482
|
96
96
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=JKfYNBCmy7n6v2fd6NyYGHI1_TJRlfDNWiZMvHrdCWU,13079
|
@@ -98,10 +98,10 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_
|
|
98
98
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=ddPa8gNBYH2tWk92ymngY7M8n74J-8CEre50HISP_-g,7877
|
99
99
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=A7Ef8P1-Nyvsb97bumKT9W2R1LuZaY9IKFV-7iRueog,4010
|
100
100
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py,sha256=oVXCjkU0G56QJmqnd_xIwF3D9bhJwALFibM2wmRhwUk,3739
|
101
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py,sha256=
|
101
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py,sha256=1GiF3XgJ85vE05_nZFo66snNuqTt0p1c22gNI9c_BXY,26442
|
102
102
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_mcp_serialization.py,sha256=QhQbijeCnFeX1i3SMjHJg2WVAEt5JEO3dhFRv-mofdA,2458
|
103
103
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_parent_input.py,sha256=__LX4cuzbyZp_1wc-SI8X_J0tnhOkCEmRVUWLKI5aQM,4578
|
104
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=
|
104
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=VB5c6U0GRUxPm9FbzgKYIpoZfoIU9szAWUQJ5L-4Lug,10187
|
105
105
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py,sha256=XIZZr5POo2NLn2uEWm9EC3rejeBMoO4X-JtzTH6mvp4,4074
|
106
106
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=pLCyMScV88DTBXRH7jXaXOEA1GBq8NIipCUFwIAWnwI,2771
|
107
107
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=exT7U-axwtYgFylagScflSQLJEND51qIAx2UATju6JM,6023
|
@@ -111,19 +111,19 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_workflow_input_par
|
|
111
111
|
vellum_ee/workflows/display/types.py,sha256=cyZruu4sXAdHjwuFc7dydM4DcFNf-pp_CmulXItxac4,3679
|
112
112
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
113
113
|
vellum_ee/workflows/display/utils/auto_layout.py,sha256=f4GiLn_LazweupfqTpubcdtdfE_vrOcmZudSsnYIY9E,3906
|
114
|
-
vellum_ee/workflows/display/utils/events.py,sha256=
|
114
|
+
vellum_ee/workflows/display/utils/events.py,sha256=DE33uoKW78BZtITJ6L22dMZN3KR1BuZBVC98C_gIyzU,1943
|
115
115
|
vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
|
116
|
-
vellum_ee/workflows/display/utils/expressions.py,sha256=
|
116
|
+
vellum_ee/workflows/display/utils/expressions.py,sha256=UoZKiZy2Rhx5Hp2e2J2ipSdQCIQfkAOL_tIxHqLCrAM,20299
|
117
117
|
vellum_ee/workflows/display/utils/registry.py,sha256=1qXiBTdsnro6FeCX0FGBEK7CIf6wa--Jt50iZ_nEp_M,3460
|
118
118
|
vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
119
119
|
vellum_ee/workflows/display/utils/tests/test_auto_layout.py,sha256=vfXI769418s9vda5Gb5NFBH747WMOwSgHRXeLCTLVm8,2356
|
120
|
-
vellum_ee/workflows/display/utils/tests/test_events.py,sha256=
|
120
|
+
vellum_ee/workflows/display/utils/tests/test_events.py,sha256=42IEBnMbaQrH8gigw5hXIt_kG3rVvrSMop9QYiL2xDs,4586
|
121
121
|
vellum_ee/workflows/display/utils/vellum.py,sha256=sZwU0KdmZZTKWW62SyxJTl2tC8tN6p_BpZ-lDoinV-U,5670
|
122
122
|
vellum_ee/workflows/display/vellum.py,sha256=J2mdJZ1sdLW535DDUkq_Vm8Z572vhuxHxVZF9deKSdk,391
|
123
123
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=JTB9ObEV3l4gGGdtfBHwVJtTTKC22uj-a-XjTVwXCyA,148
|
124
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
124
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=4aC042Fmy9h-QUD6Z6inLbrR-7wE0t_V3NMb44Y0wek,43692
|
125
125
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=gxz76AeCqgAZ9D2lZeTiZzxY9eMgn3qOSfVgiqYcOh8,2028
|
126
|
-
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=
|
126
|
+
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=OKf_WVoPkYPrielOz8CyI5AjWt9MS2nSbWQKpF7HSLI,37847
|
127
127
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
128
128
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=7JphJcSO3H85qiC2DpFfBWjC3JjrbRmoynBC6KKHVsA,2710
|
129
129
|
vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -155,7 +155,7 @@ vellum/client/README.md,sha256=flqu57ubZNTfpq60CdLtJC9gp4WEkyjb_n_eZ4OYf9w,6497
|
|
155
155
|
vellum/client/__init__.py,sha256=T5Ht_w-Mk_9nzGqdadhQB8V20M0vYj7am06ut0A3P1o,73401
|
156
156
|
vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
|
157
157
|
vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
|
158
|
-
vellum/client/core/client_wrapper.py,sha256=
|
158
|
+
vellum/client/core/client_wrapper.py,sha256=yiW8T6LXnqj5RVczNfHBZ2L3TMA_MWurdCwV6hFZPw8,2840
|
159
159
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
160
160
|
vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
161
161
|
vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
|
@@ -176,7 +176,7 @@ vellum/client/errors/not_found_error.py,sha256=YrqVM0oc3qkQbFbmmm6xr300VGfUNxMSy
|
|
176
176
|
vellum/client/errors/too_many_requests_error.py,sha256=SJJemdgUlQHV_VpxK8UfFNexgZebNT5_MTOeQs6oVgc,397
|
177
177
|
vellum/client/errors/unauthorized_error.py,sha256=waPl5Swiqsk3FQK-Lljzx4KDh4RPZ0wL6BLHjM8onQ8,394
|
178
178
|
vellum/client/raw_client.py,sha256=cmMR0t87iUYvkIE9L4g0dcCmw3uUQNze9rD9CBv5rzs,113481
|
179
|
-
vellum/client/reference.md,sha256=
|
179
|
+
vellum/client/reference.md,sha256=2t9tdvJPj80W63POYe4Eyw1zoioJQmSwspbZIaJgX5o,96761
|
180
180
|
vellum/client/resources/__init__.py,sha256=R10JFtO6U6QRvNubrmDIjncT7e5q4AiOKjXSK4wFuXc,1609
|
181
181
|
vellum/client/resources/ad_hoc/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
182
182
|
vellum/client/resources/ad_hoc/client.py,sha256=v5I_YzJaaPezsE4KVuMSUXJISstKuJ_9-VUeXakIJhw,14353
|
@@ -242,8 +242,8 @@ vellum/client/resources/workflow_sandboxes/raw_client.py,sha256=iQpaFR-D96ygLLh4
|
|
242
242
|
vellum/client/resources/workflow_sandboxes/types/__init__.py,sha256=mZxwNpOmBfllmNZrhp8e_M62hUFI73B2fNlvgG8vi3Y,232
|
243
243
|
vellum/client/resources/workflow_sandboxes/types/list_workflow_sandbox_examples_request_tag.py,sha256=TEwWit20W3X-zWPPLAhmUG05UudG9gaBSJ4Q4-rNJws,188
|
244
244
|
vellum/client/resources/workflows/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
245
|
-
vellum/client/resources/workflows/client.py,sha256=
|
246
|
-
vellum/client/resources/workflows/raw_client.py,sha256=
|
245
|
+
vellum/client/resources/workflows/client.py,sha256=vEu33ooKfiZs-Uj0xxAwKweABoXBgI39TIN0HSuq0J4,10433
|
246
|
+
vellum/client/resources/workflows/raw_client.py,sha256=4-4YRpl2v0AOzgZl1E-fVOX18VVsa-he8d3imTEtWdo,17187
|
247
247
|
vellum/client/resources/workspace_secrets/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
|
248
248
|
vellum/client/resources/workspace_secrets/client.py,sha256=rKyHM9EJalA0adkQ0SDN5CmXjiddgVCO73y7Q4qqRP0,5722
|
249
249
|
vellum/client/resources/workspace_secrets/raw_client.py,sha256=ZfiNd1NisolmK07QPyojW_KFlIWpnjVNLA8Aq5JC-zQ,7832
|
@@ -524,7 +524,7 @@ vellum/client/types/node_execution_initiated_body.py,sha256=PmI24HmrlHFoROgJdAJI
|
|
524
524
|
vellum/client/types/node_execution_initiated_event.py,sha256=MEEcgN9AjEAdDeUCGQyg7WaaxEpfPPA6AJKmIMGZMF8,1897
|
525
525
|
vellum/client/types/node_execution_paused_body.py,sha256=pAySHgvgRO6iV1pfO_lRyufk4ecA0LON8CCap4YTZsk,640
|
526
526
|
vellum/client/types/node_execution_paused_event.py,sha256=9JqnlTAtnMhnSlztrp9GpjCdSYVcKvV_h1jQszRInt8,1876
|
527
|
-
vellum/client/types/node_execution_rejected_body.py,sha256=
|
527
|
+
vellum/client/types/node_execution_rejected_body.py,sha256=PxLPedDB-Budfm9OtFtyjLnpaMO3rK_DQg62sv1TpsA,757
|
528
528
|
vellum/client/types/node_execution_rejected_event.py,sha256=JzbQux0bYivwK7edTydq6vrGQEVRdvypa4ZipTrmsig,1890
|
529
529
|
vellum/client/types/node_execution_resumed_body.py,sha256=M8nhwykvfwFgRKAyiVXJZC3Mrd7JankiTdO8muHQWMA,641
|
530
530
|
vellum/client/types/node_execution_resumed_event.py,sha256=SQ0EPqJnnAWulBb2H46v5p809UznM8YVIsdbyPOHn_s,1883
|
@@ -800,9 +800,9 @@ vellum/client/types/vellum_audio_request.py,sha256=vtkd49BVlLrY9UF3Yk52P5sDbtdY7
|
|
800
800
|
vellum/client/types/vellum_code_resource_definition.py,sha256=XdueTR342BDjevZ3ktJJI99RqRED4A5SUOyzPt2K6us,661
|
801
801
|
vellum/client/types/vellum_document.py,sha256=qwXqMS2Eud2a5KmF8QHhU_vJzDX0g5cesrCpmBqREsA,604
|
802
802
|
vellum/client/types/vellum_document_request.py,sha256=P9vA7ZDNeaHNlMqyzfl-ZD4bpdf-xA5mH8R1QuOAmOY,611
|
803
|
-
vellum/client/types/vellum_error.py,sha256=
|
803
|
+
vellum/client/types/vellum_error.py,sha256=G4WSD-w_skoDDnsAt-TtImt-hZT-Sc8LjHvERBUVnhE,691
|
804
804
|
vellum/client/types/vellum_error_code_enum.py,sha256=OtW7fuM3RrRIDHbbJtk2FxPf70JjP4XYCBdc6lKPIVA,330
|
805
|
-
vellum/client/types/vellum_error_request.py,sha256=
|
805
|
+
vellum/client/types/vellum_error_request.py,sha256=7l4Ux6wj3C9BdSXUPBrtxECsAirmvaLU42Y23VqncBU,698
|
806
806
|
vellum/client/types/vellum_image.py,sha256=LAGUYBDsT0bmMOqgbaeCTCy2w4zAeHEyUIgPtmdjjJ4,601
|
807
807
|
vellum/client/types/vellum_image_request.py,sha256=6DoI2AdJIG8NShHSslpHvsFUw5PwIMconjlHSipOP5Q,608
|
808
808
|
vellum/client/types/vellum_node_execution_event.py,sha256=-MXat2wAZx4sx3JRp7gwJIOInPNwPMDpZmXtP8NC3O8,736
|
@@ -837,7 +837,7 @@ vellum/client/types/workflow_deployment_release_workflow_deployment.py,sha256=Zm
|
|
837
837
|
vellum/client/types/workflow_deployment_release_workflow_version.py,sha256=VbVrwsDHapwPSsGEt8OM9Gjs31esIqkp8ta5zrZvPTw,885
|
838
838
|
vellum/client/types/workflow_error.py,sha256=iDMQ3Wx7E8lf6BYtBTGpeIxG46iF9mjzTpjxyJVTXgM,283
|
839
839
|
vellum/client/types/workflow_event.py,sha256=M_ra0CjUffCPqPRFJM_oR1IY4egHDGa0tY1HAoA8j5k,1532
|
840
|
-
vellum/client/types/workflow_event_error.py,sha256=
|
840
|
+
vellum/client/types/workflow_event_error.py,sha256=Isqu59qZywEFRZbgHwn2NKh2CZ3RA9qoqZSbzdQcy5g,695
|
841
841
|
vellum/client/types/workflow_event_execution_read.py,sha256=DRB19CN0E3r3t1mtfNLhaxiVtPKh5nJLYkCwVtomM7w,2456
|
842
842
|
vellum/client/types/workflow_execution_actual.py,sha256=QJn7xXOtSJT30se2KdOyAYVJKjU53uhdvpjcMDIz1eM,962
|
843
843
|
vellum/client/types/workflow_execution_actual_chat_history_request.py,sha256=E3Vt4l6PpE24_teWe3Kfu_4z1sbosaz_Uk1iUI9cZ-s,1957
|
@@ -853,7 +853,7 @@ vellum/client/types/workflow_execution_initiated_event.py,sha256=JpzYEKYJPe5blgM
|
|
853
853
|
vellum/client/types/workflow_execution_node_result_event.py,sha256=4rLmfNqLq2UYUGW1_CBb1yCXaCgBwFjq1UQ4-txSimU,1040
|
854
854
|
vellum/client/types/workflow_execution_paused_body.py,sha256=YzALzCHE9wRkyRuseriaGKst_oidAaIUNar9B6doMrY,769
|
855
855
|
vellum/client/types/workflow_execution_paused_event.py,sha256=nLzQ4j_qB7Z7q9D8TfPDCeCYfGuk-8_emlBcAx_oOu4,1904
|
856
|
-
vellum/client/types/workflow_execution_rejected_body.py,sha256=
|
856
|
+
vellum/client/types/workflow_execution_rejected_body.py,sha256=biJQ8_PDeJGELgjjUbZayC3tzoDkFSs2o-o04IKA6fg,765
|
857
857
|
vellum/client/types/workflow_execution_rejected_event.py,sha256=j1QzOxkcmcFfA9zHOiKBnv7qF_YrFePq380us1nnYEk,1918
|
858
858
|
vellum/client/types/workflow_execution_resumed_body.py,sha256=L0Atzk7328tpjhRKC0Y8AoWuMebtdHzd4gBjYkvKDIM,649
|
859
859
|
vellum/client/types/workflow_execution_resumed_event.py,sha256=7PTH1rLBlvC4414LG3L3AdMRrJEmtrJSOWwM5sptAZc,1911
|
@@ -1717,7 +1717,7 @@ vellum/workflows/constants.py,sha256=xweiPRUSVEnGz9BJvpIWu96Gfok89QneARu4K7wj7f8
|
|
1717
1717
|
vellum/workflows/context.py,sha256=ViyIeMDhUv-MhnynLaXPlvlbYxRU45ySvYidCNSbFZU,2458
|
1718
1718
|
vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1719
1719
|
vellum/workflows/descriptors/base.py,sha256=fRnRkECyDjfz2QEDCY9Q5mAerlJ6jR0R4nE-MP2VP_k,16558
|
1720
|
-
vellum/workflows/descriptors/exceptions.py,sha256=
|
1720
|
+
vellum/workflows/descriptors/exceptions.py,sha256=Rv2uMiaO2a2SADhJzl_VHhV6dqwAhZAzaJPoThP7SZc,653
|
1721
1721
|
vellum/workflows/descriptors/tests/test_utils.py,sha256=HJ5DoRz0sJvViGxyZ_FtytZjxN2J8xTkGtaVwCy6Q90,6928
|
1722
1722
|
vellum/workflows/descriptors/utils.py,sha256=7QvS_IOZWIoKvhNwpYBOTP3NasLSIBKTnhyASry2HCM,4320
|
1723
1723
|
vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR_pUus,50
|
@@ -1840,10 +1840,10 @@ vellum/workflows/nodes/displayable/bases/api_node/tests/test_node.py,sha256=5C59
|
|
1840
1840
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
|
1841
1841
|
vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=ea20icDM1HB942wkH-XtXNSNCBDcjeOiN3vowkHL4fs,4477
|
1842
1842
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
|
1843
|
-
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=
|
1843
|
+
vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=TkVfwD5-GGWG32vtGMo4ZjuxWrjVYbK7tDWq0U9OBCM,17316
|
1844
1844
|
vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1845
|
-
vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py,sha256=
|
1846
|
-
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=
|
1845
|
+
vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py,sha256=xc53wGwVqxBnN7eoyWkJ-RJ-FeUpHKekkKjViASHAFg,27495
|
1846
|
+
vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=H9mM75EQpP6PUvsXCTbwjw4CqMMLf36m1G2XqiPEvH4,12139
|
1847
1847
|
vellum/workflows/nodes/displayable/bases/search_node.py,sha256=9TtFn6oNpEkpCL59QdBViUe4WPjcITajbiS7EOjOGag,6114
|
1848
1848
|
vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1849
1849
|
vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=eqdqbKNRWVMDPevgwLg1i6YK0g4L4bCy-7xCBN5yYZI,3156
|
@@ -1939,7 +1939,7 @@ vellum/workflows/resolvers/resolver.py,sha256=yK-oY0HDsFJcjlNKAm3vpsPKRIFerIh59F
|
|
1939
1939
|
vellum/workflows/resolvers/tests/test_resolver.py,sha256=jXkJBb9SwtoH__bBN-ECohpyD0aTIB9ErEvtFhuTMQM,9750
|
1940
1940
|
vellum/workflows/resolvers/types.py,sha256=Hndhlk69g6EKLh_LYg5ILepW5U_h_BYNllfzhS9k8p4,237
|
1941
1941
|
vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
|
1942
|
-
vellum/workflows/runner/runner.py,sha256=
|
1942
|
+
vellum/workflows/runner/runner.py,sha256=lnVbqA1nSdWuyY1SZDpLDvnpLRQcQyWYOWrx3RIJpcg,41043
|
1943
1943
|
vellum/workflows/sandbox.py,sha256=jwlFFQjHDwmbVoBah_Q3i8K_BrzOt-F6TXFauiyVyIk,3021
|
1944
1944
|
vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
|
1945
1945
|
vellum/workflows/state/base.py,sha256=m9fCqbZn21GshCVCjJTD1dPZEQjFrsMXqlg7tM9fIwM,24283
|
@@ -1971,9 +1971,9 @@ vellum/workflows/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
1971
1971
|
vellum/workflows/utils/tests/test_functions.py,sha256=TlNhD0OBJ-aeYn4qUqmApuajkx9sJx0lIQRMfT8Xf0w,23688
|
1972
1972
|
vellum/workflows/utils/tests/test_names.py,sha256=DnRRnuORxQXx9ESegCzkxiWcHy2_bBi7lXgbFi3FZK8,757
|
1973
1973
|
vellum/workflows/utils/tests/test_uuids.py,sha256=i77ABQ0M3S-aFLzDXHJq_yr5FPkJEWCMBn1HJ3DObrE,437
|
1974
|
-
vellum/workflows/utils/tests/test_vellum_variables.py,sha256=
|
1974
|
+
vellum/workflows/utils/tests/test_vellum_variables.py,sha256=X7b-bbN3bFRx0WG31bowcaOgsXxEPYnh2sgpsqgKIsQ,2096
|
1975
1975
|
vellum/workflows/utils/uuids.py,sha256=IaZQANz7fhF7la0_J1O50Y6D2PIYv_taRDTRzBT9aWw,1284
|
1976
|
-
vellum/workflows/utils/vellum_variables.py,sha256=
|
1976
|
+
vellum/workflows/utils/vellum_variables.py,sha256=Tgv09yYROgq8QZbrKKIOEdg0IQ8Vfgz_vRjY4tYzaTQ,7152
|
1977
1977
|
vellum/workflows/utils/zip.py,sha256=HVg_YZLmBOTXKaDV3Xhaf3V6sYnfqqZXQ8CpuafkbPY,1181
|
1978
1978
|
vellum/workflows/vellum_client.py,sha256=xkfoucodxNK5JR2-lbRqZx3xzDgExWkP6kySrpi_Ubc,1079
|
1979
1979
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
@@ -1982,8 +1982,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
|
|
1982
1982
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1983
1983
|
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=ptMntHzVyy8ZuzNgeTuk7hREgKQ5UBdgq8VJFSGaW4Y,20832
|
1984
1984
|
vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
|
1985
|
-
vellum_ai-1.3.
|
1986
|
-
vellum_ai-1.3.
|
1987
|
-
vellum_ai-1.3.
|
1988
|
-
vellum_ai-1.3.
|
1989
|
-
vellum_ai-1.3.
|
1985
|
+
vellum_ai-1.3.9.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1986
|
+
vellum_ai-1.3.9.dist-info/METADATA,sha256=uOjA8lJ-F41325oLMigUN2TZ7A4Kuyi9d-fsQ6rRRB4,5547
|
1987
|
+
vellum_ai-1.3.9.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1988
|
+
vellum_ai-1.3.9.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1989
|
+
vellum_ai-1.3.9.dist-info/RECORD,,
|
@@ -162,7 +162,7 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
162
162
|
{
|
163
163
|
"id": id,
|
164
164
|
"name": attribute.name,
|
165
|
-
"value": serialize_value(display_context, attribute.instance),
|
165
|
+
"value": serialize_value(node_id, display_context, attribute.instance),
|
166
166
|
}
|
167
167
|
)
|
168
168
|
except ValueError as e:
|
@@ -187,7 +187,7 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
187
187
|
for output in node.Outputs:
|
188
188
|
type = primitive_type_to_vellum_variable_type(output)
|
189
189
|
value = (
|
190
|
-
serialize_value(display_context, output.instance)
|
190
|
+
serialize_value(node_id, display_context, output.instance)
|
191
191
|
if output.instance is not None and output.instance != undefined
|
192
192
|
else None
|
193
193
|
)
|
@@ -214,6 +214,7 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
214
214
|
def serialize_ports(self, display_context: "WorkflowDisplayContext") -> JsonArray:
|
215
215
|
"""Serialize the ports of the node."""
|
216
216
|
node = self._node
|
217
|
+
node_id = self.node_id
|
217
218
|
ports: JsonArray = []
|
218
219
|
|
219
220
|
for port in node.Ports:
|
@@ -224,7 +225,9 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
224
225
|
"id": id,
|
225
226
|
"name": port.name,
|
226
227
|
"type": port._condition_type.value,
|
227
|
-
"expression": (
|
228
|
+
"expression": (
|
229
|
+
serialize_value(node_id, display_context, port._condition) if port._condition else None
|
230
|
+
),
|
228
231
|
}
|
229
232
|
)
|
230
233
|
else:
|
@@ -248,21 +251,23 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
248
251
|
|
249
252
|
def _serialize_attributes(self, display_context: "WorkflowDisplayContext") -> JsonArray:
|
250
253
|
"""Serialize node attributes, skipping unserializable ones."""
|
254
|
+
node = self._node
|
255
|
+
node_id = self.node_id
|
251
256
|
attributes: JsonArray = []
|
252
|
-
for attribute in
|
257
|
+
for attribute in node:
|
253
258
|
if attribute in self.__unserializable_attributes__:
|
254
259
|
continue
|
255
260
|
|
256
261
|
id = (
|
257
262
|
str(self.attribute_ids_by_name[attribute.name])
|
258
263
|
if self.attribute_ids_by_name.get(attribute.name)
|
259
|
-
else str(uuid4_from_hash(f"{
|
264
|
+
else str(uuid4_from_hash(f"{node_id}|{attribute.name}"))
|
260
265
|
)
|
261
266
|
try:
|
262
267
|
attribute_dict: JsonObject = {
|
263
268
|
"id": id,
|
264
269
|
"name": attribute.name,
|
265
|
-
"value": serialize_value(display_context, attribute.instance),
|
270
|
+
"value": serialize_value(node_id, display_context, attribute.instance),
|
266
271
|
}
|
267
272
|
attributes.append(attribute_dict)
|
268
273
|
except ValueError as e:
|
@@ -272,7 +277,7 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
272
277
|
|
273
278
|
def serialize_generic_fields(self, display_context: "WorkflowDisplayContext") -> JsonObject:
|
274
279
|
"""Serialize generic fields that are common to all nodes."""
|
275
|
-
|
280
|
+
result: JsonObject = {
|
276
281
|
"display_data": self.get_display_data().dict(),
|
277
282
|
"base": self.get_base().dict(),
|
278
283
|
"definition": self.get_definition().dict(),
|
@@ -280,6 +285,22 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
280
285
|
"ports": self.serialize_ports(display_context),
|
281
286
|
}
|
282
287
|
|
288
|
+
# Only include should_file_merge if there are custom methods defined
|
289
|
+
try:
|
290
|
+
node_class = self.__class__.infer_node_class()
|
291
|
+
has_custom_methods = any(
|
292
|
+
callable(getattr(node_class, name, None)) and inspect.isfunction(getattr(node_class, name, None))
|
293
|
+
for name in node_class.__dict__.keys()
|
294
|
+
if not name.startswith("__")
|
295
|
+
)
|
296
|
+
|
297
|
+
if has_custom_methods:
|
298
|
+
result["should_file_merge"] = True
|
299
|
+
except Exception:
|
300
|
+
pass
|
301
|
+
|
302
|
+
return result
|
303
|
+
|
283
304
|
def get_base(self) -> CodeResourceDefinition:
|
284
305
|
node = self._node
|
285
306
|
|
@@ -429,13 +450,20 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
429
450
|
if explicit_value.comment.expanded is not None
|
430
451
|
else NodeDisplayComment(value=docstring, expanded=True)
|
431
452
|
)
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
453
|
+
from typing import Any, Dict
|
454
|
+
|
455
|
+
kwargs: Dict[str, Any] = {
|
456
|
+
"position": explicit_value.position,
|
457
|
+
"z_index": explicit_value.z_index,
|
458
|
+
"width": explicit_value.width,
|
459
|
+
"height": explicit_value.height,
|
460
|
+
"comment": comment,
|
461
|
+
}
|
462
|
+
if explicit_value.icon is not None:
|
463
|
+
kwargs["icon"] = explicit_value.icon
|
464
|
+
if explicit_value.color is not None:
|
465
|
+
kwargs["color"] = explicit_value.color
|
466
|
+
return NodeDisplayData(**kwargs)
|
439
467
|
|
440
468
|
if explicit_value:
|
441
469
|
return explicit_value
|
@@ -4,6 +4,7 @@ from uuid import UUID
|
|
4
4
|
from vellum.workflows.nodes.bases import BaseNode
|
5
5
|
from vellum.workflows.ports.port import Port
|
6
6
|
from vellum.workflows.references.constant import ConstantValueReference
|
7
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayData, NodeDisplayPosition
|
7
8
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
8
9
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
9
10
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
@@ -117,3 +118,66 @@ def test_serialize_node_label_with_pascal_case():
|
|
117
118
|
|
118
119
|
# THEN the label should be converted to proper title case with spaces
|
119
120
|
assert data["label"] == "My Custom Node"
|
121
|
+
|
122
|
+
|
123
|
+
def test_serialize_display_data_with_icon_and_color():
|
124
|
+
"""
|
125
|
+
Tests that nodes with icon and color serialize display_data correctly.
|
126
|
+
"""
|
127
|
+
|
128
|
+
# GIVEN a node with icon and color in display data
|
129
|
+
class MyNode(BaseNode):
|
130
|
+
pass
|
131
|
+
|
132
|
+
class MyNodeDisplay(BaseNodeDisplay[MyNode]):
|
133
|
+
display_data = NodeDisplayData(
|
134
|
+
position=NodeDisplayPosition(x=100, y=200), icon="vellum:icon:star", color="navy"
|
135
|
+
)
|
136
|
+
|
137
|
+
# WHEN we serialize the node
|
138
|
+
data = MyNodeDisplay().serialize(WorkflowDisplayContext())
|
139
|
+
|
140
|
+
# THEN the display_data should include icon and color
|
141
|
+
assert data["display_data"] == {"position": {"x": 100, "y": 200}, "icon": "vellum:icon:star", "color": "navy"}
|
142
|
+
|
143
|
+
|
144
|
+
def test_serialize_display_data_with_various_icon_formats():
|
145
|
+
"""
|
146
|
+
Tests that different icon formats are serialized correctly.
|
147
|
+
"""
|
148
|
+
|
149
|
+
# GIVEN a node with a vellum icon format
|
150
|
+
class MyNode(BaseNode):
|
151
|
+
pass
|
152
|
+
|
153
|
+
class MyNodeDisplay(BaseNodeDisplay[MyNode]):
|
154
|
+
display_data = NodeDisplayData(icon="vellum:icon:home")
|
155
|
+
|
156
|
+
# WHEN we serialize the node
|
157
|
+
data = MyNodeDisplay().serialize(WorkflowDisplayContext())
|
158
|
+
|
159
|
+
# THEN the icon should be preserved as-is
|
160
|
+
display_data = data["display_data"]
|
161
|
+
assert isinstance(display_data, dict)
|
162
|
+
assert display_data["icon"] == "vellum:icon:home"
|
163
|
+
|
164
|
+
|
165
|
+
def test_serialize_display_data_with_navy_color():
|
166
|
+
"""
|
167
|
+
Tests that navy color values are serialized correctly.
|
168
|
+
"""
|
169
|
+
|
170
|
+
# GIVEN a node with a navy color
|
171
|
+
class MyNode(BaseNode):
|
172
|
+
pass
|
173
|
+
|
174
|
+
class MyNodeDisplay(BaseNodeDisplay[MyNode]):
|
175
|
+
display_data = NodeDisplayData(color="navy")
|
176
|
+
|
177
|
+
# WHEN we serialize the node
|
178
|
+
data = MyNodeDisplay().serialize(WorkflowDisplayContext())
|
179
|
+
|
180
|
+
# THEN the color should be preserved as-is
|
181
|
+
display_data = data["display_data"]
|
182
|
+
assert isinstance(display_data, dict)
|
183
|
+
assert display_data["color"] == "navy"
|
@@ -51,7 +51,7 @@ class BaseFinalOutputNodeDisplay(BaseNodeDisplay[_FinalOutputNodeType], Generic[
|
|
51
51
|
"id": str(self._get_output_id()),
|
52
52
|
"name": node.Outputs.value.name,
|
53
53
|
"type": inferred_type,
|
54
|
-
"value": serialize_value(display_context, node.Outputs.value.instance),
|
54
|
+
"value": serialize_value(node_id, display_context, node.Outputs.value.instance),
|
55
55
|
}
|
56
56
|
],
|
57
57
|
}
|
@@ -33,7 +33,7 @@ class BaseRetryNodeDisplay(BaseAdornmentNodeDisplay[_RetryNodeType], Generic[_Re
|
|
33
33
|
{
|
34
34
|
"id": id,
|
35
35
|
"name": attribute.name,
|
36
|
-
"value": serialize_value(display_context, attribute.instance),
|
36
|
+
"value": serialize_value(node_id, display_context, attribute.instance),
|
37
37
|
}
|
38
38
|
)
|
39
39
|
|