vellum-ai 1.6.4__py3-none-any.whl → 1.7.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. vellum/__init__.py +2 -0
  2. vellum/client/core/client_wrapper.py +2 -2
  3. vellum/client/reference.md +81 -0
  4. vellum/client/resources/container_images/client.py +8 -2
  5. vellum/client/resources/container_images/raw_client.py +8 -0
  6. vellum/client/resources/workflows/client.py +81 -0
  7. vellum/client/resources/workflows/raw_client.py +85 -0
  8. vellum/client/types/__init__.py +2 -0
  9. vellum/client/types/workflow_resolved_state.py +31 -0
  10. vellum/types/workflow_resolved_state.py +3 -0
  11. vellum/workflows/descriptors/base.py +3 -0
  12. vellum/workflows/errors/types.py +1 -0
  13. vellum/workflows/inputs/base.py +4 -1
  14. vellum/workflows/inputs/tests/test_inputs.py +21 -0
  15. vellum/workflows/runner/runner.py +16 -0
  16. vellum/workflows/workflows/base.py +2 -0
  17. {vellum_ai-1.6.4.dist-info → vellum_ai-1.7.0.dist-info}/METADATA +1 -1
  18. {vellum_ai-1.6.4.dist-info → vellum_ai-1.7.0.dist-info}/RECORD +35 -33
  19. vellum_ee/assets/node-definitions.json +157 -12
  20. vellum_ee/workflows/display/exceptions.py +2 -6
  21. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +1 -1
  22. vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +1 -1
  23. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +11 -4
  24. vellum_ee/workflows/display/nodes/vellum/search_node.py +4 -4
  25. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +11 -4
  26. vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +1 -1
  27. vellum_ee/workflows/display/utils/exceptions.py +19 -0
  28. vellum_ee/workflows/display/utils/expressions.py +19 -11
  29. vellum_ee/workflows/display/utils/vellum.py +7 -1
  30. vellum_ee/workflows/display/workflows/base_workflow_display.py +2 -2
  31. vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +54 -1
  32. vellum_ee/workflows/tests/test_server.py +41 -0
  33. {vellum_ai-1.6.4.dist-info → vellum_ai-1.7.0.dist-info}/LICENSE +0 -0
  34. {vellum_ai-1.6.4.dist-info → vellum_ai-1.7.0.dist-info}/WHEEL +0 -0
  35. {vellum_ai-1.6.4.dist-info → vellum_ai-1.7.0.dist-info}/entry_points.txt +0 -0
@@ -22,7 +22,7 @@ vellum_cli/tests/test_ping.py,sha256=b3aQLd-N59_8w2rRiWqwpB1rlHaKEYVbAj1Y3hi7A-g
22
22
  vellum_cli/tests/test_pull.py,sha256=e2XHzcHIx9k-FyuNAl7wMSNsSSebPGyP6U05JGcddFs,49447
23
23
  vellum_cli/tests/test_push.py,sha256=2MjkNKr_9Guv5Exjsm3L1BeVXmPkKUcCSiKnp90HgW4,41996
24
24
  vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- vellum_ee/assets/node-definitions.json,sha256=UDx8gBZ4Vj853aY7CSHR8JipVjZSQiKdkOKwKqwwVKw,25499
25
+ vellum_ee/assets/node-definitions.json,sha256=tinXep1k-FicJWSPQb5mlWRkdKul1WJtG4o94SqD4ds,29800
26
26
  vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  vellum_ee/scripts/generate_node_definitions.py,sha256=FOYQsXIqU45I0OAcsyZUGODF9JK44yunf58rR6YaAdA,3303
28
28
  vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -30,7 +30,7 @@ vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
30
30
  vellum_ee/workflows/display/base.py,sha256=R3f2T8FlZrXn2FawAmpVuLB3fKFWw11mCUulWAyIKA0,1912
31
31
  vellum_ee/workflows/display/editor/__init__.py,sha256=MSAgY91xCEg2neH5d8jXx5wRdR962ftZVa6vO9BGq9k,167
32
32
  vellum_ee/workflows/display/editor/types.py,sha256=rmaNXkNZUNRgK-mJJ_g1-Fm3OGxoQfqEB7zn-zzgJtc,664
33
- vellum_ee/workflows/display/exceptions.py,sha256=Oys39dHoW-s-1dnlRSZxTntMq8_macj-b2CT_6dqzJs,355
33
+ vellum_ee/workflows/display/exceptions.py,sha256=_FDhK-lfuBPHY2GSywp70ewM0k55Ji5Bp-wZlEZenz4,112
34
34
  vellum_ee/workflows/display/nodes/__init__.py,sha256=jI1aPBQf8DkmrYoZ4O-wR1duqZByOf5mDFmo_wFJPE4,307
35
35
  vellum_ee/workflows/display/nodes/base_node_display.py,sha256=C0Dxwss5yoxSLotTRUP2h7oxGjb0dDIdsc-83HVFCP8,19493
36
36
  vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=jI_kUi9LnNLDpY63QtlC4TfN8P571VN4LpzH0I1ZtLk,1149
@@ -41,24 +41,24 @@ vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqU
41
41
  vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLPyRNe8YIrx3Yo9HeeW-aXXFk,1668
42
42
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=nCtFc5f9u0-OOZvVcMZtc6wwq7MyqAGATH-jPgRTMNM,9028
43
43
  vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=FHhPoGmmny4Xcxi2pm12Sk3ZOREanWEVrOWcjRhncH4,6337
44
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=GfwA2Tn0OpdIUiPW9tD2dyv33e3M8yhGt9VfOeN81bU,5146
44
+ vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=qvPSqYKz9op7gKg-ZjKa3U6dsaaxuv76TIIbUMeGKjY,5152
45
45
  vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=dtO9A-rjbDEJrywwrOxwEXahqrW-S493OIDHOti9Sjs,11498
46
46
  vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=8tSb8qGVoRIELubu0qPeoDlt1LpiIqc6d9_30GWRd_k,2266
47
47
  vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=z4oeTgKnMGVaGig8XOZm5B_xYL4H7zweYlFweCbhnyA,3000
48
48
  vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=9_AslWjzj4RHH2sq3SIaq9FU0NCg7ex5TIWrNMybqXg,2173
49
49
  vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=KA4U5NADWCBBbTG0f76OOFW9HvlWd5DfZoqN5Y0ZK9c,12167
50
- vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=m20_ZZ3Au0ZCpI3TNC9xh54ld1X13CNq-T51VOtP23k,6434
50
+ vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=dfZuJEENgP5uvF4IzyWJdoqopjjZa_u1-VWtWBHADqI,6440
51
51
  vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=we7NENZpci-LiWXJFTPWzliCMdjzCMMMWUCfgJ-oP0g,4297
