vellum-ai 1.7.10__py3-none-any.whl → 1.7.12__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.

Potentially problematic release.


This version of vellum-ai might be problematic. Click here for more details.

Files changed (45) hide show
  1. vellum/__init__.py +2 -0
  2. vellum/client/core/client_wrapper.py +2 -2
  3. vellum/client/types/__init__.py +2 -0
  4. vellum/client/types/auth_type_enum.py +5 -0
  5. vellum/client/types/integration_name.py +4 -0
  6. vellum/client/types/slim_integration_auth_config_read.py +2 -0
  7. vellum/client/types/slim_workflow_execution_read.py +3 -3
  8. vellum/client/types/vellum_error_code_enum.py +1 -0
  9. vellum/client/types/vellum_sdk_error_code_enum.py +1 -0
  10. vellum/client/types/workflow_event_execution_read.py +3 -3
  11. vellum/client/types/workflow_execution_event_error_code.py +1 -0
  12. vellum/client/types/workflow_execution_snapshotted_body.py +1 -0
  13. vellum/types/auth_type_enum.py +3 -0
  14. vellum/workflows/events/tests/test_event.py +1 -0
  15. vellum/workflows/events/workflow.py +3 -0
  16. vellum/workflows/exceptions.py +3 -0
  17. vellum/workflows/integrations/mcp_service.py +7 -0
  18. vellum/workflows/integrations/tests/test_mcp_service.py +48 -0
  19. vellum/workflows/loaders/__init__.py +3 -0
  20. vellum/workflows/loaders/base.py +21 -0
  21. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +3 -0
  22. vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +3 -0
  23. vellum/workflows/tests/triggers/test_vellum_integration_trigger.py +225 -0
  24. vellum/workflows/triggers/__init__.py +2 -1
  25. vellum/workflows/triggers/vellum_integration.py +383 -0
  26. vellum/workflows/types/__init__.py +3 -0
  27. vellum/workflows/types/tests/test_utils.py +11 -0
  28. vellum/workflows/types/trigger_exec_config.py +63 -0
  29. vellum/workflows/types/utils.py +22 -0
  30. vellum/workflows/utils/names.py +20 -0
  31. vellum/workflows/workflows/base.py +13 -1
  32. {vellum_ai-1.7.10.dist-info → vellum_ai-1.7.12.dist-info}/METADATA +1 -1
  33. {vellum_ai-1.7.10.dist-info → vellum_ai-1.7.12.dist-info}/RECORD +45 -37
  34. vellum_cli/pull.py +6 -5
  35. vellum_cli/push.py +35 -2
  36. vellum_cli/tests/test_push.py +122 -0
  37. vellum_ee/workflows/display/tests/workflow_serialization/test_list_vellum_document_serialization.py +65 -0
  38. vellum_ee/workflows/display/utils/events.py +6 -3
  39. vellum_ee/workflows/display/utils/tests/test_events.py +29 -0
  40. vellum_ee/workflows/server/virtual_file_loader.py +15 -4
  41. vellum_ee/workflows/tests/test_serialize_module.py +48 -0
  42. vellum_ee/workflows/tests/test_server.py +105 -0
  43. {vellum_ai-1.7.10.dist-info → vellum_ai-1.7.12.dist-info}/LICENSE +0 -0
  44. {vellum_ai-1.7.10.dist-info → vellum_ai-1.7.12.dist-info}/WHEEL +0 -0
  45. {vellum_ai-1.7.10.dist-info → vellum_ai-1.7.12.dist-info}/entry_points.txt +0 -0
@@ -8,8 +8,8 @@ vellum_cli/init.py,sha256=WpnMXPItPmh0f0bBGIer3p-e5gu8DUGwSArT_FuoMEw,5093
8
8
  vellum_cli/logger.py,sha256=dcM_OmgqXLo93vDYswO5ylyUQQcTfnA5GTd5tbIt3wM,1446
9
9
  vellum_cli/move.py,sha256=lCHQ-U4BspgS512GxFFvUrglitaHkWfuKn1Hpfcn7-Q,2053
10
10
  vellum_cli/ping.py,sha256=p_BCCRjgPhng6JktuECtkDQLbhopt6JpmrtGoLnLJT8,1161
11
- vellum_cli/pull.py,sha256=udYyPlJ6VKDdh78rApNJOZgxHl82fcV6iGnRPSdX1LY,14750
12
- vellum_cli/push.py,sha256=epoQNdFdXUzLlfwE2ZTklfy3DW6bI4-Pgv1QRS8CZXk,11803
11
+ vellum_cli/pull.py,sha256=j7ob2s_IO3iMN7y5diI6XjobL8Z4y7l8Vl9dDQlk0vw,14740
12
+ vellum_cli/push.py,sha256=OvrOduwFd0Ez6ifSbPiBdID75SeGBb9gm9siMGCyFlE,13117
13
13
  vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  vellum_cli/tests/conftest.py,sha256=wx3PlJjVB0HRf5dr2b_idOIw27WPPl0J0FNbhIJJaVk,1689
15
15
  vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
@@ -20,7 +20,7 @@ vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k
20
20
  vellum_cli/tests/test_move.py,sha256=FIrL1xlH5oFKGX2MugcTKL8JilpopmUC7hP5OaqF5zw,5213
21
21
  vellum_cli/tests/test_ping.py,sha256=b3aQLd-N59_8w2rRiWqwpB1rlHaKEYVbAj1Y3hi7A-g,2605
22
22
  vellum_cli/tests/test_pull.py,sha256=e2XHzcHIx9k-FyuNAl7wMSNsSSebPGyP6U05JGcddFs,49447
23
- vellum_cli/tests/test_push.py,sha256=oQ3x28G6IxplmMWCcPEYY46nOYAEPaihcMVsN4quQ5Q,45000
23
+ vellum_cli/tests/test_push.py,sha256=-W8BNA-pdeFM6J0z319LioAkhna6Z0BTYt6BrmL1VGI,49049
24
24
  vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  vellum_ee/assets/node-definitions.json,sha256=FHw1RlnD7n8nHBSN9hMsrjBGq9SnM2wga7URiSCDGBY,31408
26
26
  vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -110,6 +110,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling
110
110
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=pLCyMScV88DTBXRH7jXaXOEA1GBq8NIipCUFwIAWnwI,2771
111
111
  vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=exT7U-axwtYgFylagScflSQLJEND51qIAx2UATju6JM,6023
112
112
  vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_map_reference_serialization.py,sha256=vl3pxUJlrYRA8zzFJ-gRm7fe-5fviLNSIsUC7imnMqk,3502
113
+ vellum_ee/workflows/display/tests/workflow_serialization/test_list_vellum_document_serialization.py,sha256=ZRcDhOSVKFHvt_rBkNSL7j3VLeWKQbH-KRoJWrtWD2s,2193
113
114
  vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py,sha256=L4bJWW94eq5cl6pjIaX7pQrDHoF67Gudfx-41dmmd10,2330
114
115
  vellum_ee/workflows/display/tests/workflow_serialization/test_slack_trigger_serialization.py,sha256=HCZKF2_wOrn05s94PKWBP8cLl6Uw8j3y7Ec83xxQfLM,2258
115
116
  vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_any_serialization.py,sha256=4WAmSEJZlDBLPhsD1f4GwY9ahB9F6qJKGnL6j7ZYlzQ,1740
@@ -118,13 +119,13 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_workflow_input_par
118
119
  vellum_ee/workflows/display/types.py,sha256=LgRIZeEtV7bQe-nvrC4A0T6vMooSWT1rFtw-uTn45BQ,3752
