vellum-ai 0.14.23__py3-none-any.whl → 0.14.24__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/plugins/pydantic.py +2 -0
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py +6 -0
- vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py +27 -0
- {vellum_ai-0.14.23.dist-info → vellum_ai-0.14.24.dist-info}/METADATA +1 -1
- {vellum_ai-0.14.23.dist-info → vellum_ai-0.14.24.dist-info}/RECORD +26 -24
- vellum_ee/workflows/display/base.py +26 -4
- vellum_ee/workflows/display/editor/__init__.py +7 -0
- vellum_ee/workflows/display/editor/types.py +22 -0
- vellum_ee/workflows/display/nodes/base_node_display.py +2 -1
- vellum_ee/workflows/display/nodes/base_node_vellum_display.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/api_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/search_node.py +2 -1
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +5 -11
- vellum_ee/workflows/display/nodes/vellum/utils.py +3 -4
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +2 -1
- vellum_ee/workflows/display/types.py +16 -13
- vellum_ee/workflows/display/utils/expressions.py +6 -2
- vellum_ee/workflows/display/utils/vellum.py +59 -13
- vellum_ee/workflows/display/vellum.py +18 -95
- vellum_ee/workflows/display/workflows/base_workflow_display.py +54 -40
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +1 -1
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +2 -4
- {vellum_ai-0.14.23.dist-info → vellum_ai-0.14.24.dist-info}/LICENSE +0 -0
- {vellum_ai-0.14.23.dist-info → vellum_ai-0.14.24.dist-info}/WHEEL +0 -0
- {vellum_ai-0.14.23.dist-info → vellum_ai-0.14.24.dist-info}/entry_points.txt +0 -0
@@ -18,7 +18,7 @@ class BaseClientWrapper:
|
|
18
18
|
headers: typing.Dict[str, str] = {
|
19
19
|
"X-Fern-Language": "Python",
|
20
20
|
"X-Fern-SDK-Name": "vellum-ai",
|
21
|
-
"X-Fern-SDK-Version": "0.14.
|
21
|
+
"X-Fern-SDK-Version": "0.14.24",
|
22
22
|
}
|
23
23
|
headers["X_API_KEY"] = self.api_key
|
24
24
|
return headers
|
vellum/plugins/pydantic.py
CHANGED
@@ -46,6 +46,8 @@ class OnValidatePython(ValidatePythonHandlerProtocol):
|
|
46
46
|
context: Optional[Dict[str, Any]] = None,
|
47
47
|
self_instance: Optional[Any] = None,
|
48
48
|
allow_partial: Union[bool, Literal["off", "on", "trailing-strings"]] = False,
|
49
|
+
by_alias: Optional[bool] = None,
|
50
|
+
by_name: Optional[bool] = None,
|
49
51
|
) -> None:
|
50
52
|
if not isinstance(input, dict):
|
51
53
|
return
|
@@ -13,6 +13,7 @@ from vellum.workflows.state.base import BaseState
|
|
13
13
|
from vellum.workflows.state.context import WorkflowContext
|
14
14
|
from vellum.workflows.types.core import EntityInputsInterface
|
15
15
|
from vellum.workflows.types.generics import InputsType, StateType
|
16
|
+
from vellum.workflows.utils.uuids import uuid4_from_hash
|
16
17
|
from vellum.workflows.workflows.event_filters import all_workflow_event_filter
|
17
18
|
|
18
19
|
if TYPE_CHECKING:
|
@@ -140,3 +141,8 @@ class InlineSubworkflowNode(
|
|
140
141
|
# Subclasses of InlineSubworkflowNode can override this method to provider their own
|
141
142
|
# approach to annotating the outputs class based on the `subworkflow.Outputs`
|
142
143
|
setattr(outputs_class, reference.name, reference)
|
144
|
+
|
145
|
+
if cls.__output_ids__ is None:
|
146
|
+
cls.__output_ids__ = {}
|
147
|
+
|
148
|
+
cls.__output_ids__[reference.name] = uuid4_from_hash(f"{cls.__id__}|{reference.name}")
|
@@ -116,3 +116,30 @@ def test_inline_subworkflow_node__base_inputs_validation():
|
|
116
116
|
# AND the error message should indicate the missing required input
|
117
117
|
assert e.value.code == WorkflowErrorCode.INVALID_INPUTS
|
118
118
|
assert "Required input variables required_input should have defined value" == str(e.value)
|
119
|
+
|
120
|
+
|
121
|
+
def test_inline_subworkflow_node__with_adornment():
|
122
|
+
# GIVEN a simple inline subworkflow with an output
|
123
|
+
class InnerNode(BaseNode):
|
124
|
+
class Outputs(BaseNode.Outputs):
|
125
|
+
final_output = "hello"
|
126
|
+
|
127
|
+
class TestSubworkflow(BaseWorkflow):
|
128
|
+
graph = InnerNode
|
129
|
+
|
130
|
+
class Outputs(BaseWorkflow.Outputs):
|
131
|
+
final_output = InnerNode.Outputs.final_output
|
132
|
+
|
133
|
+
# AND it's wrapped in a TryNode
|
134
|
+
@TryNode.wrap()
|
135
|
+
class TestNode(InlineSubworkflowNode):
|
136
|
+
subworkflow = TestSubworkflow
|
137
|
+
|
138
|
+
# THEN the wrapped node should have the correct output IDs
|
139
|
+
assert "final_output" in TestNode.__output_ids__
|
140
|
+
|
141
|
+
# AND when we run the node
|
142
|
+
node = TestNode()
|
143
|
+
outputs = list(node.run())
|
144
|
+
|
145
|
+
assert outputs[-1].name == "final_output" and outputs[-1].value == "hello"
|
@@ -22,17 +22,19 @@ vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
22
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
23
|
vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
24
|
vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
-
vellum_ee/workflows/display/base.py,sha256=
|
25
|
+
vellum_ee/workflows/display/base.py,sha256=rIycT9p18XWng7cpJwcjXXNvJq3bPObQ0GN4fuQO_Wk,2633
|
26
|
+
vellum_ee/workflows/display/editor/__init__.py,sha256=MSAgY91xCEg2neH5d8jXx5wRdR962ftZVa6vO9BGq9k,167
|
27
|
+
vellum_ee/workflows/display/editor/types.py,sha256=x-tOOCJ6CF4HmiKDfCmcc3bOVfc1EBlP5o6u5WEfLoY,567
|
26
28
|
vellum_ee/workflows/display/nodes/__init__.py,sha256=436iSAh_Ex5tC68oEYvNgPu05ZVIAVXnS4PKGrQeZ0Y,321
|
27
|
-
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=
|
28
|
-
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=
|
29
|
+
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=APdax1M8isohM-B8j2E0OFL-4v2L17scZ0ynpkYgVek,19036
|
30
|
+
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=WXbfVoGHTfl_owas2WKHwcRhfLeu0cAI4qLmKxfxjOs,1707
|
29
31
|
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=59Nht1XAxMcNESFV1VmECrF01lZMnGkB_9JWaTAFnv0,2214
|
30
32
|
vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
31
33
|
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=QqR3Ly0RNrXwOeLdW5nERDFt0gRPf76n1bPES6o5UN4,1093
|
32
34
|
vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
|
33
35
|
vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
|
34
36
|
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLPyRNe8YIrx3Yo9HeeW-aXXFk,1668
|
35
|
-
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=
|
37
|
+
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=RDsxyubod_zYc72_VaHUTfOZXsgrKv8g3fqZFS2_j8Y,8538
|
36
38
|
vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=Bzqplrnx-bDIRD1JgU7036m8pSWSO45zEReNv8RJTu4,6379
|
37
39
|
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=IYx0nll0t-tsPcjfgpfHMZE4FJgMFIsOiaQanGLYF0Q,4410
|
38
40
|
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=ybLIa4uclqVIy3VAQvI1ivg2tnK5Ug_1R5a69DFqL7E,11104
|
@@ -46,7 +48,7 @@ vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=xtyecs9mJ_WEwVpP12
|
|
46
48
|
vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=TMb8txILu2uWjzoxaghjgjlzeBAgzn4vkP_8zSh2qoE,1151
|
47
49
|
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=9YR6MtxVq8Bavb0ud2lZX0t2Y_NUd-dY9kRgq8WBz-Y,3093
|
48
50
|
vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=LgokATi7sSS38Fil-XjqoR4t7AMOJ-GzXRw6p606Svo,3397
|
49
|
-
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=
|
51
|
+
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=Hn55mKO1Q6BBspQtbsurvJJqX7RjSSuEyRjUW29xvg0,9279
|
50
52
|
vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=62baAElKoRKIoba0lLhnrXGWWx96B73VxKGxh7BaIxc,2612
|
51
53
|
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=5EWzdA3TSUPlbJhs4uo1KGH6eGtDXZucVhlUoc_xpl4,3242
|
52
54
|
vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -56,14 +58,14 @@ vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=bg9INs
|
|
56
58
|
vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py,sha256=NuIw8Yb42KUdoGi3Ur8_7VPg50IC4hNrwAkCociwqNk,2091
|
57
59
|
vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py,sha256=Us32jf_FQnLuT4Bs2o5JyHxihCTAN8ozZghWIR0pl9k,3459
|
58
60
|
vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=mtzB8LJlFCHVFM4H5AanLp29gQfaVmnN4A4iaRGJHoI,2427
|
59
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=
|
61
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=8_4b_U2l60b3TPLTHiDd_lzk6gi-30FmNJreDVeG0oM,4876
|
60
62
|
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=0ipBZMYm521tuwefQFgHOvTyTgiWVTkzxpQtnnmOAI0,4203
|
61
|
-
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=
|
63
|
+
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=MAoHDSURlLRJ9V8D6I6icclqGq2hExU_h7ABx6BWuJY,4733
|
62
64
|
vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
63
65
|
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=VD-4USiRlCcdC3Qe9WfdkxwFdircai0vqvuZCbELR84,9556
|
64
66
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
65
67
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
66
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=
|
68
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=lXw_Zvhlf7b1z3dsZoDznDweF1O-AStibV7BYrEtr0M,2544
|
67
69
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=4R8cZ98JsGmIq-kmt3q519c4nCI7wCy5ynAUCUNnvuI,15605
|
68
70
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=PXoNUAgqfyNCAoYGWoo5D-_5SLEannn7SD08nxZmVe8,19781
|
69
71
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=s6_mnk0pkztU59wYpSfOFpMhAJaRjmyfxM6WJGtnD4Y,6456
|
@@ -87,16 +89,16 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_n
|
|
87
89
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=UrueKI15Ez-DRfZpZH82o127v0LRXLP-s308kjDTPMI,4084
|
88
90
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=eD5686C9nWC5s6t08vbAnm9qf9t53gYQM-E1FwAa75c,3035
|
89
91
|
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=zXTjfjUdji0WBu6ZhocvM4UiXEWFJIpds24sxV9TZT0,7714
|
90
|
-
vellum_ee/workflows/display/types.py,sha256=
|
92
|
+
vellum_ee/workflows/display/types.py,sha256=13gGBga5p1Tufe2h3aKBmr2mXlnGDtL8RqWKhW9LaDk,2543
|
91
93
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
92
|
-
vellum_ee/workflows/display/utils/expressions.py,sha256=
|
93
|
-
vellum_ee/workflows/display/utils/vellum.py,sha256=
|
94
|
-
vellum_ee/workflows/display/vellum.py,sha256=
|
94
|
+
vellum_ee/workflows/display/utils/expressions.py,sha256=2u2o8Fqr-2C45FII01ej5rt6i8n2EEGiliXugK7buVw,1210
|
95
|
+
vellum_ee/workflows/display/utils/vellum.py,sha256=Pzmg9Xiq-hRaYxbOSDaJhIAQ4A0apQN6dURn_h5DnWI,9364
|
96
|
+
vellum_ee/workflows/display/vellum.py,sha256=3Hri8-MGNhRSoNBC-u6hiot_9-k92a_NzrYgYJVY1CQ,3547
|
95
97
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
96
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
98
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=rYpvUVGnQNFOnsk6OUhh_2GXDojQtKmuRElNjwQujDk,19486
|
97
99
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=kp0u8LN_2IwshLrhMImhpZx1hRyAcD5gXY-kDuuaGMQ,1269
|
98
|
-
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=
|
99
|
-
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=
|
100
|
+
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=nD6_lZnNp56siVJwhlWzSEHdMaSKjvWlsJa31SqfQAE,10623
|
101
|
+
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=cSQybNy6qBiEv2WtPRh1-hSNuwvdWQtjvAGW6vNBSmU,16623
|
100
102
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
101
103
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=ET-Q83W5Cgqzqz3qtFNwtS2nJEIcm3VtvR5kffsT3VY,2262
|
102
104
|
vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -126,7 +128,7 @@ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
|
126
128
|
vellum/client/__init__.py,sha256=tKtdM1_GqmGq1gpi9ydWD_T-MM7fPn8QdHh8ww19cNI,117564
|
127
129
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
128
130
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
129
|
-
vellum/client/core/client_wrapper.py,sha256=
|
131
|
+
vellum/client/core/client_wrapper.py,sha256=8wv6fQx1EwJtvzVuLS-i7sPo_b87mIrTj43SWrHA6fM,1869
|
130
132
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
131
133
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
132
134
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -785,7 +787,7 @@ vellum/evaluations/utils/env.py,sha256=Xj_nxsoU5ox06EOTjRopR4lrigQI6Le6qbWGltYoE
|
|
785
787
|
vellum/evaluations/utils/exceptions.py,sha256=dXMAkzqbHV_AP5FjjbegPlfUE0zQDlpA3qOsoOJUxfg,49
|
786
788
|
vellum/evaluations/utils/paginator.py,sha256=rEED_BJAXAM6tM1yMwHePNzszjq_tTq4NbQvi1jWQ_Q,697
|
787
789
|
vellum/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
788
|
-
vellum/plugins/pydantic.py,sha256=
|
790
|
+
vellum/plugins/pydantic.py,sha256=_kx82JIA050R67QAimgR7NQTuweSP7xLGW4qHLIepo4,3609
|
789
791
|
vellum/plugins/utils.py,sha256=cPmxE9R2CK1bki2jKE8rB-G9zMf2pzHjSPDHFPXwd3Q,878
|
790
792
|
vellum/plugins/vellum_mypy.py,sha256=QTuMSq6PiZW1dyTUZ5Bf1d4XkgFj0TKAgZLP8f4UgL4,27914
|
791
793
|
vellum/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1499,9 +1501,9 @@ vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT
|
|
1499
1501
|
vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
|
1500
1502
|
vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
|
1501
1503
|
vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
|
1502
|
-
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=
|
1504
|
+
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=e-Mal5tZ6JXJdWn8MspoBbXC8LBaCVxKb4RjoHnuZ0A,6611
|
1503
1505
|
vellum/workflows/nodes/core/inline_subworkflow_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1504
|
-
vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=
|
1506
|
+
vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=kUqwcRMMxjTHALbwGUXCJT_aJBrHS1bkg49oL8R0JO8,4337
|
1505
1507
|
vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
|
1506
1508
|
vellum/workflows/nodes/core/map_node/node.py,sha256=dY27Xm11LHsqD7hnZnVYYDIazZ-XfL4_zatvWKTi6CU,9243
|
1507
1509
|
vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1644,8 +1646,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
|
|
1644
1646
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1645
1647
|
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=tCxrV3QBHL8wfdEO3bvKteDdw32xBlUl1_WxkAwaONw,8344
|
1646
1648
|
vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
|
1647
|
-
vellum_ai-0.14.
|
1648
|
-
vellum_ai-0.14.
|
1649
|
-
vellum_ai-0.14.
|
1650
|
-
vellum_ai-0.14.
|
1651
|
-
vellum_ai-0.14.
|
1649
|
+
vellum_ai-0.14.24.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1650
|
+
vellum_ai-0.14.24.dist-info/METADATA,sha256=eb9VJttYaBZqKdHGOIIAv6Pz2XxjEgZXBddFHyrXNNo,5484
|
1651
|
+
vellum_ai-0.14.24.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1652
|
+
vellum_ai-0.14.24.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1653
|
+
vellum_ai-0.14.24.dist-info/RECORD,,
|
@@ -1,15 +1,37 @@
|
|
1
|
-
from dataclasses import dataclass
|
1
|
+
from dataclasses import dataclass, field
|
2
2
|
from uuid import UUID
|
3
3
|
from typing import TypeVar
|
4
4
|
|
5
|
+
from pydantic import Field
|
6
|
+
|
7
|
+
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
8
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayData
|
9
|
+
|
10
|
+
|
11
|
+
class WorkflowDisplayDataViewport(UniversalBaseModel):
|
12
|
+
x: float = 0.0
|
13
|
+
y: float = 0.0
|
14
|
+
zoom: float = 1.0
|
15
|
+
|
16
|
+
|
17
|
+
class WorkflowDisplayData(UniversalBaseModel):
|
18
|
+
viewport: WorkflowDisplayDataViewport = Field(default_factory=WorkflowDisplayDataViewport)
|
19
|
+
|
5
20
|
|
6
21
|
@dataclass
|
7
|
-
class
|
8
|
-
|
22
|
+
class WorkflowMetaDisplay:
|
23
|
+
entrypoint_node_id: UUID
|
24
|
+
entrypoint_node_source_handle_id: UUID
|
25
|
+
entrypoint_node_display: NodeDisplayData = Field(default_factory=NodeDisplayData)
|
26
|
+
display_data: WorkflowDisplayData = field(default_factory=WorkflowDisplayData)
|
9
27
|
|
10
28
|
|
11
29
|
@dataclass
|
12
|
-
class WorkflowMetaDisplay
|
30
|
+
class WorkflowMetaDisplayOverrides(WorkflowMetaDisplay):
|
31
|
+
"""
|
32
|
+
DEPRECATED: Use WorkflowMetaDisplay instead. Will be removed in 0.15.0
|
33
|
+
"""
|
34
|
+
|
13
35
|
pass
|
14
36
|
|
15
37
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
|
3
|
+
from pydantic import Field
|
4
|
+
|
5
|
+
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
6
|
+
|
7
|
+
|
8
|
+
class NodeDisplayPosition(UniversalBaseModel):
|
9
|
+
x: float = 0.0
|
10
|
+
y: float = 0.0
|
11
|
+
|
12
|
+
|
13
|
+
class NodeDisplayComment(UniversalBaseModel):
|
14
|
+
value: Optional[str] = None
|
15
|
+
expanded: Optional[bool] = None
|
16
|
+
|
17
|
+
|
18
|
+
class NodeDisplayData(UniversalBaseModel):
|
19
|
+
position: NodeDisplayPosition = Field(default_factory=NodeDisplayPosition)
|
20
|
+
width: Optional[int] = None
|
21
|
+
height: Optional[int] = None
|
22
|
+
comment: Optional[NodeDisplayComment] = None
|
@@ -17,6 +17,7 @@ from typing import (
|
|
17
17
|
get_origin,
|
18
18
|
)
|
19
19
|
|
20
|
+
from vellum.client.types.code_resource_definition import CodeResourceDefinition
|
20
21
|
from vellum.workflows import BaseWorkflow
|
21
22
|
from vellum.workflows.constants import undefined
|
22
23
|
from vellum.workflows.descriptors.base import BaseDescriptor
|
@@ -45,11 +46,11 @@ from vellum.workflows.types.utils import get_original_base
|
|
45
46
|
from vellum.workflows.utils.names import pascal_to_title_case
|
46
47
|
from vellum.workflows.utils.uuids import uuid4_from_hash
|
47
48
|
from vellum.workflows.utils.vellum_variables import primitive_type_to_vellum_variable_type
|
49
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayData
|
48
50
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
49
51
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay, PortDisplayOverrides
|
50
52
|
from vellum_ee.workflows.display.utils.expressions import get_child_descriptor
|
51
53
|
from vellum_ee.workflows.display.utils.vellum import convert_descriptor_to_operator, primitive_to_vellum_value
|
52
|
-
from vellum_ee.workflows.display.vellum import CodeResourceDefinition, NodeDisplayData
|
53
54
|
|
54
55
|
if TYPE_CHECKING:
|
55
56
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
@@ -4,9 +4,9 @@ from typing import ClassVar, Dict, Optional
|
|
4
4
|
from vellum.workflows.nodes.utils import get_unadorned_node
|
5
5
|
from vellum.workflows.ports import Port
|
6
6
|
from vellum.workflows.types.generics import NodeType
|
7
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayComment, NodeDisplayData
|
7
8
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
8
9
|
from vellum_ee.workflows.display.nodes.types import PortDisplay
|
9
|
-
from vellum_ee.workflows.display.vellum import NodeDisplayComment, NodeDisplayData
|
10
10
|
|
11
11
|
|
12
12
|
class BaseNodeVellumDisplay(BaseNodeDisplay[NodeType]):
|
@@ -8,7 +8,7 @@ from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeV
|
|
8
8
|
from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
|
9
9
|
from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
|
10
10
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
11
|
-
from vellum_ee.workflows.display.vellum import WorkspaceSecretPointer
|
11
|
+
from vellum_ee.workflows.display.utils.vellum import WorkspaceSecretPointer
|
12
12
|
|
13
13
|
_APINodeType = TypeVar("_APINodeType", bound=APINode)
|
14
14
|
|
@@ -15,7 +15,8 @@ from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeV
|
|
15
15
|
from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
|
16
16
|
from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
|
17
17
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
18
|
-
from vellum_ee.workflows.display.vellum import InputVariablePointer
|
18
|
+
from vellum_ee.workflows.display.utils.vellum import InputVariablePointer
|
19
|
+
from vellum_ee.workflows.display.vellum import NodeInput
|
19
20
|
|
20
21
|
_SearchNodeType = TypeVar("_SearchNodeType", bound=SearchNode)
|
21
22
|
|
@@ -8,21 +8,20 @@ from vellum.workflows.inputs import BaseInputs
|
|
8
8
|
from vellum.workflows.nodes.bases import BaseNode
|
9
9
|
from vellum.workflows.outputs import BaseOutputs
|
10
10
|
from vellum.workflows.references import LazyReference
|
11
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayData
|
11
12
|
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
12
13
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay
|
13
14
|
from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input_value_pointer_rules
|
14
15
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
15
|
-
from vellum_ee.workflows.display.vellum import (
|
16
|
+
from vellum_ee.workflows.display.utils.vellum import (
|
16
17
|
ConstantValuePointer,
|
17
18
|
InputVariableData,
|
18
19
|
InputVariablePointer,
|
19
|
-
NodeDisplayData,
|
20
20
|
NodeInputValuePointerRule,
|
21
21
|
NodeOutputData,
|
22
22
|
NodeOutputPointer,
|
23
|
-
WorkflowInputsVellumDisplayOverrides,
|
24
|
-
WorkflowMetaVellumDisplay,
|
25
23
|
)
|
24
|
+
from vellum_ee.workflows.display.vellum import WorkflowInputsVellumDisplayOverrides, WorkflowMetaVellumDisplay
|
26
25
|
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
27
26
|
|
28
27
|
|
@@ -68,41 +67,36 @@ class MyNodeB(BaseNode):
|
|
68
67
|
MyNodeB.fallback_example,
|
69
68
|
[
|
70
69
|
NodeOutputPointer(
|
71
|
-
type="NODE_OUTPUT",
|
72
70
|
data=NodeOutputData(
|
73
71
|
node_id="b48fa5e0-d7d3-4fe3-ae48-615415011cc5",
|
74
72
|
output_id="4b16a629-11a1-4b3f-a965-a57b872d13b8",
|
75
73
|
),
|
76
74
|
),
|
77
75
|
InputVariablePointer(
|
78
|
-
type="INPUT_VARIABLE",
|
79
76
|
data=InputVariableData(input_variable_id="a154c29d-fac0-4cd0-ba88-bc52034f5470"),
|
80
77
|
),
|
81
|
-
ConstantValuePointer(
|
78
|
+
ConstantValuePointer(data=StringVellumValue(value="fallback")),
|
82
79
|
],
|
83
80
|
),
|
84
81
|
(
|
85
82
|
MyNodeB.constant_coalesce,
|
86
83
|
[
|
87
84
|
InputVariablePointer(
|
88
|
-
type="INPUT_VARIABLE",
|
89
85
|
data=InputVariableData(input_variable_id="a154c29d-fac0-4cd0-ba88-bc52034f5470"),
|
90
86
|
),
|
91
|
-
ConstantValuePointer(
|
87
|
+
ConstantValuePointer(data=StringVellumValue(value="default_value")),
|
92
88
|
],
|
93
89
|
),
|
94
90
|
(
|
95
91
|
MyNodeB.lazy_coalesce,
|
96
92
|
[
|
97
93
|
NodeOutputPointer(
|
98
|
-
type="NODE_OUTPUT",
|
99
94
|
data=NodeOutputData(
|
100
95
|
node_id="b48fa5e0-d7d3-4fe3-ae48-615415011cc5",
|
101
96
|
output_id="4b16a629-11a1-4b3f-a965-a57b872d13b8",
|
102
97
|
),
|
103
98
|
),
|
104
99
|
InputVariablePointer(
|
105
|
-
type="INPUT_VARIABLE",
|
106
100
|
data=InputVariableData(input_variable_id="a154c29d-fac0-4cd0-ba88-bc52034f5470"),
|
107
101
|
),
|
108
102
|
],
|
@@ -9,19 +9,18 @@ from vellum.workflows.references.lazy import LazyReference
|
|
9
9
|
from vellum.workflows.utils.uuids import uuid4_from_hash
|
10
10
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
11
11
|
from vellum_ee.workflows.display.utils.expressions import get_child_descriptor
|
12
|
-
from vellum_ee.workflows.display.utils.vellum import
|
13
|
-
from vellum_ee.workflows.display.vellum import (
|
12
|
+
from vellum_ee.workflows.display.utils.vellum import (
|
14
13
|
ConstantValuePointer,
|
15
14
|
ExecutionCounterData,
|
16
15
|
ExecutionCounterPointer,
|
17
16
|
InputVariableData,
|
18
17
|
InputVariablePointer,
|
19
|
-
NodeInput,
|
20
|
-
NodeInputValuePointer,
|
21
18
|
NodeInputValuePointerRule,
|
22
19
|
WorkspaceSecretData,
|
23
20
|
WorkspaceSecretPointer,
|
21
|
+
create_node_input_value_pointer_rule,
|
24
22
|
)
|
23
|
+
from vellum_ee.workflows.display.vellum import NodeInput, NodeInputValuePointer
|
25
24
|
|
26
25
|
|
27
26
|
def create_node_input(
|
@@ -9,11 +9,12 @@ from vellum.workflows.references.workflow_input import WorkflowInputReference
|
|
9
9
|
from vellum.workflows.types.core import JsonObject
|
10
10
|
from vellum.workflows.types.generics import NodeType
|
11
11
|
from vellum_ee.workflows.display.base import StateValueDisplayType, WorkflowInputsDisplayType
|
12
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayData
|
12
13
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
13
14
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
14
15
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay
|
15
16
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
16
|
-
from vellum_ee.workflows.display.vellum import
|
17
|
+
from vellum_ee.workflows.display.vellum import WorkflowMetaVellumDisplay
|
17
18
|
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
18
19
|
|
19
20
|
|
@@ -11,41 +11,44 @@ from vellum_ee.workflows.display.base import (
|
|
11
11
|
EntrypointDisplayType,
|
12
12
|
StateValueDisplayType,
|
13
13
|
WorkflowInputsDisplayType,
|
14
|
-
|
14
|
+
WorkflowMetaDisplay,
|
15
15
|
WorkflowOutputDisplay,
|
16
16
|
)
|
17
|
+
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
18
|
+
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay
|
17
19
|
|
18
20
|
if TYPE_CHECKING:
|
19
|
-
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
20
|
-
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay
|
21
21
|
from vellum_ee.workflows.display.workflows import BaseWorkflowDisplay
|
22
22
|
|
23
23
|
WorkflowDisplayType = TypeVar("WorkflowDisplayType", bound="BaseWorkflowDisplay")
|
24
24
|
|
25
|
+
NodeDisplays = Dict[Type[BaseNode], BaseNodeDisplay]
|
26
|
+
NodeOutputDisplays = Dict[OutputReference, Tuple[Type[BaseNode], NodeOutputDisplay]]
|
27
|
+
WorkflowOutputDisplays = Dict[BaseDescriptor, WorkflowOutputDisplay]
|
28
|
+
EdgeDisplays = Dict[Tuple[Port, Type[BaseNode]], EdgeDisplay]
|
29
|
+
PortDisplays = Dict[Port, PortDisplay]
|
30
|
+
|
25
31
|
|
26
32
|
@dataclass
|
27
33
|
class WorkflowDisplayContext(
|
28
34
|
Generic[
|
29
|
-
WorkflowMetaDisplayType,
|
30
35
|
WorkflowInputsDisplayType,
|
31
36
|
StateValueDisplayType,
|
32
37
|
EntrypointDisplayType,
|
33
38
|
]
|
34
39
|
):
|
35
40
|
workflow_display_class: Type["BaseWorkflowDisplay"]
|
36
|
-
workflow_display:
|
41
|
+
workflow_display: WorkflowMetaDisplay
|
37
42
|
workflow_input_displays: Dict[WorkflowInputReference, WorkflowInputsDisplayType] = field(default_factory=dict)
|
38
43
|
global_workflow_input_displays: Dict[WorkflowInputReference, WorkflowInputsDisplayType] = field(
|
39
44
|
default_factory=dict
|
40
45
|
)
|
41
46
|
state_value_displays: Dict[StateValueReference, StateValueDisplayType] = field(default_factory=dict)
|
42
47
|
global_state_value_displays: Dict[StateValueReference, StateValueDisplayType] = field(default_factory=dict)
|
43
|
-
node_displays:
|
44
|
-
global_node_displays:
|
45
|
-
global_node_output_displays:
|
46
|
-
default_factory=dict
|
47
|
-
)
|
48
|
+
node_displays: NodeDisplays = field(default_factory=dict)
|
49
|
+
global_node_displays: NodeDisplays = field(default_factory=dict)
|
50
|
+
global_node_output_displays: NodeOutputDisplays = field(default_factory=dict)
|
48
51
|
entrypoint_displays: Dict[Type[BaseNode], EntrypointDisplayType] = field(default_factory=dict)
|
49
|
-
workflow_output_displays:
|
50
|
-
edge_displays:
|
51
|
-
port_displays:
|
52
|
+
workflow_output_displays: WorkflowOutputDisplays = field(default_factory=dict)
|
53
|
+
edge_displays: EdgeDisplays = field(default_factory=dict)
|
54
|
+
port_displays: PortDisplays = field(default_factory=dict)
|
@@ -1,9 +1,13 @@
|
|
1
|
+
from typing import TYPE_CHECKING
|
2
|
+
|
1
3
|
from vellum.workflows.descriptors.base import BaseDescriptor
|
2
4
|
from vellum.workflows.references.lazy import LazyReference
|
3
|
-
|
5
|
+
|
6
|
+
if TYPE_CHECKING:
|
7
|
+
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
4
8
|
|
5
9
|
|
6
|
-
def get_child_descriptor(value: LazyReference, display_context: WorkflowDisplayContext) -> BaseDescriptor:
|
10
|
+
def get_child_descriptor(value: LazyReference, display_context: "WorkflowDisplayContext") -> BaseDescriptor:
|
7
11
|
if isinstance(value._get, str):
|
8
12
|
reference_parts = value._get.split(".")
|
9
13
|
if len(reference_parts) < 3:
|
@@ -1,6 +1,9 @@
|
|
1
|
-
from typing import TYPE_CHECKING, Any
|
1
|
+
from typing import TYPE_CHECKING, Any, Literal, Optional, Union
|
2
2
|
|
3
|
+
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
4
|
+
from vellum.client.types.array_vellum_value import ArrayVellumValue
|
3
5
|
from vellum.client.types.logical_operator import LogicalOperator
|
6
|
+
from vellum.client.types.vellum_value import VellumValue
|
4
7
|
from vellum.client.types.vellum_variable_type import VellumVariableType
|
5
8
|
from vellum.workflows.descriptors.base import BaseDescriptor
|
6
9
|
from vellum.workflows.expressions.and_ import AndExpression
|
@@ -39,23 +42,66 @@ from vellum.workflows.references.vellum_secret import VellumSecretReference
|
|
39
42
|
from vellum.workflows.utils.vellum_variables import primitive_type_to_vellum_variable_type
|
40
43
|
from vellum.workflows.vellum_client import create_vellum_client
|
41
44
|
from vellum_ee.workflows.display.utils.expressions import get_child_descriptor
|
42
|
-
from vellum_ee.workflows.display.vellum import (
|
43
|
-
ConstantValuePointer,
|
44
|
-
ExecutionCounterData,
|
45
|
-
ExecutionCounterPointer,
|
46
|
-
InputVariableData,
|
47
|
-
InputVariablePointer,
|
48
|
-
NodeInputValuePointerRule,
|
49
|
-
NodeOutputData,
|
50
|
-
NodeOutputPointer,
|
51
|
-
WorkspaceSecretData,
|
52
|
-
WorkspaceSecretPointer,
|
53
|
-
)
|
54
45
|
|
55
46
|
if TYPE_CHECKING:
|
56
47
|
from vellum_ee.workflows.display.types import WorkflowDisplayContext
|
57
48
|
|
58
49
|
|
50
|
+
class ConstantValuePointer(UniversalBaseModel):
|
51
|
+
type: Literal["CONSTANT_VALUE"] = "CONSTANT_VALUE"
|
52
|
+
data: VellumValue
|
53
|
+
|
54
|
+
|
55
|
+
ArrayVellumValue.model_rebuild()
|
56
|
+
|
57
|
+
|
58
|
+
class NodeOutputData(UniversalBaseModel):
|
59
|
+
node_id: str
|
60
|
+
output_id: str
|
61
|
+
|
62
|
+
|
63
|
+
class NodeOutputPointer(UniversalBaseModel):
|
64
|
+
type: Literal["NODE_OUTPUT"] = "NODE_OUTPUT"
|
65
|
+
data: NodeOutputData
|
66
|
+
|
67
|
+
|
68
|
+
class InputVariableData(UniversalBaseModel):
|
69
|
+
input_variable_id: str
|
70
|
+
|
71
|
+
|
72
|
+
class InputVariablePointer(UniversalBaseModel):
|
73
|
+
type: Literal["INPUT_VARIABLE"] = "INPUT_VARIABLE"
|
74
|
+
data: InputVariableData
|
75
|
+
|
76
|
+
|
77
|
+
class WorkspaceSecretData(UniversalBaseModel):
|
78
|
+
type: VellumVariableType
|
79
|
+
workspace_secret_id: Optional[str] = None
|
80
|
+
|
81
|
+
|
82
|
+
class WorkspaceSecretPointer(UniversalBaseModel):
|
83
|
+
type: Literal["WORKSPACE_SECRET"] = "WORKSPACE_SECRET"
|
84
|
+
data: WorkspaceSecretData
|
85
|
+
|
86
|
+
|
87
|
+
class ExecutionCounterData(UniversalBaseModel):
|
88
|
+
node_id: str
|
89
|
+
|
90
|
+
|
91
|
+
class ExecutionCounterPointer(UniversalBaseModel):
|
92
|
+
type: Literal["EXECUTION_COUNTER"] = "EXECUTION_COUNTER"
|
93
|
+
data: ExecutionCounterData
|
94
|
+
|
95
|
+
|
96
|
+
NodeInputValuePointerRule = Union[
|
97
|
+
NodeOutputPointer,
|
98
|
+
InputVariablePointer,
|
99
|
+
ConstantValuePointer,
|
100
|
+
WorkspaceSecretPointer,
|
101
|
+
ExecutionCounterPointer,
|
102
|
+
]
|
103
|
+
|
104
|
+
|
59
105
|
def infer_vellum_variable_type(value: Any) -> VellumVariableType:
|
60
106
|
inferred_type: VellumVariableType
|
61
107
|
|
@@ -1,12 +1,7 @@
|
|
1
|
-
from dataclasses import dataclass
|
1
|
+
from dataclasses import dataclass
|
2
2
|
from uuid import UUID
|
3
|
-
from typing import List, Literal, Optional
|
3
|
+
from typing import List, Literal, Optional
|
4
4
|
|
5
|
-
from pydantic import Field
|
6
|
-
|
7
|
-
from vellum import VellumVariableType
|
8
|
-
from vellum.client.types.array_vellum_value import ArrayVellumValue
|
9
|
-
from vellum.client.types.vellum_value import VellumValue
|
10
5
|
from vellum.core import UniversalBaseModel
|
11
6
|
from vellum_ee.workflows.display.base import (
|
12
7
|
EdgeDisplay,
|
@@ -17,27 +12,15 @@ from vellum_ee.workflows.display.base import (
|
|
17
12
|
StateValueDisplayOverrides,
|
18
13
|
WorkflowInputsDisplay,
|
19
14
|
WorkflowInputsDisplayOverrides,
|
20
|
-
WorkflowMetaDisplay,
|
21
15
|
WorkflowMetaDisplayOverrides,
|
22
16
|
WorkflowOutputDisplayOverrides,
|
23
17
|
)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
class NodeDisplayComment(UniversalBaseModel):
|
32
|
-
value: Optional[str] = None
|
33
|
-
expanded: Optional[bool] = None
|
34
|
-
|
35
|
-
|
36
|
-
class NodeDisplayData(UniversalBaseModel):
|
37
|
-
position: NodeDisplayPosition = Field(default_factory=NodeDisplayPosition)
|
38
|
-
width: Optional[int] = None
|
39
|
-
height: Optional[int] = None
|
40
|
-
comment: Optional[NodeDisplayComment] = None
|
18
|
+
from vellum_ee.workflows.display.base import WorkflowDisplayData # noqa: F401 - Remove in 0.15.0
|
19
|
+
from vellum_ee.workflows.display.base import WorkflowDisplayDataViewport # noqa: F401 - Remove in 0.15.0
|
20
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayComment # noqa: F401 - Remove in 0.15.0
|
21
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayData
|
22
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayPosition # noqa: F401 - Remove in 0.15.0
|
23
|
+
from vellum_ee.workflows.display.utils.vellum import NodeInputValuePointerRule
|
41
24
|
|
42
25
|
|
43
26
|
class CodeResourceDefinition(UniversalBaseModel):
|
@@ -45,26 +28,21 @@ class CodeResourceDefinition(UniversalBaseModel):
|
|
45
28
|
module: List[str]
|
46
29
|
|
47
30
|
|
48
|
-
class WorkflowDisplayDataViewport(UniversalBaseModel):
|
49
|
-
x: float = 0.0
|
50
|
-
y: float = 0.0
|
51
|
-
zoom: float = 1.0
|
52
|
-
|
53
|
-
|
54
|
-
class WorkflowDisplayData(UniversalBaseModel):
|
55
|
-
viewport: WorkflowDisplayDataViewport = Field(default_factory=WorkflowDisplayDataViewport)
|
56
|
-
|
57
|
-
|
58
31
|
@dataclass
|
59
|
-
class WorkflowMetaVellumDisplayOverrides(
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
32
|
+
class WorkflowMetaVellumDisplayOverrides(WorkflowMetaDisplayOverrides):
|
33
|
+
"""
|
34
|
+
DEPRECATED: Use WorkflowMetaDisplay instead. Will be removed in 0.15.0
|
35
|
+
"""
|
36
|
+
|
37
|
+
pass
|
64
38
|
|
65
39
|
|
66
40
|
@dataclass
|
67
41
|
class WorkflowMetaVellumDisplay(WorkflowMetaVellumDisplayOverrides):
|
42
|
+
"""
|
43
|
+
DEPRECATED: Use WorkflowMetaDisplay instead. Will be removed in 0.15.0
|
44
|
+
"""
|
45
|
+
|
68
46
|
pass
|
69
47
|
|
70
48
|
|
@@ -145,61 +123,6 @@ class WorkflowOutputVellumDisplay(WorkflowOutputVellumDisplayOverrides):
|
|
145
123
|
pass
|
146
124
|
|
147
125
|
|
148
|
-
class ConstantValuePointer(UniversalBaseModel):
|
149
|
-
type: Literal["CONSTANT_VALUE"] = "CONSTANT_VALUE"
|
150
|
-
data: VellumValue
|
151
|
-
|
152
|
-
|
153
|
-
ArrayVellumValue.model_rebuild()
|
154
|
-
|
155
|
-
|
156
|
-
class NodeOutputData(UniversalBaseModel):
|
157
|
-
node_id: str
|
158
|
-
output_id: str
|
159
|
-
|
160
|
-
|
161
|
-
class NodeOutputPointer(UniversalBaseModel):
|
162
|
-
type: Literal["NODE_OUTPUT"] = "NODE_OUTPUT"
|
163
|
-
data: NodeOutputData
|
164
|
-
|
165
|
-
|
166
|
-
class InputVariableData(UniversalBaseModel):
|
167
|
-
input_variable_id: str
|
168
|
-
|
169
|
-
|
170
|
-
class InputVariablePointer(UniversalBaseModel):
|
171
|
-
type: Literal["INPUT_VARIABLE"] = "INPUT_VARIABLE"
|
172
|
-
data: InputVariableData
|
173
|
-
|
174
|
-
|
175
|
-
class WorkspaceSecretData(UniversalBaseModel):
|
176
|
-
type: VellumVariableType
|
177
|
-
workspace_secret_id: Optional[str] = None
|
178
|
-
|
179
|
-
|
180
|
-
class WorkspaceSecretPointer(UniversalBaseModel):
|
181
|
-
type: Literal["WORKSPACE_SECRET"] = "WORKSPACE_SECRET"
|
182
|
-
data: WorkspaceSecretData
|
183
|
-
|
184
|
-
|
185
|
-
class ExecutionCounterData(UniversalBaseModel):
|
186
|
-
node_id: str
|
187
|
-
|
188
|
-
|
189
|
-
class ExecutionCounterPointer(UniversalBaseModel):
|
190
|
-
type: Literal["EXECUTION_COUNTER"] = "EXECUTION_COUNTER"
|
191
|
-
data: ExecutionCounterData
|
192
|
-
|
193
|
-
|
194
|
-
NodeInputValuePointerRule = Union[
|
195
|
-
NodeOutputPointer,
|
196
|
-
InputVariablePointer,
|
197
|
-
ConstantValuePointer,
|
198
|
-
WorkspaceSecretPointer,
|
199
|
-
ExecutionCounterPointer,
|
200
|
-
]
|
201
|
-
|
202
|
-
|
203
126
|
class NodeInputValuePointer(UniversalBaseModel):
|
204
127
|
rules: List[NodeInputValuePointerRule]
|
205
128
|
combinator: Literal["OR"] = "OR"
|
@@ -25,16 +25,22 @@ from vellum_ee.workflows.display.base import (
|
|
25
25
|
StateValueDisplayType,
|
26
26
|
WorkflowInputsDisplayOverridesType,
|
27
27
|
WorkflowInputsDisplayType,
|
28
|
-
|
29
|
-
WorkflowMetaDisplayType,
|
28
|
+
WorkflowMetaDisplay,
|
30
29
|
WorkflowOutputDisplay,
|
31
30
|
)
|
32
31
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
33
32
|
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
34
33
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
35
|
-
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay
|
34
|
+
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay
|
36
35
|
from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
|
37
|
-
from vellum_ee.workflows.display.types import
|
36
|
+
from vellum_ee.workflows.display.types import (
|
37
|
+
EdgeDisplays,
|
38
|
+
NodeDisplays,
|
39
|
+
NodeOutputDisplays,
|
40
|
+
PortDisplays,
|
41
|
+
WorkflowDisplayContext,
|
42
|
+
WorkflowOutputDisplays,
|
43
|
+
)
|
38
44
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
39
45
|
|
40
46
|
logger = logging.getLogger(__name__)
|
@@ -43,8 +49,6 @@ logger = logging.getLogger(__name__)
|
|
43
49
|
class BaseWorkflowDisplay(
|
44
50
|
Generic[
|
45
51
|
WorkflowType,
|
46
|
-
WorkflowMetaDisplayType,
|
47
|
-
WorkflowMetaDisplayOverridesType,
|
48
52
|
WorkflowInputsDisplayType,
|
49
53
|
WorkflowInputsDisplayOverridesType,
|
50
54
|
StateValueDisplayType,
|
@@ -54,7 +58,7 @@ class BaseWorkflowDisplay(
|
|
54
58
|
]
|
55
59
|
):
|
56
60
|
# Used to specify the display data for a workflow.
|
57
|
-
workflow_display: Optional[
|
61
|
+
workflow_display: Optional[WorkflowMetaDisplay] = None
|
58
62
|
|
59
63
|
# Used to explicitly specify display data for a workflow's inputs.
|
60
64
|
inputs_display: Dict[WorkflowInputReference, WorkflowInputsDisplayOverridesType] = {}
|
@@ -66,13 +70,13 @@ class BaseWorkflowDisplay(
|
|
66
70
|
entrypoint_displays: Dict[Type[BaseNode], EntrypointDisplayOverridesType] = {}
|
67
71
|
|
68
72
|
# Used to explicitly specify display data for a workflow's outputs.
|
69
|
-
output_displays:
|
73
|
+
output_displays: WorkflowOutputDisplays = {}
|
70
74
|
|
71
75
|
# Used to explicitly specify display data for a workflow's edges.
|
72
|
-
edge_displays:
|
76
|
+
edge_displays: EdgeDisplays = {}
|
73
77
|
|
74
78
|
# Used to explicitly specify display data for a workflow's ports.
|
75
|
-
port_displays:
|
79
|
+
port_displays: PortDisplays = {}
|
76
80
|
|
77
81
|
# Used to store the mapping between workflows and their display classes
|
78
82
|
_workflow_display_registry: Dict[Type[WorkflowType], Type["BaseWorkflowDisplay"]] = {}
|
@@ -87,7 +91,6 @@ class BaseWorkflowDisplay(
|
|
87
91
|
*,
|
88
92
|
parent_display_context: Optional[
|
89
93
|
WorkflowDisplayContext[
|
90
|
-
WorkflowMetaDisplayType,
|
91
94
|
WorkflowInputsDisplayType,
|
92
95
|
StateValueDisplayType,
|
93
96
|
EntrypointDisplayType,
|
@@ -183,50 +186,41 @@ class BaseWorkflowDisplay(
|
|
183
186
|
def display_context(
|
184
187
|
self,
|
185
188
|
) -> WorkflowDisplayContext[
|
186
|
-
WorkflowMetaDisplayType,
|
187
189
|
WorkflowInputsDisplayType,
|
188
190
|
StateValueDisplayType,
|
189
191
|
EntrypointDisplayType,
|
190
192
|
]:
|
191
193
|
workflow_display = self._generate_workflow_meta_display()
|
192
194
|
|
193
|
-
global_node_output_displays:
|
195
|
+
global_node_output_displays: NodeOutputDisplays = (
|
194
196
|
copy(self._parent_display_context.global_node_output_displays) if self._parent_display_context else {}
|
195
197
|
)
|
196
198
|
|
197
|
-
node_displays:
|
199
|
+
node_displays: NodeDisplays = {}
|
198
200
|
|
199
|
-
global_node_displays:
|
201
|
+
global_node_displays: NodeDisplays = (
|
200
202
|
copy(self._parent_display_context.global_node_displays) if self._parent_display_context else {}
|
201
203
|
)
|
202
204
|
|
203
|
-
port_displays:
|
205
|
+
port_displays: PortDisplays = {}
|
204
206
|
|
205
207
|
for node in self._workflow.get_nodes():
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
global_node_displays[extracted_node] = extracted_node_display
|
214
|
-
|
215
|
-
self._enrich_global_node_output_displays(node, extracted_node_displays[node], global_node_output_displays)
|
216
|
-
self._enrich_node_port_displays(node, extracted_node_displays[node], port_displays)
|
208
|
+
self._enrich_node_displays(
|
209
|
+
node=node,
|
210
|
+
node_displays=node_displays,
|
211
|
+
global_node_displays=global_node_displays,
|
212
|
+
global_node_output_displays=global_node_output_displays,
|
213
|
+
port_displays=port_displays,
|
214
|
+
)
|
217
215
|
|
218
216
|
for node in self._workflow.get_unused_nodes():
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
global_node_displays[extracted_node] = extracted_node_display
|
227
|
-
|
228
|
-
self._enrich_global_node_output_displays(node, extracted_node_displays[node], global_node_output_displays)
|
229
|
-
self._enrich_node_port_displays(node, extracted_node_displays[node], port_displays)
|
217
|
+
self._enrich_node_displays(
|
218
|
+
node=node,
|
219
|
+
node_displays=node_displays,
|
220
|
+
global_node_displays=global_node_displays,
|
221
|
+
global_node_output_displays=global_node_output_displays,
|
222
|
+
port_displays=port_displays,
|
223
|
+
)
|
230
224
|
|
231
225
|
workflow_input_displays: Dict[WorkflowInputReference, WorkflowInputsDisplayType] = {}
|
232
226
|
# If we're dealing with a nested workflow, then it should have access to the inputs of its parents.
|
@@ -312,7 +306,7 @@ class BaseWorkflowDisplay(
|
|
312
306
|
)
|
313
307
|
|
314
308
|
@abstractmethod
|
315
|
-
def _generate_workflow_meta_display(self) ->
|
309
|
+
def _generate_workflow_meta_display(self) -> WorkflowMetaDisplay:
|
316
310
|
pass
|
317
311
|
|
318
312
|
@abstractmethod
|
@@ -331,7 +325,7 @@ class BaseWorkflowDisplay(
|
|
331
325
|
def _generate_entrypoint_display(
|
332
326
|
self,
|
333
327
|
entrypoint: Type[BaseNode],
|
334
|
-
workflow_display:
|
328
|
+
workflow_display: WorkflowMetaDisplay,
|
335
329
|
node_displays: Dict[Type[BaseNode], BaseNodeDisplay],
|
336
330
|
overrides: Optional[EntrypointDisplayOverridesType] = None,
|
337
331
|
) -> EntrypointDisplayType:
|
@@ -418,6 +412,26 @@ class BaseWorkflowDisplay(
|
|
418
412
|
)
|
419
413
|
return display_meta
|
420
414
|
|
415
|
+
def _enrich_node_displays(
|
416
|
+
self,
|
417
|
+
node: Type[BaseNode],
|
418
|
+
node_displays: NodeDisplays,
|
419
|
+
global_node_displays: NodeDisplays,
|
420
|
+
global_node_output_displays: NodeOutputDisplays,
|
421
|
+
port_displays: PortDisplays,
|
422
|
+
) -> None:
|
423
|
+
extracted_node_displays = self._extract_node_displays(node)
|
424
|
+
|
425
|
+
for extracted_node, extracted_node_display in extracted_node_displays.items():
|
426
|
+
if extracted_node not in node_displays:
|
427
|
+
node_displays[extracted_node] = extracted_node_display
|
428
|
+
|
429
|
+
if extracted_node not in global_node_displays:
|
430
|
+
global_node_displays[extracted_node] = extracted_node_display
|
431
|
+
|
432
|
+
self._enrich_global_node_output_displays(node, extracted_node_displays[node], global_node_output_displays)
|
433
|
+
self._enrich_node_port_displays(node, extracted_node_displays[node], port_displays)
|
434
|
+
|
421
435
|
def _extract_node_displays(self, node: Type[BaseNode]) -> Dict[Type[BaseNode], BaseNodeDisplay]:
|
422
436
|
node_display = self._get_node_display(node)
|
423
437
|
additional_node_displays: Dict[Type[BaseNode], BaseNodeDisplay] = {
|
@@ -7,10 +7,10 @@ from vellum.workflows.nodes.core.retry_node.node import RetryNode
|
|
7
7
|
from vellum.workflows.nodes.core.templating_node.node import TemplatingNode
|
8
8
|
from vellum.workflows.nodes.core.try_node.node import TryNode
|
9
9
|
from vellum.workflows.workflows.base import BaseWorkflow
|
10
|
+
from vellum_ee.workflows.display.editor.types import NodeDisplayData, NodeDisplayPosition
|
10
11
|
from vellum_ee.workflows.display.nodes import BaseNodeDisplay
|
11
12
|
from vellum_ee.workflows.display.nodes.vellum.retry_node import BaseRetryNodeDisplay
|
12
13
|
from vellum_ee.workflows.display.nodes.vellum.try_node import BaseTryNodeDisplay
|
13
|
-
from vellum_ee.workflows.display.vellum import NodeDisplayData, NodeDisplayPosition
|
14
14
|
from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
|
15
15
|
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
16
16
|
|
@@ -12,6 +12,7 @@ from vellum.workflows.references.output import OutputReference
|
|
12
12
|
from vellum.workflows.types.core import JsonArray, JsonObject
|
13
13
|
from vellum.workflows.types.generics import WorkflowType
|
14
14
|
from vellum.workflows.utils.uuids import uuid4_from_hash
|
15
|
+
from vellum_ee.workflows.display.base import WorkflowMetaDisplay
|
15
16
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
16
17
|
from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
|
17
18
|
from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
|
@@ -25,7 +26,6 @@ from vellum_ee.workflows.display.vellum import (
|
|
25
26
|
WorkflowInputsVellumDisplay,
|
26
27
|
WorkflowInputsVellumDisplayOverrides,
|
27
28
|
WorkflowMetaVellumDisplay,
|
28
|
-
WorkflowMetaVellumDisplayOverrides,
|
29
29
|
)
|
30
30
|
from vellum_ee.workflows.display.workflows.base_workflow_display import BaseWorkflowDisplay
|
31
31
|
|
@@ -35,8 +35,6 @@ logger = logging.getLogger(__name__)
|
|
35
35
|
class VellumWorkflowDisplay(
|
36
36
|
BaseWorkflowDisplay[
|
37
37
|
WorkflowType,
|
38
|
-
WorkflowMetaVellumDisplay,
|
39
|
-
WorkflowMetaVellumDisplayOverrides,
|
40
38
|
WorkflowInputsVellumDisplay,
|
41
39
|
WorkflowInputsVellumDisplayOverrides,
|
42
40
|
StateValueVellumDisplay,
|
@@ -346,7 +344,7 @@ class VellumWorkflowDisplay(
|
|
346
344
|
def _generate_entrypoint_display(
|
347
345
|
self,
|
348
346
|
entrypoint: Type[BaseNode],
|
349
|
-
workflow_display:
|
347
|
+
workflow_display: WorkflowMetaDisplay,
|
350
348
|
node_displays: Dict[Type[BaseNode], BaseNodeDisplay],
|
351
349
|
overrides: Optional[EntrypointVellumDisplayOverrides] = None,
|
352
350
|
) -> EntrypointVellumDisplay:
|
File without changes
|
File without changes
|
File without changes
|