52
52
  vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=xMHaPfTSZWYprQenlHm2g47u0a5O9Me_dhAjfqo8nKQ,3116
53
53
  vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=6PcAFA_EJn7vEMdqgoRjYTLHwnXCrJv80B10zuUx4jE,1026
54
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=uo4YZRV48iX4peGAA1xkGniSPrepywvW_gS7codt-VQ,3378
54
+ vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=Ue727X7g7jUo9Yi_AXoLD-IQHi0crENkMJjPBY2hZO8,3709
55
55
  vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=5xv5OR4xRuI1R5yqJDZTNdCFYY-z8PkTdpWM4ziGjw0,3192
56
- vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=bBMaK__Bdbp3cGTkHvjXthZaohL25vzakGiodes7mss,12025
57
- vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=n6gaTWOkiycUExbO5Vk_ZYNXRW6_V4LNfXdxPDevWIs,2800
56
+ vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=ZHqkwzCRsM0TkZmh3ePHreZAoQXeT-SFS7zbUrSjMsw,12037
57
+ vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=hC5hTSRf1f9ppiZ_wXzpcp-jl0fwNAUB9PY8s0AykHs,3131
58
58
  vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=QExp4l2KMNBdqMVDL4CG_iFMpFf3RYiTP2q5P2DmEFk,3178
59
59
  vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
60
  vellum_ee/workflows/display/nodes/vellum/tests/test_api_node.py,sha256=DQAtsabvn6BE6xWwKNHzMOppzoy1-1dssNnrwbHUdRU,1490
61
- vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=oEH9myRn-NAP_mRstV0LifX3ncbmAOjCvyIVCZhACk0,10885
61
+ vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=6_1yVYftVnqXJn3hLUGHlcHvbgKbQgBfS6vYQ6R79oc,10891
62
62
  vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=540FoWMpJ3EN_DPjHsr9ODJWCRVcUa5hZBn-5T2GiHU,1665
63
63
  vellum_ee/workflows/display/nodes/vellum/tests/test_final_output_node.py,sha256=KVftEQxXARlcr-Uuo1ZK_wEHTcTH64OZJ3Ub3mN8x7I,3006
64
64
  vellum_ee/workflows/display/nodes/vellum/tests/test_inline_subworkflow_node.py,sha256=SKOYan-dxY4gsO0R4JyQUyWrABHBN8XImKw9Eeo4wGo,3535
@@ -117,18 +117,18 @@ vellum_ee/workflows/display/types.py,sha256=LgRIZeEtV7bQe-nvrC4A0T6vMooSWT1rFtw-
117
117
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
118
  vellum_ee/workflows/display/utils/auto_layout.py,sha256=f4GiLn_LazweupfqTpubcdtdfE_vrOcmZudSsnYIY9E,3906
119
119
  vellum_ee/workflows/display/utils/events.py,sha256=DE33uoKW78BZtITJ6L22dMZN3KR1BuZBVC98C_gIyzU,1943
120
- vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
121
- vellum_ee/workflows/display/utils/expressions.py,sha256=j4FMK2u2lrDZSBf6cNPFkjdnrmG3jjLJO4BdTRc2nfI,19908
120
+ vellum_ee/workflows/display/utils/exceptions.py,sha256=E8Lvo7LY1BoZ54M_NR_opDjJsAAiCUfow1HgoHcTHmg,989
121
+ vellum_ee/workflows/display/utils/expressions.py,sha256=mg-AHKGvnRjB1y4nXFJp7uRuAkUGITnuZ6aRDnEzPXk,20512
122
122
  vellum_ee/workflows/display/utils/registry.py,sha256=1qXiBTdsnro6FeCX0FGBEK7CIf6wa--Jt50iZ_nEp_M,3460
123
123
  vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
124
  vellum_ee/workflows/display/utils/tests/test_auto_layout.py,sha256=vfXI769418s9vda5Gb5NFBH747WMOwSgHRXeLCTLVm8,2356
125
125
  vellum_ee/workflows/display/utils/tests/test_events.py,sha256=42IEBnMbaQrH8gigw5hXIt_kG3rVvrSMop9QYiL2xDs,4586
126
- vellum_ee/workflows/display/utils/vellum.py,sha256=e8Yv8xKam6ASV7BpJT6FfUl313a8eB4l_OX-nshO_HU,6034
126
+ vellum_ee/workflows/display/utils/vellum.py,sha256=Bt7kdLdXoBsHn5dVEY2uKcF542VL09jwu8J_30rl2vk,6413
127
127
  vellum_ee/workflows/display/vellum.py,sha256=J2mdJZ1sdLW535DDUkq_Vm8Z572vhuxHxVZF9deKSdk,391
128
128
  vellum_ee/workflows/display/workflows/__init__.py,sha256=JTB9ObEV3l4gGGdtfBHwVJtTTKC22uj-a-XjTVwXCyA,148
129
- vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=6JgBurX34eCYyjEpJ4439DjeskMqp66lvFAio2scBj8,44305
129
+ vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=FAsEeqkQu4xGvdZ4Ri5H7LDEISQYziidPc2QHzbOVWs,44311
130
130
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=gxz76AeCqgAZ9D2lZeTiZzxY9eMgn3qOSfVgiqYcOh8,2028
131
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=OKf_WVoPkYPrielOz8CyI5AjWt9MS2nSbWQKpF7HSLI,37847
131
+ vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=lg-c_3P3ldtqWq2VFsk_2Mkn3pVdXWuT59QpH7QwXVs,39764
132
132
  vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
133
  vellum_ee/workflows/server/virtual_file_loader.py,sha256=7JphJcSO3H85qiC2DpFfBWjC3JjrbRmoynBC6KKHVsA,2710
134
134
  vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -153,14 +153,14 @@ vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIP
153
153
  vellum_ee/workflows/tests/test_display_meta.py,sha256=PkXJVnMZs9GNooDkd59n4YTBAX3XGPQWeSSVbhehVFM,5112
154
154
  vellum_ee/workflows/tests/test_registry.py,sha256=B8xRIuEyLWfSqrYoPldNQXhKPfe50PllvtAZoI8-uPs,6066
155
155
  vellum_ee/workflows/tests/test_serialize_module.py,sha256=zleQTcGZa5_nzwu4zpFoqEHhk7pb64hGrhObR4anhPQ,4471