119
120
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
121
  vellum_ee/workflows/display/utils/auto_layout.py,sha256=f4GiLn_LazweupfqTpubcdtdfE_vrOcmZudSsnYIY9E,3906
121
- vellum_ee/workflows/display/utils/events.py,sha256=DE33uoKW78BZtITJ6L22dMZN3KR1BuZBVC98C_gIyzU,1943
122
+ vellum_ee/workflows/display/utils/events.py,sha256=WeytIG9znXDrEjOJ-Ls4BAimfV1stnxGWpoycv9UTmg,2031
122
123
  vellum_ee/workflows/display/utils/exceptions.py,sha256=E8Lvo7LY1BoZ54M_NR_opDjJsAAiCUfow1HgoHcTHmg,989
123
124
  vellum_ee/workflows/display/utils/expressions.py,sha256=9rcpoXhUIxcWy407Ziu-zJfP5OEFq3pHIh7XSZZ1Y6E,21169
124
125
  vellum_ee/workflows/display/utils/registry.py,sha256=1qXiBTdsnro6FeCX0FGBEK7CIf6wa--Jt50iZ_nEp_M,3460
125
126
  vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
127
  vellum_ee/workflows/display/utils/tests/test_auto_layout.py,sha256=vfXI769418s9vda5Gb5NFBH747WMOwSgHRXeLCTLVm8,2356
127
- vellum_ee/workflows/display/utils/tests/test_events.py,sha256=42IEBnMbaQrH8gigw5hXIt_kG3rVvrSMop9QYiL2xDs,4586
128
+ vellum_ee/workflows/display/utils/tests/test_events.py,sha256=gjC_p3UuAbRANLbQboRh4J8SL1wgMOB0AOqtpXmIj4w,5581
128
129
  vellum_ee/workflows/display/utils/vellum.py,sha256=Bt7kdLdXoBsHn5dVEY2uKcF542VL09jwu8J_30rl2vk,6413
129
130
  vellum_ee/workflows/display/vellum.py,sha256=J2mdJZ1sdLW535DDUkq_Vm8Z572vhuxHxVZF9deKSdk,391
130
131
  vellum_ee/workflows/display/workflows/__init__.py,sha256=JTB9ObEV3l4gGGdtfBHwVJtTTKC22uj-a-XjTVwXCyA,148
@@ -132,7 +133,7 @@ vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=rY-mK4dLou
132
133
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=gxz76AeCqgAZ9D2lZeTiZzxY9eMgn3qOSfVgiqYcOh8,2028
133
134
  vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=lg-c_3P3ldtqWq2VFsk_2Mkn3pVdXWuT59QpH7QwXVs,39764
134
135
  vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
- vellum_ee/workflows/server/virtual_file_loader.py,sha256=7JphJcSO3H85qiC2DpFfBWjC3JjrbRmoynBC6KKHVsA,2710
136
+ vellum_ee/workflows/server/virtual_file_loader.py,sha256=3egb-Xsfxy6I_AGVH09Fgd74qofDMKtiVzJitW8sRHw,3265
136
137
  vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
138
  vellum_ee/workflows/tests/local_files/__init__.py,sha256=UyP6kKkRqr9cTKHQF4MVLdLk5MM9GGcLuqxXsQGm22Y,51
138
139
  vellum_ee/workflows/tests/local_files/base_class.py,sha256=UuiC7J68MVr6A4949QYiBpXOLdsvFG_Cw1muEPiHT6I,298
@@ -154,15 +155,15 @@ vellum_ee/workflows/tests/local_workflow/nodes/templating_node.py,sha256=NQwFN61
154
155
  vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIPLsmrVS_aVEZEc-wULSv787Q,393
155
156
  vellum_ee/workflows/tests/test_display_meta.py,sha256=PkXJVnMZs9GNooDkd59n4YTBAX3XGPQWeSSVbhehVFM,5112
156
157
  vellum_ee/workflows/tests/test_registry.py,sha256=B8xRIuEyLWfSqrYoPldNQXhKPfe50PllvtAZoI8-uPs,6066
157
- vellum_ee/workflows/tests/test_serialize_module.py,sha256=zleQTcGZa5_nzwu4zpFoqEHhk7pb64hGrhObR4anhPQ,4471
158
- vellum_ee/workflows/tests/test_server.py,sha256=Ao2htC5i6drtnx1b2HHFM1O-OzVGuTi6PsJorzKF_mM,26284
158
+ vellum_ee/workflows/tests/test_serialize_module.py,sha256=thzGsNzYCRXXdaC5yk1ZjtXrIO6uPdSnzdapKLCOsC8,6241
159
+ vellum_ee/workflows/tests/test_server.py,sha256=2_n84q_QZN_zW2rZgDenQUXM3x43TcPsRs1fDA6BK1U,29805
159
160
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
160
- vellum/__init__.py,sha256=6dkyRHmIKuQPzL_z3QLVUrbkAF-HJKDhDSMCnf4ZsKw,49502
161
+ vellum/__init__.py,sha256=dhTWMEjt7OThAeMIhO0we-kI8mBj7Juy7Lrse7RuZR0,49540
161
162
  vellum/client/README.md,sha256=flqu57ubZNTfpq60CdLtJC9gp4WEkyjb_n_eZ4OYf9w,6497
162
163
  vellum/client/__init__.py,sha256=rMnKRqL5-356SBc-rfm56MkO87PuAi2mtcfBszcJU1M,74316
163
164
  vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
164
165
  vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
165
- vellum/client/core/client_wrapper.py,sha256=9c4zn6yMqgyXRP7ix8lzAHvyY9fwno1tGUAQ2N1anrI,2842
166
+ vellum/client/core/client_wrapper.py,sha256=M-v_g-XgM1d4Gs8cdKXxkGCtbhLuB46z9XvEHCP0u34,2842
166
167
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
167
168
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
168
169
  vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -268,7 +269,7 @@ vellum/client/resources/workspaces/client.py,sha256=36KYa2FDu6h65q2GscUFOJs4qKei
268
269
  vellum/client/resources/workspaces/raw_client.py,sha256=M3Ewk1ZfEZ44EeTvBtBNoNKi5whwfLY-1GR07SyfDTI,3517
269
270
  vellum/client/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
271
  vellum/client/tests/test_utils.py,sha256=zk8z45-2xrm9sZ2hq8PTqY8MXmXtPqMqYK0VBBX0GHg,1176
271
- vellum/client/types/__init__.py,sha256=mviyigR9JByvGdgCOqfY6DyrExvkCnN6PXBEMRsY3pw,74926
272
+ vellum/client/types/__init__.py,sha256=e98Ekl0t25X8kuhn-W0pceTSoXFPmECG4vcCdRXvlkU,74987
272
273
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=B69EesIH6fpNsdoiJaSG9zF1Sl17FnjoTu4CBkUSoHk,608
273
274
  vellum/client/types/ad_hoc_expand_meta.py,sha256=Kajcj3dKKed5e7uZibRnE3ZonK_bB2JPM-3aLjLfUp4,1295
274
275
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=5kD6ZcbU8P8ynK0lMD8Mh7vHzvQt06ziMyphvWYg6FU,968
@@ -294,6 +295,7 @@ vellum/client/types/audio_input_request.py,sha256=dtmM17yqCecZj1vJn3HK6IMF2rpXPw
294
295
  vellum/client/types/audio_prompt_block.py,sha256=5GXedTnmZF7vDiq-sIDMtksm3CExNNYoJVXMgRnmuR8,977
295
296
  vellum/client/types/audio_vellum_value.py,sha256=TPZYq8sjlFFhSfHGif9OuGVWUtzeZ4LjDPYcLXDjI7I,709
296
297
  vellum/client/types/audio_vellum_value_request.py,sha256=Hn4qkUV5hBNaNxdmwDA18BtmLxOFqwLeOdKI7k8HHJk,738
298
+ vellum/client/types/auth_type_enum.py,sha256=7lZelL6Vu_fPOJgtGnm_h5h7X1rPziQxRweuOG8iKao,157
297
299
  vellum/client/types/base_output.py,sha256=-O5DOk4K11MKQU8otOVeu3HMjtFdKLmpKHgYyXq1DXc,679
298
300
  vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large.py,sha256=D1Fs9_9Tm8XuiB4ErmkdHqXWq6nvbZX6rYObnKaSDTA,791
299
301
  vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large_request.py,sha256=7rJ589uXvc-WotTpRoBQjz6PE2bnuYBBms3RlyC3tLI,798
@@ -488,7 +490,7 @@ vellum/client/types/instructor_vectorizer_config_request.py,sha256=B5Wy5FI8utwi4
488
490
  vellum/client/types/integration_auth_config_integration.py,sha256=W3DrzVPwLrqm0wCYVF-sHyQPoKNxoliFgFJWEwW_Yqc,710
489
491
  vellum/client/types/integration_auth_config_integration_credential.py,sha256=lUNuJ1GyFps3M85Mff1C-SAeEacCMkJdmayFfYrTFXA,547
490
492
  vellum/client/types/integration_credential_access_type.py,sha256=sWkuDjW3aD7ApZ1xQ7Bu8g5kCIwqUqzm1TDliUQWeRI,178
491
- vellum/client/types/integration_name.py,sha256=0MUPWDmNlEX-qUXxrKvrGSAVYj2cjj-B6nYuz72hL1k,398
493
+ vellum/client/types/integration_name.py,sha256=LOboR5sP9EQZgT2rFNNScbTbO71KOxr6TbuxWXYgwOE,477
492
494
  vellum/client/types/integration_provider.py,sha256=lIh3yPyPEzmSAu8L4Gsd-iDkmDSNobo0_TB75zMtIXk,129
493
495
  vellum/client/types/integration_read.py,sha256=sUNCS01TIlHPJHEH3ZheIbPi-CplbFQ5XAV1QtOO1Gg,1035
494
496
  vellum/client/types/invoked_port.py,sha256=nw2k-y7NrpcH6T1V96U3F8_pbrsceqBPIz3RQXN8gJY,518
@@ -708,11 +710,11 @@ vellum/client/types/slim_composio_tool_definition.py,sha256=1wQRXqS4-DVq0JO8F7L2
708
710
  vellum/client/types/slim_deployment_read.py,sha256=lEJ8Fx7QSmqjEK-LcR0y_hX2ywcaPbYjxINwPGy_ofw,1733
709
711
  vellum/client/types/slim_document.py,sha256=aytvaz8SF6MSSEA3iLXP7ZgZOw33CA-_bv2iSj5cH24,2409
710
712
  vellum/client/types/slim_document_document_to_document_index.py,sha256=Ogo8OFjtmcHjDmIynB9vckfjSZxFNhKM-cYpqSfREGI,1515
711
- vellum/client/types/slim_integration_auth_config_read.py,sha256=hfC4ABz7g1zc6A30TyyBA-W55TUZRzkFMf0iMjHgBSc,1113
713
+ vellum/client/types/slim_integration_auth_config_read.py,sha256=Mbn1DjJIJJjkqrtaW_93XecMPOQK8phPBVJm2LwNhu8,1206
712
714
  vellum/client/types/slim_integration_read.py,sha256=hKc9a85Vi7WNIq6JDPABettHUz-vmV-ViXRsoIpD_MY,754
713
715
  vellum/client/types/slim_release_review.py,sha256=vWNkPXk5wZ_scHsWHz_77PfMZRDn-4qUkqVbCKqY1zQ,747
714
716
  vellum/client/types/slim_workflow_deployment.py,sha256=jIciGPCW9QNtDRdq3w_zUdrrE4cg1LWkcoyGM-L6cs0,2085
715
- vellum/client/types/slim_workflow_execution_read.py,sha256=6Ep2iQ6tWTCGxzvAh4t3G_4BjHQ3_JZ9WFdc81XGqkA,2302
717
+ vellum/client/types/slim_workflow_execution_read.py,sha256=NHNLs5Uf6YvrRZbFnnaYj2iTe2zozsbd5M-tZixu9jU,2302
716
718
  vellum/client/types/span_link.py,sha256=roO93-xRnqZy2hx9WJFNZW46o8l2bGf3ugeaBepegr4,1433
717
719
  vellum/client/types/span_link_type_enum.py,sha256=SQsPKp1Jb8PWE2tkCHt9d5fZP8Oz77vG8_VYKF-h9J4,186
718
720
  vellum/client/types/streaming_ad_hoc_execute_prompt_event.py,sha256=BZZHXI_vq28VAmRbbIIK2wyRSkQpWfOPD7kiydhQmd8,1147
@@ -844,13 +846,13 @@ vellum/client/types/vellum_code_resource_definition.py,sha256=XdueTR342BDjevZ3kt
844
846
  vellum/client/types/vellum_document.py,sha256=qwXqMS2Eud2a5KmF8QHhU_vJzDX0g5cesrCpmBqREsA,604
845
847
  vellum/client/types/vellum_document_request.py,sha256=P9vA7ZDNeaHNlMqyzfl-ZD4bpdf-xA5mH8R1QuOAmOY,611
846
848
  vellum/client/types/vellum_error.py,sha256=G4WSD-w_skoDDnsAt-TtImt-hZT-Sc8LjHvERBUVnhE,691
847
- vellum/client/types/vellum_error_code_enum.py,sha256=aqRRPpcpagYMJ-TDBb-V9xyj2cubwP9ygNO4NaO1Y8s,477
849
+ vellum/client/types/vellum_error_code_enum.py,sha256=vMmcp99RWQK5a4OqQ58HxZUgFSwFzGsuuBLcgxjOw7U,512
848
850
  vellum/client/types/vellum_error_request.py,sha256=7l4Ux6wj3C9BdSXUPBrtxECsAirmvaLU42Y23VqncBU,698
849
851
  vellum/client/types/vellum_image.py,sha256=LAGUYBDsT0bmMOqgbaeCTCy2w4zAeHEyUIgPtmdjjJ4,601
850
852
  vellum/client/types/vellum_image_request.py,sha256=6DoI2AdJIG8NShHSslpHvsFUw5PwIMconjlHSipOP5Q,608
851
853
  vellum/client/types/vellum_node_execution_event.py,sha256=-MXat2wAZx4sx3JRp7gwJIOInPNwPMDpZmXtP8NC3O8,736
852
854
  vellum/client/types/vellum_sdk_error.py,sha256=oURNuw5zH4HqV6Ygw0MgVWH2DcuxekWvS_ZXA8tU31I,704
853
- vellum/client/types/vellum_sdk_error_code_enum.py,sha256=zyPoP7V-uooGdBlVjanveQbaiHRumjAXsHwH_Stg8gU,577
855
+ vellum/client/types/vellum_sdk_error_code_enum.py,sha256=M_NfzXsdL4VxTpDbj1KsMPHbZoNU6IH7tEJKuz57rwI,612
854
856
  vellum/client/types/vellum_secret.py,sha256=04WlBWphqiJSUKM2NeJE32IDt-ZpVO_LOXkpXvBh3f0,519
855
857
  vellum/client/types/vellum_span.py,sha256=dmZOBXlDeXx4eLvBJBiOp07xuyjhisgXgnvYFSmctYE,259
856
858
  vellum/client/types/vellum_value.py,sha256=douOrlRh2ko1gmN8oDjsaoAEtyDcfq-OV_GThW92GNk,1188