156
- vellum_ee/workflows/tests/test_server.py,sha256=dXFBraU99Y6cKp2aBhLFXQTScSRcE9WaWjo1z9piqdU,23344
156
+ vellum_ee/workflows/tests/test_server.py,sha256=DtQdVlRlfIvq0L9mSs0SncI0jHgDAq05HQCLj29aiZo,24728
157
157
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
158
- vellum/__init__.py,sha256=i7aah42VTp3735JX69uHUipLZBD8PwX_CXUY_9t-zuY,49356
158
+ vellum/__init__.py,sha256=KGWwGtZMz-k9i8L1eHVnlEByJBSH31hAcCIVLNYB9Q0,49412
159
159
  vellum/client/README.md,sha256=flqu57ubZNTfpq60CdLtJC9gp4WEkyjb_n_eZ4OYf9w,6497
160
160
  vellum/client/__init__.py,sha256=rMnKRqL5-356SBc-rfm56MkO87PuAi2mtcfBszcJU1M,74316
161
161
  vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
162
162
  vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
163
- vellum/client/core/client_wrapper.py,sha256=EQroyMygQaKudbqG-NTWixPzjdmHV_wnRNH5sxTldIY,2840
163
+ vellum/client/core/client_wrapper.py,sha256=7jdvkc9bp52v55uLBImLe_fMXRZUgS2HqLAzuk-JDRg,2840
164
164
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
165
165
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
166
166
  vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -181,14 +181,14 @@ vellum/client/errors/not_found_error.py,sha256=YrqVM0oc3qkQbFbmmm6xr300VGfUNxMSy
181
181
  vellum/client/errors/too_many_requests_error.py,sha256=SJJemdgUlQHV_VpxK8UfFNexgZebNT5_MTOeQs6oVgc,397
182
182
  vellum/client/errors/unauthorized_error.py,sha256=waPl5Swiqsk3FQK-Lljzx4KDh4RPZ0wL6BLHjM8onQ8,394
183
183
  vellum/client/raw_client.py,sha256=cmMR0t87iUYvkIE9L4g0dcCmw3uUQNze9rD9CBv5rzs,113481
184
- vellum/client/reference.md,sha256=l8NSUCZwY-su4jNuGrQmx3lSA_OgMUF7ILu0otL6BJA,105250
184
+ vellum/client/reference.md,sha256=gAIp6dXDNddILqc5zicSGiZvtK0kP--WM6FThRxpmCA,106191
185
185
  vellum/client/resources/__init__.py,sha256=JlNoSZYFGxLTuzPvmMV1b8IWDYjlDL4BaBbq9TgfGUE,1765
186
186
  vellum/client/resources/ad_hoc/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
187
187
  vellum/client/resources/ad_hoc/client.py,sha256=v5I_YzJaaPezsE4KVuMSUXJISstKuJ_9-VUeXakIJhw,14353
188
188
  vellum/client/resources/ad_hoc/raw_client.py,sha256=JSbwEoowm41Wm9u4hQNoAIHG_-IX6IYfsBRn2tGZ-gM,24864
189
189
  vellum/client/resources/container_images/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
190
- vellum/client/resources/container_images/client.py,sha256=o3K1T2zuU738YsNvHeImytorl8sRCgnuv-u6F9O5fZk,9874
191
- vellum/client/resources/container_images/raw_client.py,sha256=ddsLR8tbDa7D-hJsjPU8n3GeTYN71CMwTfPK2_L5Sc4,14422
190
+ vellum/client/resources/container_images/client.py,sha256=n-Mc-owByDaiZ0BfQoof4RF9jwxbW8FhCqCBe0sL65I,10068
191
+ vellum/client/resources/container_images/raw_client.py,sha256=97GhqajNJC_FvdseF1tk0VNumk9-wDgTiGCk6pEHGuU,14654
192
192
  vellum/client/resources/deployments/__init__.py,sha256=Aze0YlID_nRBVASy8dUOrXmtn7_l_z6oG576vsr2n4g,259
193
193
  vellum/client/resources/deployments/client.py,sha256=NWvDrhQVNuk27nR1KdI89nBVDVf1tmDR3e6LLic2wKY,28234
194
194
  vellum/client/resources/deployments/raw_client.py,sha256=Gbjv0NysAcwR_mB9xCkVMoBBMJVb-JthX_lQE-Hmkk0,41783
@@ -256,8 +256,8 @@ vellum/client/resources/workflow_sandboxes/raw_client.py,sha256=iQpaFR-D96ygLLh4
256
256
  vellum/client/resources/workflow_sandboxes/types/__init__.py,sha256=mZxwNpOmBfllmNZrhp8e_M62hUFI73B2fNlvgG8vi3Y,232
257
257
  vellum/client/resources/workflow_sandboxes/types/list_workflow_sandbox_examples_request_tag.py,sha256=TEwWit20W3X-zWPPLAhmUG05UudG9gaBSJ4Q4-rNJws,188
258
258
  vellum/client/resources/workflows/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
259
- vellum/client/resources/workflows/client.py,sha256=vEu33ooKfiZs-Uj0xxAwKweABoXBgI39TIN0HSuq0J4,10433
260
- vellum/client/resources/workflows/raw_client.py,sha256=4-4YRpl2v0AOzgZl1E-fVOX18VVsa-he8d3imTEtWdo,17187
259
+ vellum/client/resources/workflows/client.py,sha256=rJFFiPTfsB3HxXJC6w-rIwCTZvNFyZFja1EfPtXBEeA,12602
260
+ vellum/client/resources/workflows/raw_client.py,sha256=VnrIf4GQ8wc5PCpP3undKyIhnChfGeZo5uyiAv4pNNA,20503
261
261
  vellum/client/resources/workspace_secrets/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
262
262
  vellum/client/resources/workspace_secrets/client.py,sha256=rKyHM9EJalA0adkQ0SDN5CmXjiddgVCO73y7Q4qqRP0,5722
263
263
  vellum/client/resources/workspace_secrets/raw_client.py,sha256=ZfiNd1NisolmK07QPyojW_KFlIWpnjVNLA8Aq5JC-zQ,7832
@@ -266,7 +266,7 @@ vellum/client/resources/workspaces/client.py,sha256=36KYa2FDu6h65q2GscUFOJs4qKei
266
266
  vellum/client/resources/workspaces/raw_client.py,sha256=M3Ewk1ZfEZ44EeTvBtBNoNKi5whwfLY-1GR07SyfDTI,3517
267
267
  vellum/client/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
268
  vellum/client/tests/test_utils.py,sha256=zk8z45-2xrm9sZ2hq8PTqY8MXmXtPqMqYK0VBBX0GHg,1176