@@ -881,13 +883,13 @@ vellum/client/types/workflow_deployment_release_workflow_version.py,sha256=VbVrw
881
883
  vellum/client/types/workflow_error.py,sha256=iDMQ3Wx7E8lf6BYtBTGpeIxG46iF9mjzTpjxyJVTXgM,283
882
884
  vellum/client/types/workflow_event.py,sha256=M_ra0CjUffCPqPRFJM_oR1IY4egHDGa0tY1HAoA8j5k,1532
883
885
  vellum/client/types/workflow_event_error.py,sha256=qNqSGvPOLODPTiaWmsUKyTx9W91JDIm9r9s05zsTsfg,779
884
- vellum/client/types/workflow_event_execution_read.py,sha256=DRB19CN0E3r3t1mtfNLhaxiVtPKh5nJLYkCwVtomM7w,2456
886
+ vellum/client/types/workflow_event_execution_read.py,sha256=9AZGartKk8qZxepwmjOKEIcWGxGUIOlusZqCxpfgrOw,2456
885
887
  vellum/client/types/workflow_execution_actual.py,sha256=QJn7xXOtSJT30se2KdOyAYVJKjU53uhdvpjcMDIz1eM,962
886
888
  vellum/client/types/workflow_execution_actual_chat_history_request.py,sha256=E3Vt4l6PpE24_teWe3Kfu_4z1sbosaz_Uk1iUI9cZ-s,1957
887
889
  vellum/client/types/workflow_execution_actual_json_request.py,sha256=jLsQxdg7SVyUkdu_Gyo3iDKgZcQnO5hsP0PHPsiGwrg,1895
888
890
  vellum/client/types/workflow_execution_actual_string_request.py,sha256=syFCXeB4MwjKblXfSBNfCSG4dJIR8Ww937gTcmTPh1w,1859
889
891
  vellum/client/types/workflow_execution_detail.py,sha256=R1tONdNarehoqk7zsK0D2wCSJEe9WauZmKHp5yKVLB8,2186
890
- vellum/client/types/workflow_execution_event_error_code.py,sha256=8VL4wHTEy-AdQhApnOsz2L2wXcuo5LBqgUAVnaQ-pXM,568
892
+ vellum/client/types/workflow_execution_event_error_code.py,sha256=z4ZFWSlsKQKGcgZvqygtSliJBoeWKR9K-UqS7QTxx5U,603
891
893
  vellum/client/types/workflow_execution_event_type.py,sha256=ESKqV3ItoAlqBooruf-i0AnmEh_GvCySZ0Co3r9Bvt0,170
892
894
  vellum/client/types/workflow_execution_fulfilled_body.py,sha256=dQYhKU5D7vZR36zyBHUbXUNv_TjnnMNNPvxpPmH0-OU,797
893
895
  vellum/client/types/workflow_execution_fulfilled_event.py,sha256=eZ_DtDmRK-S2Q0LEJHlGS_FPd-UVvpgetRXqvWlSh4M,1925
@@ -900,7 +902,7 @@ vellum/client/types/workflow_execution_rejected_body.py,sha256=biJQ8_PDeJGELgjjU
900
902
  vellum/client/types/workflow_execution_rejected_event.py,sha256=j1QzOxkcmcFfA9zHOiKBnv7qF_YrFePq380us1nnYEk,1918
901
903
  vellum/client/types/workflow_execution_resumed_body.py,sha256=L0Atzk7328tpjhRKC0Y8AoWuMebtdHzd4gBjYkvKDIM,649
902
904
  vellum/client/types/workflow_execution_resumed_event.py,sha256=7PTH1rLBlvC4414LG3L3AdMRrJEmtrJSOWwM5sptAZc,1911
903
- vellum/client/types/workflow_execution_snapshotted_body.py,sha256=POAj0l9EKZnJP79sQq4ZfW-a1SZyBNmvcqPJlvIGOfk,710
905
+ vellum/client/types/workflow_execution_snapshotted_body.py,sha256=1r0dnZJNAy34ckeNfCvkSphs_AfVbKhn0IJKvB06Yyo,778
904
906
  vellum/client/types/workflow_execution_snapshotted_event.py,sha256=sEQ-fqW0VmiuigFZnPvtd2wNZG462-rnsk4Zi8qlA6I,1939
905
907
  vellum/client/types/workflow_execution_span.py,sha256=xeePJEONTakpoEf1aodhs10E8GPoxy7oSdogZARxYO0,1984
906
908
  vellum/client/types/workflow_execution_span_attributes.py,sha256=OE_uL3qChioClcS3P46EW6ajLEyDsNl9sQJ13Tw50cY,560
@@ -1115,6 +1117,7 @@ vellum/types/audio_input_request.py,sha256=vmN-KTn6OEuE6MK2t_lllo9lr1ln1839PjwgA
1115
1117
  vellum/types/audio_prompt_block.py,sha256=zpQcvY3Fic82mPlPyOLCjZBBq0dFyCyKuGRkYNDWQko,156
1116
1118
  vellum/types/audio_vellum_value.py,sha256=-9HkLXeBD-IMh_TwKdmQVfAD_F0et2gYKT2ykb_jaAM,156
1117
1119
  vellum/types/audio_vellum_value_request.py,sha256=YuwrbVZK1EuUKkir5H9-ipeLTPfSF8h6Yy5lS_pAZg4,164
1120
+ vellum/types/auth_type_enum.py,sha256=SkvJdAKXtyxgPiH6tVfqAzwhiM_-kjUZ9RzSoYJYPO4,152
1118
1121
  vellum/types/base_output.py,sha256=5fBRPScgqh4m13rbbfxszK03o8zg-Sa_bGp2kTmacMo,149
1119
1122
  vellum/types/basic_vectorizer_intfloat_multilingual_e_5_large.py,sha256=4PC3AVVZh7r0zbeY4pV-tpAFkt1EAuRjI0Rsc-s6WX0,186
1120
1123
  vellum/types/basic_vectorizer_intfloat_multilingual_e_5_large_request.py,sha256=NQd8lYb9HnO2UXOuri-8CdmN5lFdaRpXMdN3BJOm9JA,194
@@ -1818,10 +1821,10 @@ vellum/workflows/events/relational_threads.py,sha256=zmLrBCBYpdpQV0snKH3HleST-_h
1818
1821
  vellum/workflows/events/stream.py,sha256=xhXJTZirFi0xad5neAQNogrIQ4h47fpnKbVC3vCM5Js,889
1819
1822
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1820
1823
  vellum/workflows/events/tests/test_basic_workflow.py,sha256=Pj6orHsXz37jWC5FARi0Sx2Gjf99Owri2Cvr6Chb79k,1765
1821
- vellum/workflows/events/tests/test_event.py,sha256=a-_vwiKhZWTxmRvDPB-aveWuGBOMqr5nY9t6uFmtL-o,21431
1824
+ vellum/workflows/events/tests/test_event.py,sha256=R9H_W9RuZAY1b_ElnfyekS-Fl6Z02lldOf8EkCJssBE,21476
1822
1825
  vellum/workflows/events/types.py,sha256=mVrqAH9Hs9SpXm08Hcxdyap_ImQPwGsxRr56rSNMP34,5043
1823
- vellum/workflows/events/workflow.py,sha256=uoSnZFyG-oHvmvmAA3LYRJOMc_vOrbfa64stnSzNePs,9494
1824
- vellum/workflows/exceptions.py,sha256=cizNaHgmGdIoYSV3Mn6_HlpUvs2Nq9KgpX1ewMZdBa0,2157
1826
+ vellum/workflows/events/workflow.py,sha256=zsyCbcM93P9XqRvYoN8e7vIsOe15Bn2sjXuDoSRrwBU,9637
1827
+ vellum/workflows/exceptions.py,sha256=l_ZklQQVvbsIdbmbn89aEeTL7x6x08m5kCwKXXPnTDc,2277
1825
1828
  vellum/workflows/executable.py,sha256=um-gLJMVYfGJwGJfZIPlCRHhHIYm6pn8PUEfeqrNx5k,218