269
- vellum/client/types/__init__.py,sha256=KwWQ6Bw5bxx2PIECWgxnTdbht-saV-fcPFDVNDA9g-g,74697
269
+ vellum/client/types/__init__.py,sha256=HEMxdgVYEgkUl7Fd6Xkai_kWAHVoqZBPa3a1qOaB2Dg,74785
270
270
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=B69EesIH6fpNsdoiJaSG9zF1Sl17FnjoTu4CBkUSoHk,608
271
271
  vellum/client/types/ad_hoc_expand_meta.py,sha256=Kajcj3dKKed5e7uZibRnE3ZonK_bB2JPM-3aLjLfUp4,1295
272
272
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=5kD6ZcbU8P8ynK0lMD8Mh7vHzvQt06ziMyphvWYg6FU,968
@@ -940,6 +940,7 @@ vellum/client/types/workflow_request_json_input_request.py,sha256=LZu_IblkMhk5JW
940
940
  vellum/client/types/workflow_request_number_input_request.py,sha256=1eesPBjUA7wKWLR90x6in3U9H1ZuIt_2_OqIYjy-V9s,760
941
941
  vellum/client/types/workflow_request_string_input_request.py,sha256=oqdelrQTkpCH5d6tN6ytaTFVkBHJynl_bF8a_Grokh4,758
942
942
  vellum/client/types/workflow_request_video_input_request.py,sha256=SAZ-tX5w7Cfx_u5HueZhN9BUv3K9BLlz0nnUbNc9QrE,822
943
+ vellum/client/types/workflow_resolved_state.py,sha256=alygNoUthmApMt3FR1Mdk60C1GADDzEWFmt59QPz_P8,927
943
944
  vellum/client/types/workflow_result_event.py,sha256=LRA5i2sE9cZYQwZSygp7MnKXvHP8dB9gWVVxWY2w1f0,1343
944
945
  vellum/client/types/workflow_result_event_output_data.py,sha256=S_S_h42LMnqJv9FLEEASFS3HsqX2RZHT_kQeeWOSj28,1222
945
946
  vellum/client/types/workflow_result_event_output_data_array.py,sha256=pjEc56lhN5uTtB2DLXDkzH6mwj4glGNNXKG_dCAG_Io,1318
@@ -1759,6 +1760,7 @@ vellum/types/workflow_request_json_input_request.py,sha256=fkeZTjEns0R1UdA1oX8DW
1759
1760
  vellum/types/workflow_request_number_input_request.py,sha256=C5GareD-9BxO_LkcWnLTaUx_O7Z3iGy760gvrT2_Iyo,175
1760
1761
  vellum/types/workflow_request_string_input_request.py,sha256=ivQxu4db3dB7tlDlD8GUiVpn6IbsPVsuxdXeA2Jtk-4,175
1761
1762
  vellum/types/workflow_request_video_input_request.py,sha256=x4f5IMo8EaLGz0gckHBl-1bXHP9I5QrL8A-wBa11FYc,174
1763
+ vellum/types/workflow_resolved_state.py,sha256=aPKgnObJm8I6R4MXn7P3RiG5q2JB6AuOkw0C4Hzh-Eg,161
1762
1764
  vellum/types/workflow_result_event.py,sha256=JifChSMV7_5gIVYwHlvOxe2JD-HfSWBfTsCQghpO0yU,159
1763
1765
  vellum/types/workflow_result_event_output_data.py,sha256=jfl2_Oo21LmC1HOsZpt2Xkm6NhsW_DY9gt1EUfxOdJU,171
1764
1766
  vellum/types/workflow_result_event_output_data_array.py,sha256=MnUSnSZgUdFSOblnHhV6juyLEDvanINvmXCo7ixwZVw,177
@@ -1790,7 +1792,7 @@ vellum/workflows/__init__.py,sha256=gd5AiZqVTcvqelhysG0jOWYfC6pJKRAVhS7qwf0bHU4,
1790
1792
  vellum/workflows/constants.py,sha256=ApFp3fm_DOuakvZV-c0ybieyVp-wELgHk-GTzDJoDCg,1429
1791
1793
  vellum/workflows/context.py,sha256=ViyIeMDhUv-MhnynLaXPlvlbYxRU45ySvYidCNSbFZU,2458
1792
1794
  vellum/workflows/descriptors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1793
- vellum/workflows/descriptors/base.py,sha256=fRnRkECyDjfz2QEDCY9Q5mAerlJ6jR0R4nE-MP2VP_k,16558
1795
+ vellum/workflows/descriptors/base.py,sha256=v3WG2d_pekYtVK3Y2FSdVhf_XwNUnvXgSWuhr0VQRJM,16666
1794
1796
  vellum/workflows/descriptors/exceptions.py,sha256=Rv2uMiaO2a2SADhJzl_VHhV6dqwAhZAzaJPoThP7SZc,653
1795
1797
  vellum/workflows/descriptors/tests/test_utils.py,sha256=HJ5DoRz0sJvViGxyZ_FtytZjxN2J8xTkGtaVwCy6Q90,6928
1796
1798
  vellum/workflows/descriptors/utils.py,sha256=Z7kuhwb_D_kfcwKIAr1xI_AqYH6WFoZBYuslKQWZBFU,4399
@@ -1802,7 +1804,7 @@ vellum/workflows/emitters/vellum_emitter.py,sha256=t4ixrN0NNXrydMP9PVKYvcOMxoMqs
1802
1804
  vellum/workflows/environment/__init__.py,sha256=TJz0m9dwIs6YOwCTeuN0HHsU-ecyjc1OJXx4AFy83EQ,121
1803
1805
  vellum/workflows/environment/environment.py,sha256=Ck3RPKXJvtMGx_toqYQQQF-ZwXm5ijVwJpEPTeIJ4_Q,471
1804
1806
  vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
1805
- vellum/workflows/errors/types.py,sha256=zz-cQ74xut08eejJ8SrHYaNuoohhBRG_kO1X7TGN-mU,4503
1807
+ vellum/workflows/errors/types.py,sha256=dmIYCJl2OdQnU5CW_fgKcQy7tERAeddLQ1FSp7gIKeA,4541
1806
1808
  vellum/workflows/events/__init__.py,sha256=V4mh766fyA70WvHelm9kfVZGrUgEKcJ9tJt8EepfQYU,832
1807
1809
  vellum/workflows/events/context.py,sha256=vCfMIPmz4j9Om36rRWa35A_JU_VccWWS52_mZkkqxak,3345
1808
1810
  vellum/workflows/events/exception_handling.py,sha256=2okFtCzrOzaCP-HEwBPMvHn-evlyyE1zRkmIYjR__jQ,1975
@@ -1865,10 +1867,10 @@ vellum/workflows/graph/graph.py,sha256=vkpteMc2a61IFGHlrA50J4ntVj6m3agcyWrXGQEbj
1865
1867
  vellum/workflows/graph/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1866
1868
  vellum/workflows/graph/tests/test_graph.py,sha256=0Pov0sCsxjzUDL9wy7xy9jFD-F2GsMJnZVEVFXzQGdM,15433
1867
1869
  vellum/workflows/inputs/__init__.py,sha256=02pj0IbJkN1AxTreswK39cNi45tA8GWcAAdRJve4cuM,116
1868
- vellum/workflows/inputs/base.py,sha256=4kCRVz8AOqL6NgWZlfsBMnmCeDGDCTU0ImyBLlB0oaE,5203
1870
+ vellum/workflows/inputs/base.py,sha256=79Dw3jiSnCVFeySg6rMFPIqPfErmGKY0XPhpW0dSY-E,5454
1869
1871
  vellum/workflows/inputs/dataset_row.py,sha256=Szdb_RKysCEBRfy4B5LoXoPiTZPEFp_0_RqRZUZRGbU,1076
1870
1872
  vellum/workflows/inputs/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1871
- vellum/workflows/inputs/tests/test_inputs.py,sha256=lioA8917mFLYq7Ml69UNkqUjcWbbxkxnpIEJ4FBaYBk,2206
1873
+ vellum/workflows/inputs/tests/test_inputs.py,sha256=E6I2pEfGjCeQg0GAsjvKFEjO32bQ3H9VeRnLv3ry9O0,2828
1872
1874
  vellum/workflows/integrations/__init__.py,sha256=KoA7tGX_UiImu6erJKJ5tmLFpNFEqblsWFGPoWNsS1U,220
1873
1875
  vellum/workflows/integrations/composio_service.py,sha256=rSliaZtNiBcDSvDxz9k5i1KkyUIrbxyegu0yU9cDByU,6023
1874
1876
  vellum/workflows/integrations/mcp_service.py,sha256=9DYb8dg2_kgc1UOu830kxhaFlt9yTbhKPhK3L6kb1t4,9831
@@ -2019,7 +2021,7 @@ vellum/workflows/resolvers/resolver.py,sha256=yK-oY0HDsFJcjlNKAm3vpsPKRIFerIh59F
2019
2021
  vellum/workflows/resolvers/tests/test_resolver.py,sha256=jXkJBb9SwtoH__bBN-ECohpyD0aTIB9ErEvtFhuTMQM,9750
2020
2022
  vellum/workflows/resolvers/types.py,sha256=Hndhlk69g6EKLh_LYg5ILepW5U_h_BYNllfzhS9k8p4,237
2021
2023
  vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
2022
- vellum/workflows/runner/runner.py,sha256=-x4Ud63HwH81LufNJXzUDP1LTv6yJZ9bBG-OLkPRHMA,42299
2024
+ vellum/workflows/runner/runner.py,sha256=rwMZlQBkzK-EfewC6OysNCeuDeTCfpNuzaUlgYoFJMw,43329
2023
2025
  vellum/workflows/sandbox.py,sha256=mezSZmilR_fwR8164n8CEfzlMeQ55IqfapHp4ftImvQ,3212
2024
2026
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
2025
2027
  vellum/workflows/state/base.py,sha256=m9fCqbZn21GshCVCjJTD1dPZEQjFrsMXqlg7tM9fIwM,24283
@@ -2058,13 +2060,13 @@ vellum/workflows/utils/vellum_variables.py,sha256=X3lZn-EoWengRWBWRhTNW7hqbj7LkV
2058
2060
  vellum/workflows/utils/zip.py,sha256=HVg_YZLmBOTXKaDV3Xhaf3V6sYnfqqZXQ8CpuafkbPY,1181
2059
2061
  vellum/workflows/vellum_client.py,sha256=3iDR7VV_NgLSm1iZQCKDvrmfEaX1bOJiU15QrxyHpv0,1237
2060
2062
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
2061
- vellum/workflows/workflows/base.py,sha256=gV3qMaN1hMNEoO3s1Q1G7lMeacTObYDs9LHEwXNTYHE,29819
2063
+ vellum/workflows/workflows/base.py,sha256=7LVmHbewLLQiOX1QAlZoKnuwTNgubn34Kn_QC6jKNnA,29993
2062
2064
  vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
2063
2065
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2064
2066
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=Boa-_m9ii2Qsa1RvVM-VYniF7zCpzGgEGy-OnPZkrHg,23941
2065
2067
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
2066
- vellum_ai-1.6.4.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2067
- vellum_ai-1.6.4.dist-info/METADATA,sha256=kRTvoaljnXd0hIt_CQhEMNHXgv8YFwb5Momhc8sRRjY,5547
2068
- vellum_ai-1.6.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2069
- vellum_ai-1.6.4.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2070
- vellum_ai-1.6.4.dist-info/RECORD,,
2068
+ vellum_ai-1.7.0.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2069
+ vellum_ai-1.7.0.dist-info/METADATA,sha256=SMmQ-iMX4Dymys9Y_j7Jz4xq_QJGNUf8U9xYOgYKSw0,5547
2070
+ vellum_ai-1.7.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2071
+ vellum_ai-1.7.0.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2072
+ vellum_ai-1.7.0.dist-info/RECORD,,
@@ -542,6 +542,163 @@
542
542
  }
543
543
  ]
544
544
  },