1826
1829
  vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1827
1830
  vellum/workflows/expressions/accessor.py,sha256=3lu1-_-dBfZdJvtX-q66jbmRAZtqIfdsh_3_JNuzg1E,4462
@@ -1878,11 +1881,13 @@ vellum/workflows/inputs/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
1878
1881
  vellum/workflows/inputs/tests/test_inputs.py,sha256=E6I2pEfGjCeQg0GAsjvKFEjO32bQ3H9VeRnLv3ry9O0,2828
1879
1882
  vellum/workflows/integrations/__init__.py,sha256=KoA7tGX_UiImu6erJKJ5tmLFpNFEqblsWFGPoWNsS1U,220
1880
1883
  vellum/workflows/integrations/composio_service.py,sha256=rSliaZtNiBcDSvDxz9k5i1KkyUIrbxyegu0yU9cDByU,6023
1881
- vellum/workflows/integrations/mcp_service.py,sha256=9DYb8dg2_kgc1UOu830kxhaFlt9yTbhKPhK3L6kb1t4,9831
1884
+ vellum/workflows/integrations/mcp_service.py,sha256=m2oakuI2jVh9LY34lQvWnULnjjRkwOYmdvKDX4HIEpg,10218
1882
1885
  vellum/workflows/integrations/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1883
- vellum/workflows/integrations/tests/test_mcp_service.py,sha256=q_DYrDkIqI4sQBNgID4YdbM4e9tneLVWY8YmI4R26d8,8859
1886
+ vellum/workflows/integrations/tests/test_mcp_service.py,sha256=6R5ghZitzYXyHHjmX6oWdce4YNyCSworrktjg9mSLGE,10830
1884
1887
  vellum/workflows/integrations/tests/test_vellum_integration_service.py,sha256=QGJmaW5EF7E2fkZotd4rc2HItQc-1z3cpgwaKUFWpgg,11956
1885
1888
  vellum/workflows/integrations/vellum_integration_service.py,sha256=qhFoLzHlMli1PC8oh5phvWuSpJ9IqL1g2eaGhypBTqs,5266
1889
+ vellum/workflows/loaders/__init__.py,sha256=qdghamOwKDs8XR5cGTIMn3Bd99pSNAr5DCdXf0bPQk0,95
1890
+ vellum/workflows/loaders/base.py,sha256=ZTnf_1pxSf6i3chiLasMEbACULuuc2EBVyFcOF3OLuM,533
1886
1891
  vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
1887
1892
  vellum/workflows/nodes/__init__.py,sha256=zymtc3_iW2rFmMR-sayTLuN6ZsAw8VnJweWPsjQk2-Q,1197
1888
1893
  vellum/workflows/nodes/bases/__init__.py,sha256=cniHuz_RXdJ4TQgD8CBzoiKDiPxg62ErdVpCbWICX64,58
@@ -1924,7 +1929,7 @@ vellum/workflows/nodes/displayable/bases/api_node/node.py,sha256=cOYaIqimzDL6TuX
1924
1929
  vellum/workflows/nodes/displayable/bases/api_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1925
1930
  vellum/workflows/nodes/displayable/bases/api_node/tests/test_node.py,sha256=5C59vn_yg4r5EWioKIr658Jr1MSGX3YF4yKJokY37Xc,4726
1926
1931
  vellum/workflows/nodes/displayable/bases/base_prompt_node/__init__.py,sha256=Org3xTvgp1pA0uUXFfnJr29D3HzCey2lEdYF4zbIUgo,70
1927
- vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=ZIAXMreHcs3OR-djlkXgqF6tw7-Qfl8KUvjmJ7qRU3U,5204
1932
+ vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py,sha256=oN1GF47DPj1WgED1c5SO2XBInU7Gqaa6rAZGKsTFgv8,5299
1928
1933
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/__init__.py,sha256=Hl35IAoepRpE-j4cALaXVJIYTYOF3qszyVbxTj4kS1s,82
1929
1934
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=ITxAa1HWF6OPdcKg0DdTK7YP94ezzzWVyZzCRMiybIg,18638
1930
1935
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1957,7 +1962,7 @@ vellum/workflows/nodes/displayable/guardrail_node/tests/test_node.py,sha256=X2pd
1957
1962
  vellum/workflows/nodes/displayable/inline_prompt_node/__init__.py,sha256=gSUOoEZLlrx35-tQhSAd3An8WDwBqyiQh-sIebLU9wU,74
1958
1963
  vellum/workflows/nodes/displayable/inline_prompt_node/node.py,sha256=0O1dksk0h6-V-Mp5_yTuU3PFrUpLIgsqVMTP8mxTryU,2227
1959
1964
  vellum/workflows/nodes/displayable/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1960
- vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=bBHs90mV5SZ3rJPAL0wx4WWyawUA406LgMPOdvpZC_A,10923
1965
+ vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py,sha256=CukYNAH8Y1NP0yJGz_gFtK0L-DLlU-K-06cmxEJ0Nts,11038
1961
1966
  vellum/workflows/nodes/displayable/merge_node/__init__.py,sha256=J8IC08dSH7P76wKlNuxe1sn7toNGtSQdFirUbtPDEs0,60
1962
1967
  vellum/workflows/nodes/displayable/merge_node/node.py,sha256=_zHW9fReWdpiM3GiUzdEgyOSznRqkPsTj-XKD6Oja8I,563
1963
1968
  vellum/workflows/nodes/displayable/note_node/__init__.py,sha256=KWA3P4fyYJ-fOTky8qNGlcOotQ-HeHJ9AjZt6mRQmCE,58
@@ -2041,7 +2046,8 @@ vellum/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
2041
2046
  vellum/workflows/tests/test_dataset_row.py,sha256=S8aIiYU9TRzJ8GTl5qCjnJ-fuHdxatHJFGLlKTVHPr4,4174
2042
2047
  vellum/workflows/tests/test_sandbox.py,sha256=JKwaluI-lODQo7Ek9sjDstjL_WTdSqUlVik6ZVTfVOA,1826
2043
2048
  vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83yc5FIM33zuo8,353
2044
- vellum/workflows/triggers/__init__.py,sha256=rhsIq3fsKkLaPshO4QnYpopNyIMyieZrdiCGjmiyhbc,322
2049
+ vellum/workflows/tests/triggers/test_vellum_integration_trigger.py,sha256=L1eUKbxgRI09G1tZ2ziVeLsp_CXS_CT5a1Fk6A3YAEQ,8017
2050
+ vellum/workflows/triggers/__init__.py,sha256=_T7PTZpwv9aFitmpGu2Tu_kJpLAwPnNhfh0XGlHBAgw,432
2045
2051
  vellum/workflows/triggers/base.py,sha256=sLH0qzfRYbJRQX6ukGzSy6PaXxlDUSobdFSz8G_4v98,10140
2046
2052
  vellum/workflows/triggers/integration.py,sha256=hAWQMoIubosKgM56rrsAJVhPnc4MjA5YBPRpDgl6J08,2221
2047
2053
  vellum/workflows/triggers/manual.py,sha256=PgbZ92gcK25yz6REXm98zWic1QBfhxLKfGCeHpZEUx4,1266
@@ -2049,7 +2055,8 @@ vellum/workflows/triggers/slack.py,sha256=NBc4Af3PdnhiqTzeS-zyPf7JkrPG0FHT7uP0qN
2049
2055
  vellum/workflows/triggers/tests/__init__.py,sha256=R8lag_iCRyulijHMK4e3Gf6YVB5NplfvwZeTkaRj8gQ,30
2050
2056
  vellum/workflows/triggers/tests/test_integration.py,sha256=mODupO0eOG4G2ooDH1meWKRtA8NRtsm_fii6tijvSqQ,4046
2051
2057
  vellum/workflows/triggers/tests/test_slack.py,sha256=aFTVPj7e3bjblHgbZleKEoh0wayrcC_88nDpXmVowMY,5569
2052
- vellum/workflows/types/__init__.py,sha256=fZ3Xxly7YSsu4kCIYD5aYpYucNM97zTyInb9CA24mf0,102
2058
+ vellum/workflows/triggers/vellum_integration.py,sha256=03YWZ3UpcZSLzenvuJZqOPYvjaEbcDU9HbYGbTbY_QQ,16866
2059
+ vellum/workflows/types/__init__.py,sha256=P3KhHAeoAj8cQti89o3nyPgCfC4BjK1LOFv58A76ktM,290
2053
2060
  vellum/workflows/types/code_execution_node_wrappers.py,sha256=fewX9bqF_4TZuK-gZYIn12s31-k03vHMGRpvFAPm11Y,3206
2054
2061
  vellum/workflows/types/core.py,sha256=R7snCd7ci4tiRuHi5ALGh_5DIIF0T9eze3sf6EnJN-c,1126
2055
2062
  vellum/workflows/types/definition.py,sha256=Qof2MAjSNB0AN2XkSKmk-owuY59YcxDVHYpno6-StPA,8058
@@ -2057,12 +2064,13 @@ vellum/workflows/types/generics.py,sha256=8jptbEx1fnJV0Lhj0MpCJOT6yNiEWeTOYOwrEA
2057
2064
  vellum/workflows/types/stack.py,sha256=h7NE0vXR7l9DevFBIzIAk1Zh59K-kECQtDTKOUunwMY,1314
2058
2065
  vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2059
2066
  vellum/workflows/types/tests/test_definition.py,sha256=QUI9_Wsm2k-ZxQTXogsB0L4csSvVFOvLXHb-asC6K2w,7193
2060
- vellum/workflows/types/tests/test_utils.py,sha256=UnZog59tR577mVwqZRqqWn2fScoOU1H6up0EzS8zYhw,2536
2061
- vellum/workflows/types/utils.py,sha256=mTctHITBybpt4855x32oCKALBEcMNLn-9cCmfEKgJHQ,6498
2067
+ vellum/workflows/types/tests/test_utils.py,sha256=-kMF1mxYlW4Njh8fKjbo45Wc-jOJ7GBYKKjIviuzd4I,2837
2068
+ vellum/workflows/types/trigger_exec_config.py,sha256=3KOKAMMz0JylrQpDqo2I4yX081XcWQQXkgwfCoIak0o,2813
2069
+ vellum/workflows/types/utils.py,sha256=pCC3HlnLaT4HcCKA_JSoWLnDB1czB3HwjirTiP9RDQs,7680
2062
2070
  vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2063
2071
  vellum/workflows/utils/functions.py,sha256=uIg8As0c1BGwXmwectbAQWLWWIWoeHCduGhhoOqQVVU,13157
2064
2072
  vellum/workflows/utils/hmac.py,sha256=JJCczc6pyV6DuE1Oa0QVfYPUN_of3zEYmGFib3OZnrE,1135
2065
- vellum/workflows/utils/names.py,sha256=QtHquoaGqRseu5gg2OcVGI2d_CMcEOvjb9KspwH4C-A,552
2073
+ vellum/workflows/utils/names.py,sha256=kuuDKMILbYrgqmgfTGtkD7VZ6foWwJUfJJjyTxJ3LkI,1221
2066
2074
  vellum/workflows/utils/pydantic_schema.py,sha256=eR_bBtY-T0pttJP-ARwagSdCOnwPUtiT3cegm2lzDTQ,1310
2067
2075
  vellum/workflows/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2068
2076
  vellum/workflows/utils/tests/test_functions.py,sha256=J_WEyVX1yE3lUhoX8etgkbPuwQOWHf-tpIQbKYcLKho,25360
@@ -2074,13 +2082,13 @@ vellum/workflows/utils/vellum_variables.py,sha256=X3lZn-EoWengRWBWRhTNW7hqbj7LkV
2074
2082
  vellum/workflows/utils/zip.py,sha256=HVg_YZLmBOTXKaDV3Xhaf3V6sYnfqqZXQ8CpuafkbPY,1181
2075
2083
  vellum/workflows/vellum_client.py,sha256=3iDR7VV_NgLSm1iZQCKDvrmfEaX1bOJiU15QrxyHpv0,1237
2076
2084
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
2077
- vellum/workflows/workflows/base.py,sha256=9ILdqYIfB6rIpP-3QeQTOgYeCohjR7xC6c9BqCuAvb4,30977
2085
+ vellum/workflows/workflows/base.py,sha256=m9yaLhUPUBdAPR912Rf8lrU5fA8_JwFTM-zDDC46w6g,31620
2078
2086
  vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
2079
2087
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2080
2088
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=Boa-_m9ii2Qsa1RvVM-VYniF7zCpzGgEGy-OnPZkrHg,23941
2081
2089
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
2082
- vellum_ai-1.7.10.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2083
- vellum_ai-1.7.10.dist-info/METADATA,sha256=vdfRtdqtbtZRBcpr0kWHkp5NLGNlT28vVlfm4GtK6cQ,5548
2084
- vellum_ai-1.7.10.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2085
- vellum_ai-1.7.10.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2086
- vellum_ai-1.7.10.dist-info/RECORD,,
2090
+ vellum_ai-1.7.12.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
2091
+ vellum_ai-1.7.12.dist-info/METADATA,sha256=RVcfzsZFXUGMEvDOJb3-3uXAof2PhIEjgmy9dfcjOm8,5548
2092
+ vellum_ai-1.7.12.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
2093
+ vellum_ai-1.7.12.dist-info/entry_points.txt,sha256=xVavzAKN4iF_NbmhWOlOkHluka0YLkbN_pFQ9pW3gLI,117
2094
+ vellum_ai-1.7.12.dist-info/RECORD,,
vellum_cli/pull.py CHANGED
@@ -7,11 +7,11 @@ import zipfile
7
7
  from typing import Optional
8
8
 
9
9
  from dotenv import load_dotenv
10
- from pydash import snake_case
11
10
 
12
11
  from vellum.client.core.api_error import ApiError
13
12
  from vellum.client.core.pydantic_utilities import UniversalBaseModel
14
13
  from vellum.utils.uuid import is_valid_uuid
14
+ from vellum.workflows.utils.names import create_module_name
15
15
  from vellum.workflows.vellum_client import create_vellum_client