545
+ {
546
+ "id": "3ae7366b-28ce-4d6b-8ec1-c6366b1e1a8b",
547
+ "display_data": {
548
+ "position": {
549
+ "x": 0.0,
550
+ "y": 0.0
551
+ },
552
+ "comment": {
553
+ "value": "\n Used to execute a Workflow Deployment.\n\n subworkflow_inputs: EntityInputsInterface - The inputs for the Subworkflow\n deployment: Union[UUID, str] - Either the Workflow Deployment's UUID or its name.\n release_tag: str = LATEST_RELEASE_TAG - The release tag to use for the Workflow Execution\n external_id: Optional[str] = OMIT - Optionally include a unique identifier for tracking purposes.\n Must be unique within a given Workflow Deployment.\n expand_meta: Optional[WorkflowExpandMetaRequest] = OMIT - Expandable execution fields to include in the response\n metadata: Optional[Dict[str, Optional[Any]]] = OMIT - The metadata to use for the Workflow Execution\n request_options: Optional[RequestOptions] = None - The request options to use for the Workflow Execution\n ",
554
+ "expanded": true
555
+ }
556
+ },
557
+ "base": {
558
+ "name": "BaseNode",
559
+ "module": [
560
+ "vellum",
561
+ "workflows",
562
+ "nodes",
563
+ "bases",
564
+ "base"
565
+ ]
566
+ },
567
+ "definition": {
568
+ "name": "SubworkflowDeploymentNode",
569
+ "module": [
570
+ "vellum",
571
+ "workflows",
572
+ "nodes",
573
+ "displayable",
574
+ "subworkflow_deployment_node",
575
+ "node"
576
+ ]
577
+ },
578
+ "trigger": {
579
+ "id": "a6eecf28-5c21-4406-80bb-917c6de84050",
580
+ "merge_behavior": "AWAIT_ANY"
581
+ },
582
+ "ports": [
583
+ {
584
+ "id": "8fc8d25b-c9b5-4db7-a632-d4eb1eb3e9fd",
585
+ "name": "default",
586
+ "type": "DEFAULT"
587
+ }
588
+ ]
589
+ },
590
+ {
591
+ "id": "d2f9a8ec-3023-46bb-aca3-dd67ffb61e18",
592
+ "display_data": {
593
+ "position": {
594
+ "x": 0.0,
595
+ "y": 0.0
596
+ },
597
+ "comment": {
598
+ "value": "\n Used to execute a Prompt Deployment and surface a string output and json output if applicable for convenience.\n\n prompt_inputs: EntityInputsInterface - The inputs for the Prompt\n deployment: Union[UUID, str] - Either the Prompt Deployment's UUID or its name.\n release_tag: str - The release tag to use for the Prompt Execution\n external_id: Optional[str] - Optionally include a unique identifier for tracking purposes.\n Must be unique within a given Prompt Deployment.\n expand_meta: Optional[PromptDeploymentExpandMetaRequest] - Expandable execution fields to include in the response\n raw_overrides: Optional[RawPromptExecutionOverridesRequest] - The raw overrides to use for the Prompt Execution\n expand_raw: Optional[Sequence[str]] - Expandable raw fields to include in the response\n metadata: Optional[Dict[str, Optional[Any]]] - The metadata to use for the Prompt Execution\n request_options: Optional[RequestOptions] - The request options to use for the Prompt Execution\n ",
599
+ "expanded": true
600
+ }
601
+ },
602
+ "base": {
603
+ "name": "BasePromptDeploymentNode",
604
+ "module": [
605
+ "vellum",
606
+ "workflows",
607
+ "nodes",
608
+ "displayable",
609
+ "bases",
610
+ "prompt_deployment_node"
611
+ ]
612
+ },
613
+ "definition": {
614
+ "name": "PromptDeploymentNode",
615
+ "module": [
616
+ "vellum",
617
+ "workflows",
618
+ "nodes",
619
+ "displayable",
620
+ "prompt_deployment_node",
621
+ "node"
622
+ ]
623
+ },
624
+ "trigger": {
625
+ "id": "7d209a9c-14a5-4b74-949c-d3e681750049",
626
+ "merge_behavior": "AWAIT_ANY"
627
+ },
628
+ "ports": [
629
+ {
630
+ "id": "d51b7c72-3e1f-400c-ba1c-1125b1047d9a",
631
+ "name": "default",
632
+ "type": "DEFAULT"
633
+ }
634
+ ],
635
+ "outputs": [
636
+ {
637
+ "id": "09c6ba90-4d69-4848-aa0b-74bdfcdd5a97",
638
+ "name": "json",
639
+ "type": "JSON",
640
+ "value": null
641
+ },
642
+ {
643
+ "id": "5ef5e3c6-1578-46da-89f6-6da3dd01fb5f",
644
+ "name": "text",
645
+ "type": "STRING",
646
+ "value": null
647
+ },
648
+ {
649
+ "id": "48513658-a72b-4db4-ad49-75a48a6cd084",
650
+ "name": "results",
651
+ "type": "ARRAY",
652
+ "value": null
653
+ }
654
+ ]
655
+ },
656
+ {
657
+ "id": "0ac6bdba-dbae-4ce5-b815-3d670aae0572",
658
+ "display_data": {
659
+ "position": {
660
+ "x": 0.0,
661
+ "y": 0.0
662
+ },
663
+ "comment": {
664
+ "value": "\n Used to perform a hybrid search against a Document Index in Vellum.\n\n document_index: Union[UUID, str] - Either the UUID or name of the Vellum Document Index that you'd like to search\n against\n query: str - The query to search for\n options: Optional[SearchRequestOptionsRequest] = None - Runtime configuration for the search\n request_options: Optional[RequestOptions] = None - The request options to use for the search\n chunk_separator: str = \"\n\n#####\n\n\" - The separator to use when joining the text of each search result\n ",
665
+ "expanded": true
666
+ }
667
+ },
668
+ "base": {
669
+ "name": "BaseSearchNode",
670
+ "module": [
671
+ "vellum",
672
+ "workflows",
673
+ "nodes",
674
+ "displayable",
675
+ "bases",
676
+ "search_node"
677
+ ]
678
+ },
679
+ "definition": {
680
+ "name": "SearchNode",
681
+ "module": [
682
+ "vellum",
683
+ "workflows",
684
+ "nodes",
685
+ "displayable",
686
+ "search_node",
687
+ "node"
688
+ ]
689
+ },
690
+ "trigger": {
691
+ "id": "37e64cf0-e604-4045-b8a0-d17e68c037e1",
692
+ "merge_behavior": "AWAIT_ANY"
693
+ },
694
+ "ports": [
695
+ {
696
+ "id": "8dea61c3-107c-4f17-bcba-dbbdc1185360",
697
+ "name": "default",
698
+ "type": "DEFAULT"
699
+ }
700
+ ]
701
+ },
545
702
  {
546
703
  "id": "035842e0-34ed-43af-97de-a706e40912ae",
547
704
  "label": "Tool Calling Node",
@@ -854,18 +1011,6 @@
854
1011
  }
855
1012
  ],
856
1013
  "errors": [
857
- {
858
- "node": "SubworkflowDeploymentNode",
859
- "error": "ApiError: headers: {'server': 'gunicorn', 'date': 'Wed, 24 Sep 2025 04:58:53 GMT', 'content-type': 'application/json', 'allow': 'GET, PUT, PATCH, DELETE, HEAD, OPTIONS', 'x-frame-options': 'DENY', 'content-length': '58', 'vary': 'Accept-Language, Origin', 'content-language': 'en', 'strict-transport-security': 'max-age=60; includeSubDomains; preload', 'x-content-type-options': 'nosniff', 'referrer-policy': 'same-origin', 'cross-origin-opener-policy': 'same-origin', 'via': '1.1 google', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000'}, status_code: 403, body: {'detail': 'Authentication credentials were not provided.'}"
860
- },
861
- {
862
- "node": "PromptDeploymentNode",
863
- "error": "ApiError: headers: {'server': 'gunicorn', 'date': 'Wed, 24 Sep 2025 04:58:53 GMT', 'content-type': 'application/json', 'allow': 'GET, PUT, PATCH, DELETE, HEAD, OPTIONS', 'x-frame-options': 'DENY', 'content-length': '58', 'vary': 'Accept-Language, Origin', 'content-language': 'en', 'strict-transport-security': 'max-age=60; includeSubDomains; preload', 'x-content-type-options': 'nosniff', 'referrer-policy': 'same-origin', 'cross-origin-opener-policy': 'same-origin', 'via': '1.1 google', 'alt-svc': 'h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000'}, status_code: 403, body: {'detail': 'Authentication credentials were not provided.'}"
864
- },
865
- {
866
- "node": "SearchNode",
867
- "error": "ValueError: Expected NodeReference query to have an instance"
868
- },
869
1014
  {
870
1015
  "node": "TemplatingNode",
871
1016
  "error": "KeyError: TemplatingNode.Outputs.result"
@@ -1,7 +1,3 @@
1
- class NodeValidationError(Exception):
2
- """Exception raised when a node fails validation during workflow display serialization."""
1
+ from vellum_ee.workflows.display.utils.exceptions import NodeValidationError
3
2
 
4
- def __init__(self, message: str, node_class_name: str):
5
- self.message = message
6
- self.node_class_name = node_class_name
7
- super().__init__(f"Node validation error in {node_class_name}: {message}")
3
+ __all__ = ["NodeValidationError"]
@@ -6,11 +6,11 @@ from typing import ClassVar, Generic, Optional, TypeVar
6
6
  from vellum.workflows.nodes.displayable.code_execution_node import CodeExecutionNode
7
7
  from vellum.workflows.types.core import JsonObject
8
8
  from vellum.workflows.utils.vellum_variables import primitive_type_to_vellum_variable_type
9
- from vellum_ee.workflows.display.exceptions import NodeValidationError
10
9
  from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
11
10
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
12
11
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
13
12
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
13
+ from vellum_ee.workflows.display.utils.exceptions import NodeValidationError
14
14
  from vellum_ee.workflows.display.utils.expressions import virtual_open
15
15
 
16
16
  _CodeExecutionNodeType = TypeVar("_CodeExecutionNodeType", bound=CodeExecutionNode)
@@ -8,11 +8,11 @@ from vellum.workflows.nodes import InlineSubworkflowNode
8
8
  from vellum.workflows.nodes.displayable.bases.utils import primitive_to_vellum_value
9
9
  from vellum.workflows.types.core import JsonObject
10
10
  from vellum.workflows.workflows.base import BaseWorkflow
11
- from vellum_ee.workflows.display.exceptions import NodeValidationError
12
11
  from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
13
12
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
14
13
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
15
14
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
15
+ from vellum_ee.workflows.display.utils.exceptions import NodeValidationError
16
16
  from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type
17
17
  from vellum_ee.workflows.display.vellum import NodeInput
18
18
  from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
@@ -3,6 +3,7 @@ from typing import Generic, Optional, TypeVar
3
3
 
4
4
  from vellum.workflows.nodes.displayable.prompt_deployment_node import PromptDeploymentNode
5
5
  from vellum.workflows.types.core import JsonObject
6
+ from vellum.workflows.utils.uuids import uuid4_from_hash
6
7
  from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
7
8
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
8
9
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
@@ -43,9 +44,15 @@ class BasePromptDeploymentNodeDisplay(BaseNodeDisplay[_PromptDeploymentNodeType]
43
44
  array_display = self.output_display[node.Outputs.results]
44
45
  json_display = self.output_display[node.Outputs.json]
45
46
 
46
- deployment = display_context.client.deployments.retrieve(
47
- id=str(raise_if_descriptor(node.deployment)),
48
- )
47
+ deployment_descriptor_id = str(raise_if_descriptor(node.deployment))
48
+ try:
49
+ deployment = display_context.client.deployments.retrieve(
50
+ id=deployment_descriptor_id,
51
+ )
52
+ deployment_id = str(deployment.id)
53
+ except Exception as e:
54
+ display_context.add_error(e)
55
+ deployment_id = str(uuid4_from_hash(deployment_descriptor_id))
49
56
  ml_model_fallbacks = raise_if_descriptor(node.ml_model_fallbacks)
50
57
 
51
58
  return {
@@ -60,7 +67,7 @@ class BasePromptDeploymentNodeDisplay(BaseNodeDisplay[_PromptDeploymentNodeType]
60
67
  "source_handle_id": str(self.get_source_handle_id(display_context.port_displays)),
61
68
  "target_handle_id": str(self.get_target_handle_id()),
62
69
  "variant": "DEPLOYMENT",
63
- "prompt_deployment_id": str(deployment.id),
70
+ "prompt_deployment_id": deployment_id,
64
71
  "release_tag": raise_if_descriptor(node.release_tag),
65
72
  "ml_model_fallbacks": list(ml_model_fallbacks) if ml_model_fallbacks else None,
66
73
  },
@@ -48,8 +48,8 @@ class BaseSearchNodeDisplay(BaseNodeDisplay[_SearchNodeType], Generic[_SearchNod
48
48
  node_id = self.node_id
49
49
  node_inputs = self._generate_search_node_inputs(node_id, node, display_context)
50
50
 
51
- results_output_display = display_context.global_node_output_displays[node.Outputs.results]
52
- text_output_display = display_context.global_node_output_displays[node.Outputs.text]
51
+ results_output_display = self.get_node_output_display(node.Outputs.results)
52
+ text_output_display = self.get_node_output_display(node.Outputs.text)
53
53
 
54
54
  return {
55
55
  "id": str(node_id),
@@ -111,8 +111,8 @@ class BaseSearchNodeDisplay(BaseNodeDisplay[_SearchNodeType], Generic[_SearchNod
111
111
  limit = raw_limit if raw_limit is not None else options.limit if options is not None else None
112
112
 
113
113
  node_input_names_and_values = [
114
- ("query", node.query),
115
- ("document_index_id", node.document_index),
114
+ ("query", raise_if_descriptor(node.query)),
115
+ ("document_index_id", raise_if_descriptor(node.document_index)),
116
116
  ("weights", weights.dict() if weights else None),
117
117
  ("limit", limit),
118
118
  ("separator", raise_if_descriptor(node.chunk_separator)),
@@ -4,6 +4,7 @@ from typing import Generic, Optional, TypeVar
4
4
  from vellum.workflows.inputs.base import BaseInputs
5
5
  from vellum.workflows.nodes import SubworkflowDeploymentNode
6
6
  from vellum.workflows.types.core import JsonObject
7
+ from vellum.workflows.utils.uuids import uuid4_from_hash
7
8
  from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
8
9
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
9
10
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
@@ -44,9 +45,15 @@ class BaseSubworkflowDeploymentNodeDisplay(
44
45
  for variable_name, variable_value in input_items
45
46
  ]
46
47
 
47
- deployment = display_context.client.workflow_deployments.retrieve(
48
- id=str(raise_if_descriptor(node.deployment)),
49
- )
48
+ deployment_descriptor_id = str(raise_if_descriptor(node.deployment))
49
+ try:
50
+ deployment = display_context.client.workflow_deployments.retrieve(
51
+ id=deployment_descriptor_id,
52
+ )
53
+ deployment_id = str(deployment.id)
54
+ except Exception as e:
55
+ display_context.add_error(e)
56
+ deployment_id = str(uuid4_from_hash(deployment_descriptor_id))
50
57
 
51
58
  return {
52
59
  "id": str(node_id),
@@ -58,7 +65,7 @@ class BaseSubworkflowDeploymentNodeDisplay(
58
65
  "source_handle_id": str(self.get_source_handle_id(display_context.port_displays)),
59
66
  "target_handle_id": str(self.get_target_handle_id()),
60
67
  "variant": "DEPLOYMENT",
61
- "workflow_deployment_id": str(deployment.id),
68
+ "workflow_deployment_id": deployment_id,
62
69
  "release_tag": raise_if_descriptor(node.release_tag),
63
70
  },
64
71
  **self.serialize_generic_fields(display_context),
@@ -6,8 +6,8 @@ from vellum.client.core.api_error import ApiError
6
6
  from vellum.workflows.nodes.displayable.code_execution_node.node import CodeExecutionNode
7
7
  from vellum.workflows.references.vellum_secret import VellumSecretReference
8
8
  from vellum.workflows.workflows.base import BaseWorkflow
9
- from vellum_ee.workflows.display.exceptions import NodeValidationError
10
9
  from vellum_ee.workflows.display.nodes.vellum.code_execution_node import BaseCodeExecutionNodeDisplay
10
+ from vellum_ee.workflows.display.utils.exceptions import NodeValidationError
11
11
  from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
12
12
 
13
13
 
@@ -5,3 +5,22 @@ class UserFacingException(Exception):
5
5
 
6
6
  class UnsupportedSerializationException(UserFacingException):
7
7
  pass
8
+
9
+
10
+ class NodeValidationError(UserFacingException):
11
+ """Exception raised when a node fails validation during workflow display serialization."""
12
+
13
+ def __init__(self, message: str, node_class_name: str):
14
+ self.message = message
15
+ self.node_class_name = node_class_name
16
+ super().__init__(f"Node validation error in {node_class_name}: {message}")
17
+
18
+
19
+ class InvalidInputReferenceError(UserFacingException):
20
+ """Exception raised when a node references a non-existent workflow input."""
21
+
22
+ def __init__(self, message: str, inputs_class_name: str, attribute_name: str):
23
+ self.message = message
24
+ self.inputs_class_name = inputs_class_name
25
+ self.attribute_name = attribute_name
26
+ super().__init__(f"Invalid input reference in {inputs_class_name}.{attribute_name}: {message}")
@@ -56,7 +56,7 @@ from vellum.workflows.types.core import JsonArray, JsonObject
56
56
  from vellum.workflows.types.generics import is_workflow_class
57
57
  from vellum.workflows.utils.functions import compile_function_definition
58
58
  from vellum.workflows.utils.uuids import uuid4_from_hash
59
- from vellum_ee.workflows.display.utils.exceptions import UnsupportedSerializationException
59
+ from vellum_ee.workflows.display.utils.exceptions import InvalidInputReferenceError, UnsupportedSerializationException
60
60
  from vellum_ee.workflows.server.virtual_file_loader import VirtualFileLoader
61
61
 
62
62
  if TYPE_CHECKING:
@@ -275,16 +275,24 @@ def serialize_value(executable_id: UUID, display_context: "WorkflowDisplayContex
275
275
  return serialize_value(executable_id, display_context, child_descriptor)
276
276
 
277
277
  if isinstance(value, WorkflowInputReference):
278
- try:
279
- workflow_input_display = display_context.global_workflow_input_displays[value]
280
- except KeyError:
281
- inputs_class_name = value.inputs_class.__name__
282
- workflow_class_name = display_context.workflow_display_class.infer_workflow_class().__name__
283
- raise UnsupportedSerializationException(
284
- f"Inputs class '{inputs_class_name}' referenced during serialization of '{workflow_class_name}' "
285
- f"without parameterizing this Workflow with this Inputs definition. Update your Workflow "
286
- f"definition to '{workflow_class_name}(BaseWorkflow[{inputs_class_name}, BaseState])'."
287
- )
278
+ if value not in display_context.global_workflow_input_displays:
279
+ workflow_inputs_class = display_context.workflow_display_class.infer_workflow_class().get_inputs_class()
280
+ if value.inputs_class != workflow_inputs_class:
281
+ inputs_class_name = value.inputs_class.__name__
282
+ workflow_class_name = display_context.workflow_display_class.infer_workflow_class().__name__
283
+ raise UnsupportedSerializationException(
284
+ f"Inputs class '{inputs_class_name}' referenced during serialization of "
285
+ f"'{workflow_class_name}' without parameterizing this Workflow with this Inputs definition. "
286
+ f"Update your Workflow definition to "
287
+ f"'{workflow_class_name}(BaseWorkflow[{inputs_class_name}, BaseState])'."
288
+ )
289
+ else:
290
+ raise InvalidInputReferenceError(
291
+ message=f"Inputs class '{value.inputs_class.__qualname__}' has no attribute '{value.name}'",
292
+ inputs_class_name=value.inputs_class.__qualname__,
293
+ attribute_name=value.name,
294
+ )
295
+ workflow_input_display = display_context.global_workflow_input_displays[value]
288
296
  return {
289
297
  "type": "WORKFLOW_INPUT",
290
298
  "input_variable_id": str(workflow_input_display.id),