16
16
  from vellum_cli.config import (
17
17
  DEFAULT_WORKSPACE_CONFIG,
@@ -257,10 +257,11 @@ def pull_command(
257
257
  workflow_config.container_image_tag = "latest"
258
258
  if not workflow_config.workflow_sandbox_id and pull_contents_metadata.workflow_sandbox_id:
259
259
  workflow_config.workflow_sandbox_id = str(pull_contents_metadata.workflow_sandbox_id)
260
- if not workflow_config.module and workflow_deployment and pull_contents_metadata.deployment_name:
261
- workflow_config.module = snake_case(pull_contents_metadata.deployment_name)
262
- if not workflow_config.module and pull_contents_metadata.label:
263
- workflow_config.module = snake_case(pull_contents_metadata.label)
260
+ if not workflow_config.module:
261
+ deployment_name = pull_contents_metadata.deployment_name if workflow_deployment else None
262
+ workflow_config.module = create_module_name(
263
+ deployment_name=deployment_name, label=pull_contents_metadata.label
264
+ )
264
265
 
265
266
  # Save or update the deployment info when pulling with --workflow-deployment
266
267
  if workflow_deployment:
vellum_cli/push.py CHANGED
@@ -77,7 +77,20 @@ def push_command(
77
77
 
78
78
  logger.info(f"Loading workflow from {workflow_config.module}")
79
79
  resolved_workspace = workspace or workflow_config.workspace or DEFAULT_WORKSPACE_CONFIG.name
80
- workspace_config = next((w for w in config.workspaces if w.name == resolved_workspace), DEFAULT_WORKSPACE_CONFIG)
80
+ workspace_config = next((w for w in config.workspaces if w.name == resolved_workspace), None)
81
+
82
+ if workspace_config is None:
83
+ if resolved_workspace == DEFAULT_WORKSPACE_CONFIG.name:
84
+ workspace_config = DEFAULT_WORKSPACE_CONFIG
85
+ else:
86
+ available_workspaces = sorted(set([w.name for w in config.workspaces] + [DEFAULT_WORKSPACE_CONFIG.name]))
87
+ handle_cli_error(
88
+ logger,
89
+ title=f"Workspace '{resolved_workspace}' not found in config",
90
+ message=f"Available workspaces: {', '.join(available_workspaces)}",
91
+ )
92
+ return
93
+
81
94
  api_key = os.getenv(workspace_config.api_key)
82
95
  if not api_key:
83
96
  raise ValueError(f"No API key value found in environment for workspace '{workspace_config.name}'.")
@@ -181,12 +194,14 @@ def push_command(
181
194
  artifact.seek(0)
182
195
  artifact.name = f"{workflow_config.module.replace('.', '__')}.tar.gz"
183
196
 
197
+ provided_id = workflow_config.workflow_sandbox_id or workflow_sandbox_id
198
+
184
199
  try:
185
200
  response = client.workflows.push(
186
201
  # Remove this once we could serialize using the artifact in Vembda
187
202
  # https://app.shortcut.com/vellum/story/5585
188
203
  exec_config=json.dumps(exec_config),
189
- workflow_sandbox_id=workflow_config.workflow_sandbox_id or workflow_sandbox_id,
204
+ workflow_sandbox_id=provided_id,
190
205
  artifact=artifact,
191
206
  # We should check with fern if we could auto-serialize typed object fields for us
192
207
  # https://app.shortcut.com/vellum/story/5568
@@ -195,6 +210,24 @@ def push_command(
195
210
  strict=strict,
196
211
  )
197
212
  except ApiError as e:
213
+ if e.status_code == 404:
214
+ if provided_id:
215
+ handle_cli_error(
216
+ logger,
217
+ title="Workflow Sandbox not found",
218
+ message=f"Could not find Workflow Sandbox with ID '{provided_id}' "
219
+ f"in workspace '{resolved_workspace}'.",
220
+ )
221
+ else:
222
+ error_detail = e.body.get("detail") if isinstance(e.body, dict) else None
223
+ default_message = "The `/workflows/push` endpoint failed with a 404 response."
224
+ handle_cli_error(
225
+ logger,
226
+ title="Workflow Sandbox not found",
227
+ message=error_detail or default_message,
228
+ )
229
+ return
230
+
198
231
  if e.status_code == 400 and isinstance(e.body, dict) and "diffs" in e.body:
199
232
  diffs: dict = e.body["diffs"]
200
233
  generated_only = diffs.get("generated_only", [])
@@ -592,6 +592,84 @@ def test_push__push_fails_due_to_400_error(mock_module, vellum_client):
592
592
  assert "Traceback" not in result.output
593
593
 
594
594
 
595
+ def test_push__push_fails_due_to_404_error_with_id(mock_module, vellum_client):
596
+ """
597
+ Tests that a 404 error with a workflow sandbox ID shows a helpful error message.
598
+ """
599
+
600
+ # GIVEN a single workflow configured with a workflow_sandbox_id
601
+ temp_dir = mock_module.temp_dir
602
+ module = mock_module.module
603
+
604
+ # AND a workflow exists in the module successfully
605
+ _ensure_workflow_py(temp_dir, module)
606
+
607
+ # AND the push API call returns a 404 response
608
+ vellum_client.workflows.push.side_effect = ApiError(
609
+ status_code=404,
610
+ body={},
611
+ )
612
+
613
+ # WHEN calling `vellum push`
614
+ runner = CliRunner()
615
+ result = runner.invoke(cli_main, ["push", module])
616
+
617
+ # THEN it should fail with a user error code
618
+ assert result.exit_code == 1
619
+
620
+ # AND the error message should be in the error message
621
+ assert "Workflow Sandbox not found" in result.output
622
+ assert mock_module.workflow_sandbox_id in result.output
623
+ assert "workspace" in result.output
624
+
625
+ # AND the stack trace should not be present
626
+ assert "Traceback" not in result.output
627
+
628
+
629
+ def test_push__push_fails_due_to_404_error_without_id(tmp_path, vellum_client, monkeypatch):
630
+ """
631
+ Tests that a 404 error without a workflow sandbox ID shows a helpful error message.
632
+ """
633
+
634
+ # GIVEN a workflow module exists but has no workflow_sandbox_id configured
635
+ module = "examples.mock.test_push__404_without_id"
636
+ module_dir = tmp_path / "examples" / "mock" / "test_push__404_without_id"
637
+ module_dir.mkdir(parents=True)
638
+
639
+ # AND a workflow.py file exists
640
+ workflow_file = module_dir / "workflow.py"
641
+ workflow_file.write_text(
642
+ "from vellum.workflows import BaseWorkflow\n\nclass ExampleWorkflow(BaseWorkflow):\n pass\n"
643
+ )
644
+
645
+ # AND the pyproject.toml file exists without workflow_sandbox_id
646
+ pyproject_file = tmp_path / "pyproject.toml"
647
+ pyproject_file.write_text(f'[tool.vellum]\n[[tool.vellum.workflows]]\nmodule = "{module}"\n')
648
+
649
+ monkeypatch.chdir(tmp_path)
650
+
651
+ # AND the push API call returns a 404 response
652
+ vellum_client.workflows.push.side_effect = ApiError(
653
+ status_code=404,
654
+ body={},
655
+ )
656
+
657
+ # WHEN calling `vellum push`
658
+ runner = CliRunner()
659
+ result = runner.invoke(cli_main, ["push", module])
660
+
661
+ # THEN it should fail with a user error code
662
+ assert result.exit_code == 1
663
+
664
+ # AND the error message should be in the output
665
+ assert "Workflow Sandbox not found" in result.output
666
+ assert "/workflows/push" in result.output
667
+ assert "404 response" in result.output
668
+
669
+ # AND the stack trace should not be present
670
+ assert "Traceback" not in result.output
671
+
672
+
595
673
  @pytest.mark.parametrize(
596
674
  "file_data",
597
675
  [
@@ -1220,3 +1298,47 @@ MY_CUSTOM_VELLUM_API_KEY=custom-key-xyz
1220
1298
  assert len(lock_file_content["workflows"]) == 1
1221
1299
  assert lock_file_content["workflows"][0]["workspace"] == "my_custom_workspace"
1222
1300
  assert lock_file_content["workflows"][0]["workflow_sandbox_id"] == workflow_sandbox_id
1301
+
1302
+
1303
+ def test_push__workspace_option__nonexistent_workspace_should_fail(mock_module):
1304
+ """
1305
+ Tests that pushing with a nonexistent workspace that isn't default should fail.
1306
+ """
1307
+
1308
+ # GIVEN a single workflow configured
1309
+ temp_dir = mock_module.temp_dir
1310
+ module = mock_module.module
1311
+ set_pyproject_toml = mock_module.set_pyproject_toml
1312
+
1313
+ # AND a custom workspace is configured
1314
+ set_pyproject_toml(
1315
+ {
1316
+ "workflows": [
1317
+ {
1318
+ "module": module,
1319
+ }
1320
+ ],
1321
+ "workspaces": [
1322
+ {
1323
+ "name": "my_custom_workspace",
1324
+ "api_key": "MY_CUSTOM_VELLUM_API_KEY",
1325
+ }
1326
+ ],
1327
+ }
1328
+ )
1329
+
1330
+ # AND a workflow exists in the module successfully
1331
+ _ensure_workflow_py(temp_dir, module)
1332
+
1333
+ # WHEN calling `vellum push` with a nonexistent workspace
1334
+ runner = CliRunner()
1335
+ result = runner.invoke(cli_main, ["push", module, "--workspace", "nonexistent_workspace"])
1336
+
1337
+ # THEN it should exit with an error
1338
+ assert result.exit_code == 1
1339
+
1340
+ # AND the error message should indicate the workspace doesn't exist
1341
+ assert "Workspace 'nonexistent_workspace' not found in config" in result.output
1342
+ assert "Available workspaces:" in result.output
1343
+ assert "default" in result.output
1344
+ assert "my_custom_workspace" in result.output
@@ -0,0 +1,65 @@
1
+ from typing import List
2
+
3
+ from vellum import VellumDocument
4
+ from vellum.workflows import BaseWorkflow
5
+ from vellum.workflows.inputs import BaseInputs
6
+ from vellum.workflows.nodes.displayable import FinalOutputNode
7
+ from vellum.workflows.outputs import BaseOutputs
8
+ from vellum.workflows.state import BaseState
9
+ from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
10
+
11
+
12
+ class Inputs(BaseInputs):
13
+ documents: List[VellumDocument]
14
+
15
+
16
+ class MyFinalOutputNode(FinalOutputNode):
17
+ class Outputs(BaseOutputs):
18
+ value = Inputs.documents
19
+
20
+
21
+ class WorkflowWithListVellumDocument(BaseWorkflow[Inputs, BaseState]):
22
+ """A workflow that takes a list of VellumDocument as input."""
23
+
24
+ graph = MyFinalOutputNode
25
+
26
+ class Outputs(BaseOutputs):
27
+ result = MyFinalOutputNode.Outputs.value
28
+
29
+
30
+ def test_serialize_workflow_with_list_vellum_document():
31
+ """Tests that we can serialize a workflow with List[VellumDocument] input."""
32
+
33
+ workflow_display = get_workflow_display(workflow_class=WorkflowWithListVellumDocument)
34
+
35
+ # WHEN we serialize it
36
+ serialized_workflow: dict = workflow_display.serialize()
37
+
38
+ # THEN we should get a serialized representation of the Workflow
39
+ assert serialized_workflow.keys() == {
40
+ "workflow_raw_data",
41
+ "input_variables",
42
+ "state_variables",
43
+ "output_variables",
44
+ }
45
+
46
+ input_variables = serialized_workflow["input_variables"]
47
+ assert len(input_variables) == 1
48
+
49
+ input_var = input_variables[0]
50
+ assert input_var["key"] == "documents"
51
+ assert input_var["type"] == "JSON"
52
+ # NOTE: Once custom type serialization is supported, we will want to represent this using an openapi spec
53
+ assert input_var["required"] is True
54
+ assert input_var["default"] is None
55
+ assert input_var["extensions"] == {"color": None}
56
+
57
+ output_variables = serialized_workflow["output_variables"]
58
+ assert len(output_variables) == 1
59
+
60
+ output_var = output_variables[0]
61
+ assert output_var["key"] == "result"
62
+
63
+ workflow_raw_data = serialized_workflow["workflow_raw_data"]
64
+ assert len(workflow_raw_data["nodes"]) == 2
65
+ assert len(workflow_raw_data["edges"]) == 1
@@ -1,7 +1,7 @@
1
1
  from typing import Optional
2
2
 
3
3
  from vellum import Vellum
4
- from vellum.workflows.events.workflow import WorkflowExecutionInitiatedEvent
4
+ from vellum.workflows.events.workflow import WorkflowEvent, WorkflowExecutionInitiatedEvent
5
5
  from vellum_ee.workflows.display.utils.registry import (
6
6
  get_parent_display_context_from_event,
7
7
  register_workflow_display_class,
@@ -29,8 +29,8 @@ def _should_mark_workflow_dynamic(event: WorkflowExecutionInitiatedEvent) -> boo
29
29
 
30
30
 
31
31
  def event_enricher(
32
- event: WorkflowExecutionInitiatedEvent, client: Optional[Vellum] = None
33
- ) -> WorkflowExecutionInitiatedEvent:
32
+ event: WorkflowEvent, client: Optional[Vellum] = None, metadata: Optional[dict] = None
33
+ ) -> WorkflowEvent:
34
34
  if event.name != "workflow.execution.initiated":
35
35
  return event
36
36
 
@@ -49,4 +49,7 @@ def event_enricher(
49
49
  workflow_version_exec_config = workflow_display.serialize()
50
50
  setattr(event.body, "workflow_version_exec_config", workflow_version_exec_config)
51
51
 
52
+ if metadata is not None:
53
+ event.body.server_metadata = metadata
54
+
52
55
  return event
@@ -112,6 +112,7 @@ def test_event_enricher_marks_subworkflow_deployment_as_dynamic(vellum_client):
112
112
 
113
113
  enriched_event = event_enricher(event, vellum_client)
114
114
 
115
+ assert enriched_event.name == "workflow.execution.initiated"
115
116
  assert hasattr(enriched_event.body, "workflow_version_exec_config")
116
117
  assert enriched_event.body.workflow_version_exec_config is not None
117
118
 
@@ -119,3 +120,31 @@ def test_event_enricher_marks_subworkflow_deployment_as_dynamic(vellum_client):
119
120
  assert hasattr(enriched_event.body.display_context, "node_displays")
120
121
  assert hasattr(enriched_event.body.display_context, "workflow_inputs")
121
122
  assert hasattr(enriched_event.body.display_context, "workflow_outputs")
123
+
124
+
125
+ def test_event_enricher_with_metadata(vellum_client):
126
+ """Test that event_enricher attaches metadata to server_metadata field."""
127
+
128
+ # GIVEN a workflow class
129
+ class TestWorkflow(BaseWorkflow):
130
+ is_dynamic = False
131
+
132
+ # AND an event
133
+ event: WorkflowExecutionInitiatedEvent = WorkflowExecutionInitiatedEvent(
134
+ trace_id=uuid4(),
135
+ span_id=uuid4(),
136
+ body=WorkflowExecutionInitiatedBody(
137
+ workflow_definition=TestWorkflow,
138
+ inputs=BaseInputs(),
139
+ ),
140
+ )
141
+
142
+ # AND some metadata
143
+ metadata = {"custom_key": "custom_value", "another_key": 123}
144
+
145
+ # WHEN the event_enricher is called with metadata
146
+ enriched_event = event_enricher(event, vellum_client, metadata=metadata)
147
+
148
+ # THEN the metadata should be attached to server_metadata
149
+ assert enriched_event.name == "workflow.execution.initiated"
150
+ assert enriched_event.body.server_metadata == metadata