vellum-ai 0.14.68__py3-none-any.whl → 0.14.70__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 (54) hide show
  1. vellum/__init__.py +4 -0
  2. vellum/client/core/client_wrapper.py +1 -1
  3. vellum/client/types/__init__.py +4 -0
  4. vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +23 -0
  5. vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +23 -0
  6. vellum/client/types/folder_entity_document_index_data.py +2 -0
  7. vellum/client/types/indexing_config_vectorizer.py +2 -0
  8. vellum/client/types/indexing_config_vectorizer_request.py +2 -0
  9. vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +3 -0
  10. vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +3 -0
  11. vellum/workflows/environment/__init__.py +2 -1
  12. vellum/workflows/environment/environment.py +5 -1
  13. vellum/workflows/nodes/displayable/bases/search_node.py +15 -3
  14. vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py +215 -0
  15. vellum/workflows/nodes/experimental/tool_calling_node/tests/test_node.py +77 -1
  16. vellum/workflows/nodes/experimental/tool_calling_node/utils.py +2 -2
  17. vellum/workflows/references/environment_variable.py +2 -3
  18. {vellum_ai-0.14.68.dist-info → vellum_ai-0.14.70.dist-info}/METADATA +1 -1
  19. {vellum_ai-0.14.68.dist-info → vellum_ai-0.14.70.dist-info}/RECORD +54 -45
  20. vellum_cli/__init__.py +5 -2
  21. vellum_cli/image_push.py +24 -1
  22. vellum_cli/tests/test_image_push.py +103 -12
  23. vellum_ee/workflows/display/nodes/base_node_display.py +1 -1
  24. vellum_ee/workflows/display/nodes/utils.py +2 -2
  25. vellum_ee/workflows/display/nodes/vellum/api_node.py +2 -2
  26. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +1 -1
  27. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +1 -1
  28. vellum_ee/workflows/display/nodes/vellum/error_node.py +1 -1
  29. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +2 -2
  30. vellum_ee/workflows/display/nodes/vellum/guardrail_node.py +1 -1
  31. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +4 -4
  32. vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +9 -1
  33. vellum_ee/workflows/display/nodes/vellum/map_node.py +1 -1
  34. vellum_ee/workflows/display/nodes/vellum/merge_node.py +1 -1
  35. vellum_ee/workflows/display/nodes/vellum/note_node.py +1 -0
  36. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +1 -1
  37. vellum_ee/workflows/display/nodes/vellum/retry_node.py +1 -1
  38. vellum_ee/workflows/display/nodes/vellum/search_node.py +1 -1
  39. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +1 -1
  40. vellum_ee/workflows/display/nodes/vellum/templating_node.py +1 -1
  41. vellum_ee/workflows/display/nodes/vellum/tests/test_inline_subworkflow_node.py +88 -0
  42. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +16 -0
  43. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +81 -0
  44. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +9 -1
  45. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +59 -297
  46. vellum_ee/workflows/display/utils/auto_layout.py +130 -0
  47. vellum_ee/workflows/display/utils/expressions.py +7 -0
  48. vellum_ee/workflows/display/utils/tests/__init__.py +0 -0
  49. vellum_ee/workflows/display/utils/tests/test_auto_layout.py +56 -0
  50. vellum_ee/workflows/display/workflows/base_workflow_display.py +15 -10
  51. vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +41 -0
  52. {vellum_ai-0.14.68.dist-info → vellum_ai-0.14.70.dist-info}/LICENSE +0 -0
  53. {vellum_ai-0.14.68.dist-info → vellum_ai-0.14.70.dist-info}/WHEEL +0 -0
  54. {vellum_ai-0.14.68.dist-info → vellum_ai-0.14.70.dist-info}/entry_points.txt +0 -0
@@ -1,9 +1,9 @@
1
1
  vellum_cli/CONTRIBUTING.md,sha256=FtDC7BGxSeMnwCXAUssFsAIElXtmJE-O5Z7BpolcgvI,2935
2
2
  vellum_cli/README.md,sha256=2NudRoLzWxNKqnuVy1JuQ7DerIaxWGYkrH8kMd-asIE,90
3
- vellum_cli/__init__.py,sha256=2_6oGoVcLFUh4L63Kz4SBL4Y6XevJ70oYbg7BJ3cb5Q,12569
3
+ vellum_cli/__init__.py,sha256=oi-vvNVepu23IBBjhA5uUIDVYBPqQ3EzxWZAPn2S64c,12700
4
4
  vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
5
5
  vellum_cli/config.py,sha256=v5BmZ-t_v4Jmqd7KVuQMZF2pRI-rbMspSkVYXIRoTmI,9448
6
- vellum_cli/image_push.py,sha256=mjK3Fj3_MIhIGmurYVz_OC-hCoAef5LqDb0OppKJIJc,9909
6
+ vellum_cli/image_push.py,sha256=Xw_IlItZ27OM5XrWcaqRxXCx4rroV3IaUByl8Ela6U8,10730
7
7
  vellum_cli/init.py,sha256=WpnMXPItPmh0f0bBGIer3p-e5gu8DUGwSArT_FuoMEw,5093
8
8
  vellum_cli/logger.py,sha256=dcM_OmgqXLo93vDYswO5ylyUQQcTfnA5GTd5tbIt3wM,1446
9
9
  vellum_cli/ping.py,sha256=p_BCCRjgPhng6JktuECtkDQLbhopt6JpmrtGoLnLJT8,1161
@@ -12,7 +12,7 @@ vellum_cli/push.py,sha256=wxRlFu2mYW9SvwODYxwajri1mDQ2be0n-9i0d9QAc30,10194
12
12
  vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  vellum_cli/tests/conftest.py,sha256=AFYZryKA2qnUuCPBxBKmHLFoPiE0WhBFFej9tNwSHdc,1526
14
14
  vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
15
- vellum_cli/tests/test_image_push.py,sha256=QM-JlR_aJappvwbCLteQZZf76sd7SE1sRj3armvFK-I,5706
15
+ vellum_cli/tests/test_image_push.py,sha256=QGbhCB2DhkepoBUdfhv_ovks-HQ164jmjKFuYvPmJt8,9141
16
16
  vellum_cli/tests/test_image_push_error_handling.py,sha256=_Wjfkn1orI2K4Ahzqz4u8T13or7NOX01K4BtcTuTIOM,7107
17
17
  vellum_cli/tests/test_init.py,sha256=8UOc_ThfouR4ja5cCl_URuLk7ohr9JXfCnG4yka1OUQ,18754
18
18
  vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k,272
@@ -27,33 +27,34 @@ vellum_ee/workflows/display/base.py,sha256=EqlQFD56kpqMY02ZBJBQajzJKh33Dwi60Wo77
27
27
  vellum_ee/workflows/display/editor/__init__.py,sha256=MSAgY91xCEg2neH5d8jXx5wRdR962ftZVa6vO9BGq9k,167
28
28
  vellum_ee/workflows/display/editor/types.py,sha256=x-tOOCJ6CF4HmiKDfCmcc3bOVfc1EBlP5o6u5WEfLoY,567
29
29
  vellum_ee/workflows/display/nodes/__init__.py,sha256=jI1aPBQf8DkmrYoZ4O-wR1duqZByOf5mDFmo_wFJPE4,307
30
- vellum_ee/workflows/display/nodes/base_node_display.py,sha256=2VyAk9SjBpt_b2fp81KlFxS5ddk2JhcldEI1S4crPj0,16921
30
+ vellum_ee/workflows/display/nodes/base_node_display.py,sha256=8Iio5O2Lu7XA5EfCWhXNZVzEOiaXO4eMdssczGBKXxU,16922
31
31
  vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=jI_kUi9LnNLDpY63QtlC4TfN8P571VN4LpzH0I1ZtLk,1149
32
32
  vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=Z4Mf7xLCNiblSbpKI0BrV5modQr-ZcFzhfir_OSyTTs,2997
34
34
  vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
35
- vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
35
+ vellum_ee/workflows/display/nodes/utils.py,sha256=gxiixuiJi6jrYTV2jmsPsyQfeuwKmrULRb-Lg9c0Aqw,975
36
36
  vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLPyRNe8YIrx3Yo9HeeW-aXXFk,1668
37
- vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=ZiOJsSovftbH1eVFdU0-UE4DUliIHPQZkwrFcooN-Vk,8856
37
+ vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=5Uq8x08F64yrBcqbfsVeuoGnTa9eoOPumYzZZrDPmr0,8847
38
38
  vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=rJbHZBg9A_v2bjk-R6MfWzShcrS2gcKIOyYGoqwTx8s,6353
39
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=L308T4U6eaL0WUJ_hQ0qrH-i8IuMBCm5XjRO2_b-Mro,4507
40
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=MrvyiYD0qgQf3-ZYFcurQtin3FagAHGRoT7zYGiIao0,11150
41
- vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=m2DmOXm9-jiiIl6zwkXHNfsYp5PTpBHEdt5xaIsabWo,2363
42
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=jUDI2FwVaw0Or4zJL58J_g0S--i59Hzik60s_Es_M-8,3098
43
- vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=5_5D5PMzBOeUdVtRlANbfEsu7Gv3r37dLvpfjGAqYac,2330
44
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=-6Ru9W_vfNdLKLStB40qicMx6WvdejPM3PE54Onqk5w,10943
45
- vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=fQV5o83BPTwGX6o-ThN4r7BcIhySyqwpW1JGYWpvSJI,5625
46
- vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=2teCYQSX8g-b8aaC_MY4XSC4GRMTJigPFWNTQEkC_gk,3907
47
- vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=yBWeN4T_lOsDVnNOKWRiT7JYKu0IR5Fx2z99iq6QKSA,3273
48
- vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=3E0UqmgVYdtbj4nyq8gKju8EpMsRHMCQ0KLrJhug3XU,1084
49
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=1NxFddxWCFtMe_je1cutP7qnoASoG94LJqKhRkoQwvw,3535
50
- vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=X3xnlAU5JisL0jRvaG_V9RvTF7ZlGufTO8tXLLVhGIg,3280
51
- vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=3n1qa-zWIk0p_H94u0hjfDtGkanldC6EXVhg0xgLmE4,9544
52
- vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=MWLZBXHsmj5vKgqOgI2HHcHAJzLS0sqybn6idhwug8Y,2669
53
- vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=J84_EUfwWwpeOfUFBdRorrD1Bod0jDBFdQ6xnRyp9Ho,3338
39
+ vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=6lavdBw297GwAQqyxjnPUtx5pHv6k5V9Vkuq7s2D0TM,4508
40
+ vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=9GtbvSJUNF626tCYxnMxETVZm3Fq84vOZ3Nkdkl3n-M,11146
41
+ vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=YhMsi2TG1zSR8E7IpxzzSncOyVLcvqTuGa3mr4RqHd8,2364
42
+ vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=zo-nalsuayMqeb2GwR2OB9SFK3y2U5aG-rtwrsjdasQ,3089
43
+ vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=IniO5KvO0Rw9zghFg3RFvbXBTv6Zi1iuQhaA1DLazqU,2331
44
+ vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=W_ijZBO9EsiyLM_tKyBkVu3V5h3QDx2JB-Tfs1xb-BE,10955
45
+ vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=f7MeoxgKrdyb1dSJsvdDtZPlp1J2Pa4njPvN3qHVktA,6028
46
+ vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=uaZ2wcZR1J9C9iI0QWAsgNK9IlcuCz1808oxXmiYsLY,3908
47
+ vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=RTP_raQWL8ZKoRKLpxLfpyXzw61TZeTCkTuM1uRLIkI,3274
48
+ vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=6xf8MJ684KecKPJrGlCJuJYLPtYImXmqN85Y_6KPjW4,1141
49
+ vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=cT5qT7Nd2v6rSsIErpSAWaxta7txGOSFOZz2AQYQmWE,3536
50
+ vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=Gos8F1yKN69GmegDO2q3NlGTamibd4rpuTasSU0mK8c,3281
51
+ vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=fkkn36UtjovrXYguAermgB5wm2WYakqBNaIiO0BPirI,9545
52
+ vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=Ub6XDdVtVarqoqQrIXpJxNbp3xvz37vwpuf93DhLvX8,2670
53
+ vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=TdIJWh2l8p4tw7ejRexGOFQKnviirUqie3WYwsrVQ4g,3339
54
54
  vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=ZasoqG8FmqnZDj2FfL5BGPq9fafOTJqV_4xjOKLi1gc,5434
56
56
  vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=540FoWMpJ3EN_DPjHsr9ODJWCRVcUa5hZBn-5T2GiHU,1665
57
+ vellum_ee/workflows/display/nodes/vellum/tests/test_inline_subworkflow_node.py,sha256=SKOYan-dxY4gsO0R4JyQUyWrABHBN8XImKw9Eeo4wGo,3535
57
58
  vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py,sha256=uiMB0cOxKZzos7YKnj4ef4DFa2bOvZJWIv-hfbUV6Go,1218
58
59
  vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py,sha256=G-qJyTNJkpqJiEZ3kCJl86CXJINLeFyf2lM0bQHCCOs,3822
59
60
  vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=TtzUj3Zk3ZhwtXE_WyctCC-CmcLB1RxntyF7u-a3i6I,10077
@@ -71,7 +72,7 @@ vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DE
71
72
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
73
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=XOQDDRiG46etxTC7-_RUEutoNumXc02fo7oho4GYM0c,1900
73
74
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=tsjGM-jOurPSkDIbrDFdjNLmkI1fPNPAw3J9-l9knCw,12848
74
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=MdjWgD8yZhv0MnpI-Ak5EqMzh2joVz3z5WFqr42PgZc,21508
75
+ vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=xrekxgRlZrNIF-bkvfIzGGN3vKgTKNttNz3tfLanzd4,22062
75
76
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=s6_mnk0pkztU59wYpSfOFpMhAJaRjmyfxM6WJGtnD4Y,6456
76
77
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=PkSgghJDz0fpDB72HHPjLjo8LkZk-HpUkCQzRLX-iVw,40611
77
78
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=dsJr8I9AdPwMOGszirfNDzZP2Ychd94aAKuPXAzknMk,4632
@@ -82,8 +83,8 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_stat
82
83
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=MNnQ51ZWOQGVfBdpIqvr4OZF0tWdfrh2bsHP3xkTwQw,5841
83
84
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=kLOnUNn-r1w1JXNQcVKe-Vp-fKhSfuDBuDqrjGkFZ3U,5544
84
85
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=v07cILUzS5iFYDrSOAXK93yz50-FtxLaMYMwoaPOv20,7374
85
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=THUDmsZJAOigJWs7pCiVik-STA5zvQtUZxgW7XkUBl8,11556
86
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=u2nquKoO3o2xIkU_uFPOb_s5YoLmULiq09vb6Ee0Cqw,21415
86
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=Jcuzu_zjS4ATrPg-pKvrU9WeUFAWMmPQVIcYltG6NfA,14930
87
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=1ND_6lfPNUQjSc72k_sxydeeOU5f_kHkRXO65boYFok,21631
87
88
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=3gZuNM8sT6ovVaeoAvd2JoyKwuxokvowlhH8kwDUoZ8,16559
88
89
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=IIJt7YZBzkhNtbmaMwCX4ENs58QtSIIoBHlMR6OwGU8,8342
89
90
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=QXiRjwtiTPeMUl40Pvh_geeU99C3mv1aVS85oeIUwY4,21052
@@ -91,21 +92,24 @@ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_
91
92
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=KkYZc_bZuq1lmDcvUz3QxIqJLpQPCZioD1FHUNsMJY8,11211
92
93
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=aZaqRDrkO3ytcmdM2eKJqHSt60MF070NMj6M2vgzOKc,7711
93
94
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=r748dpS13HtwY7t_KQFExFssxRy0xI2d-wxmhiUHRe0,3850
94
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py,sha256=DzoDdmAwabMTuNu2gCgAyO0KjZxFr9JlkQRz2koUAJ8,46504
95
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py,sha256=7UWh_8dKiRL7AochCcIvOsWvC0G3yp8aEup1wIIPo9k,25256
95
96
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=Cx3oY6vPVap0xm_mChqfQw4zzR4pqV36o_SyD8g6jPY,8727
96
97
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=EL5kfakuoEcwD85dGjhMta-J-PpCHRSDoc80SdbBrQk,2769
97
98
  vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=RmFUDx8dYdfsOE2CGLvdXqNNRtLLpVzXDN8dqZyMcZ8,5822
98
99
  vellum_ee/workflows/display/types.py,sha256=i4T7ElU5b5h-nA1i3scmEhO1BqmNDc4eJDHavATD88w,2821
99
100
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ vellum_ee/workflows/display/utils/auto_layout.py,sha256=R_BLSZjdanj3UIR4cS6WVT6ek0i7AKJyHSjK1wPiois,3877
100
102
  vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
101
- vellum_ee/workflows/display/utils/expressions.py,sha256=Y0WMn0V3GjVTJShMSWIe3Z75NzrRfs4_qPytUTiqbhQ,13489
103
+ vellum_ee/workflows/display/utils/expressions.py,sha256=Ef1KfY7SmM2mvBDDag2fnU_55Ei_uz5EPDbYPQkI7Zo,13755
102
104
  vellum_ee/workflows/display/utils/registry.py,sha256=fWIm5Jj-10gNFjgn34iBu4RWv3Vd15ijtSN0V97bpW8,1513
105
+ vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ vellum_ee/workflows/display/utils/tests/test_auto_layout.py,sha256=vfXI769418s9vda5Gb5NFBH747WMOwSgHRXeLCTLVm8,2356
103
107
  vellum_ee/workflows/display/utils/vellum.py,sha256=mtoXmSYwR7rvrq-d6CzCW_auaJXTct0Mi1F0xpRCiNQ,5627
104
108
  vellum_ee/workflows/display/vellum.py,sha256=o7mq_vk2Yapu9DDKRz5l76h8EmCAypWGQYe6pryrbB8,3576
105
109
  vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
106
- vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=dVOe3TOV00uvllxsDziM3pFfL2HYTkWRq9iKDlj_xyU,33162
110
+ vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=LKM8MnrezrBHU1W5gZ2y82UqkBwnKQ2OBQZD56g-XmI,33399
107
111
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=gxz76AeCqgAZ9D2lZeTiZzxY9eMgn3qOSfVgiqYcOh8,2028
108
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=o0bHG9gi6RKlyccuCyow-YbCY8ejcvS1f4VJ6ozjUVA,30234
112
+ vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=L7SKWJ26Ex-XXTNfHYXux7KP6I-dxE1EMQylap4Mhjs,31762
109
113
  vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=aaKdmWrgEe5YyV4zuDY_4E3y-l59rIHQnNGiPj2OWxQ,359
110
114
  vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
115
  vellum_ee/workflows/server/virtual_file_loader.py,sha256=7JphJcSO3H85qiC2DpFfBWjC3JjrbRmoynBC6KKHVsA,2710
@@ -131,12 +135,12 @@ vellum_ee/workflows/tests/local_workflow/workflow.py,sha256=A4qOzOPNwePYxWbcAgIP
131
135
  vellum_ee/workflows/tests/test_display_meta.py,sha256=DIzjNbwK1-4mlttPML6NskQ4rPVMXhj5zeOmBEyPqKI,3728
132
136
  vellum_ee/workflows/tests/test_server.py,sha256=SsOkS6sGO7uGC4mxvk4iv8AtcXs058P9hgFHzTWmpII,14519
133
137
  vellum_ee/workflows/tests/test_virtual_files.py,sha256=TJEcMR0v2S8CkloXNmCHA0QW0K6pYNGaIjraJz7sFvY,2762
134
- vellum/__init__.py,sha256=U4MVBzBx8I8-rOG_feluSz5U8_hD969e85F4cRgmVv4,42104
138
+ vellum/__init__.py,sha256=IYGBqJ8OLfaIyX3UJcfQeRdF-qKVepOPdi6M0O3Vgq4,42290
135
139
  vellum/client/README.md,sha256=CuGUYnaE0Imt0KqQ4sIPaUghCjLHkF3DdEvZWu14-8s,4807
136
140
  vellum/client/__init__.py,sha256=AYopGv2ZRVn3zsU8_km6KOvEHDbXiTPCVuYVI7bWvdA,120166
137
141
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
138
142
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
139
- vellum/client/core/client_wrapper.py,sha256=6fturcmswP_kOmf2e6ut4Aq9iJnogzSflqKqA9a-qEI,1869
143
+ vellum/client/core/client_wrapper.py,sha256=69WJ9aMFe9t-07plHgGcN8V68mijPCXTtGsp7QmE6I4,1869
140
144
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
141
145
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
142
146
  vellum/client/core/http_client.py,sha256=Z77OIxIbL4OAB2IDqjRq_sYa5yNYAWfmdhdCSSvh6Y4,19552
@@ -204,7 +208,7 @@ vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCat
204
208
  vellum/client/resources/workspace_secrets/client.py,sha256=zlBdbeTP6sqvtyl_DlrpfG-W5hSP7tJ1NYLSygi4CLU,8205
205
209
  vellum/client/resources/workspaces/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
206
210
  vellum/client/resources/workspaces/client.py,sha256=RthwzN1o-Jxwg5yyNNodavFyNUSxfLoTv26w3mRR5g8,3595
207
- vellum/client/types/__init__.py,sha256=6YfOKPZ7rGwTipcHjrv71MVVtARtlAPClzVDsEcsjac,63767
211
+ vellum/client/types/__init__.py,sha256=4IDszjF4RsdBrwOSkZ21ZJ1I90jyRwCkZpmXC8n7kpI,64067
208
212
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
209
213
  vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
210
214
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=oDG60TpwK1YNSKhRsBbiP2O3ZF9PKR-M9chGIfKw4R4,1004
@@ -324,10 +328,12 @@ vellum/client/types/execution_vellum_value.py,sha256=PpbrbJdSioqaqT2gZ6mx2Ht0Oy8
324
328
  vellum/client/types/external_input_descriptor.py,sha256=ErOW2OfFMz1FDGmVY6NgiUBPsleaWhdJBekwFp4ru7o,805
325
329
  vellum/client/types/external_test_case_execution.py,sha256=TkO1CQcEI8LA7sdYJfAqhbdkj27sXEkF8VL7zBeDBM4,877
326
330
  vellum/client/types/external_test_case_execution_request.py,sha256=xd80GZg4FbZP6FZRIhZL9V1uFetI3bcCj-wzanco5tQ,921
331
+ vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py,sha256=XhNEBWd5qzFiXTestFPTusjxYfqW8j_kHBebCMfa58M,719
332
+ vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py,sha256=xC0-zak2HonnyyiooqXSWiQQyrQK6yf6BFogt_TzSCo,726
327
333
  vellum/client/types/finish_reason_enum.py,sha256=KoNjzvXMHDCT0AUhhwGoZ1_7bi4h3fZEFvvHyGyoTP8,169
328
334
  vellum/client/types/folder_entity.py,sha256=v8zNprIbxktOzmncbNXTOJlLTBV5bZqD1Z_AGGHG1_8,578
329
335
  vellum/client/types/folder_entity_document_index.py,sha256=-Tg2qnzGhp2FLnvGrgoVr0ZBEKFmm2TjgYvlII8tkog,839
330
- vellum/client/types/folder_entity_document_index_data.py,sha256=UceusLf7dLYDHq4ZlKdP5Wx_ytL5oadOPMtut9AKkrQ,723
336
+ vellum/client/types/folder_entity_document_index_data.py,sha256=1mQxkj4TlbKyGpqMY_aPgWyDFTN6YW9VfszROU1cmM4,844
331
337
  vellum/client/types/folder_entity_folder.py,sha256=1GWfyHdenyAI2GXiouIbnFhPK4ADqZGFh-6fpp_C6-U,792
332
338
  vellum/client/types/folder_entity_folder_data.py,sha256=JLYkhvRY63-ojNY84lfRTaUg25KjslSE-iNAC2NYCTI,674
333
339
  vellum/client/types/folder_entity_prompt_sandbox.py,sha256=7CGVcK5maoqO7CC7sFfi6F5X0QWdHVbEygqLyci_VDY,839
@@ -375,8 +381,8 @@ vellum/client/types/image_chat_message_content_request.py,sha256=b0K1NnY-NneG_V3
375
381
  vellum/client/types/image_prompt_block.py,sha256=JIcfWZAWYcOm04Y6XjmxPG58SaoXwIjuZwnVypEVahU,1008
376
382
  vellum/client/types/image_vellum_value.py,sha256=69XnqE9m-bd3dOdMD73WtfDm_kDrVg-y3fi35akuqsk,748
377
383
  vellum/client/types/image_vellum_value_request.py,sha256=-Q66T8M6fAf9K_v0LeRwZjB_6pkBUSyMUQc6plRRK5E,777
378
- vellum/client/types/indexing_config_vectorizer.py,sha256=vmRzRs1xMOhPTaKijFkhqVn8sITxHQCADwNVTp9ZBsk,1536
379
- vellum/client/types/indexing_config_vectorizer_request.py,sha256=6csvEVzlZwv5rXhuMLW9bO1L4y6qbdZaMFX_cahlHSA,1741
384
+ vellum/client/types/indexing_config_vectorizer.py,sha256=pVZ5mCY75LQD15r83IMmPmt8tK__kSFlBd62szI_ZYw,1673
385
+ vellum/client/types/indexing_config_vectorizer_request.py,sha256=q2pC4oIEy74xCgsl4hOnHtNA4BRYhQsbiHOn_IdT3V8,1900
380
386
  vellum/client/types/indexing_state_enum.py,sha256=KWYMz5DwJnVhu3ZlSDdqiC5MtiTIdrxE4EvwFYiel1U,213
381
387
  vellum/client/types/initiated_ad_hoc_execute_prompt_event.py,sha256=B34Q2aU2vj9qpjpWXIieN839iB7t4EWCD9mmCfbkwpo,915
382
388
  vellum/client/types/initiated_execute_prompt_event.py,sha256=tHt80ZIuKk6B85IQqSF3MQqiSSiBsSP2Aw3XuD5xk6E,893
@@ -1002,6 +1008,8 @@ vellum/types/execution_vellum_value.py,sha256=VRe64r540rkdVWjWijd7Y5JsYM_9zw09QU
1002
1008
  vellum/types/external_input_descriptor.py,sha256=-r6xPo7-1Ioq4XZ2nwcrg8OBoyVItKr-BeXspJwDWDQ,163
1003
1009
  vellum/types/external_test_case_execution.py,sha256=Av4H59SBBCZ9CZtT-eKD3n05lgljTqdtSZSjtsDpbc4,166
1004
1010
  vellum/types/external_test_case_execution_request.py,sha256=oJx3JSLU9aponZ53dY78ymcSZbQbHpAwnch9aq0F7ws,174
1011
+ vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py,sha256=NG9MjraDr4m6gdIo-tuD9Rtc9qGAWBuwk8duZxjoIg0,182
1012
+ vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py,sha256=_5CERkmrTW-Pie0V9QC5IR_WFS5YRB4yNfndaUv6rJQ,190
1005
1013
  vellum/types/finish_reason_enum.py,sha256=CIomSWB4DFcwnO92nIjQsI_TWMtJTxBFwnFSWVoATsY,156
1006
1014
  vellum/types/folder_entity.py,sha256=zY6js2gTkiJtpUqa73fKd8niwxwsxF-woj_QiyTFXos,151
1007
1015
  vellum/types/folder_entity_document_index.py,sha256=WWj08Jkv9NyoPwWtvhQmdoEMnSJJ42HIFgOHJiFsm4o,166
@@ -1495,8 +1503,8 @@ vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR
1495
1503
  vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
1496
1504
  vellum/workflows/emitters/__init__.py,sha256=YyOgaoLtVW8eFNEWODzCYb0HzL0PoSeNRf4diJ1Y0dk,80
1497
1505
  vellum/workflows/emitters/base.py,sha256=D5SADKIvnbgKwIBgYm77jaqvpo1o0rz4MmuX_muRqQU,359
1498
- vellum/workflows/environment/__init__.py,sha256=wGHslgSEZ7Octe4C-hNtl84EFelNimgmWQoi7px4-uw,71
1499
- vellum/workflows/environment/environment.py,sha256=0XhJPBs8YASWmvPx8bkSdCvcbDmzpe9stfs2kgtNDRU,296
1506
+ vellum/workflows/environment/__init__.py,sha256=TJz0m9dwIs6YOwCTeuN0HHsU-ecyjc1OJXx4AFy83EQ,121
1507
+ vellum/workflows/environment/environment.py,sha256=7BThIBSRKDkBebgGTYJiPZ_Bx7c8mUigZUypyqF7inM,417
1500
1508
  vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
1501
1509
  vellum/workflows/errors/types.py,sha256=nUWuniEfrhdtb-_2GzoDGlYnSJ_yuNUGjVkaKLNr-rM,4049
1502
1510
  vellum/workflows/events/__init__.py,sha256=6pxxceJo2dcaRkWtkDAYlUQZ-PHBQSZytIoyuUK48Qw,759
@@ -1594,7 +1602,7 @@ vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=cD2Rz
1594
1602
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1595
1603
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py,sha256=terQtPqLGiKKGtU7zbkM3XkbVddLQI87bBj31M0zaRE,21356
1596
1604
  vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=0a40fkkZkFMmZN0CsWf6EP_y1H6x36EGa3WcfVNyOsM,9797
1597
- vellum/workflows/nodes/displayable/bases/search_node.py,sha256=3UtbqY3QO4kzfJHbmUNZGnEEfJmaoiF892u8H6TGjp8,5381
1605
+ vellum/workflows/nodes/displayable/bases/search_node.py,sha256=-BxQtuPgq8NZfUf5XJgHNQTni5kGbvAHq7WFqd0Euck,6107
1598
1606
  vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1599
1607
  vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=eqdqbKNRWVMDPevgwLg1i6YK0g4L4bCy-7xCBN5yYZI,3156
1600
1608
  vellum/workflows/nodes/displayable/bases/types.py,sha256=C37B2Qh2YP7s7pUjd-EYKc2Zl1TbnCgI_mENuUSb8bo,1706
@@ -1640,6 +1648,7 @@ vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py
1640
1648
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py,sha256=c98nMPogZ6iN_pTvVUMTB3J72Hj--H-XVgvvRXhdSQE,19085
1641
1649
  vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1642
1650
  vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=MHuIolSsrY9ziwoXWsye3XOODncL9DLZOkNYzQMLhRw,4696
1651
+ vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py,sha256=8aw8hDFL0ZXThvAa7yxrJN026EYGD4-Q1si3Phu9-_0,6307
1643
1652
  vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
1644
1653
  vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=dc3EEn1sOICpr3GdS8eyeFtExaGwWWcw9eHSdkRhQJU,2584
1645
1654
  vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrraiBHDLKTlnBa51ZiE,284
@@ -1648,8 +1657,8 @@ vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha2
1648
1657
  vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py,sha256=cKI2Ls25L-JVt4z4a2ozQa-YBeVy21Z7BQ32Sj7iBPE,10460
1649
1658
  vellum/workflows/nodes/experimental/tool_calling_node/__init__.py,sha256=S7OzT3I4cyOU5Beoz87nPwCejCMP2FsHBFL8OcVmxJ4,118
1650
1659
  vellum/workflows/nodes/experimental/tool_calling_node/node.py,sha256=FkhaJccpCbx2be_IZ5V2v6Lo-jPJ0WgSC5tveLvAW4A,5774
1651
- vellum/workflows/nodes/experimental/tool_calling_node/tests/test_node.py,sha256=sxG26mOwt4N36RLoPJ-ngginPqC5qFzD_kGj9izdCFI,1833
1652
- vellum/workflows/nodes/experimental/tool_calling_node/utils.py,sha256=vB-tdN-44iVrTFvwGLVZW3dv62imIp5fPo0FYCW0l3M,9815
1660
+ vellum/workflows/nodes/experimental/tool_calling_node/tests/test_node.py,sha256=7x_o81vT7gWtVw3zDppcWnlJbakgxx_oI1esqhs2gpI,4551
1661
+ vellum/workflows/nodes/experimental/tool_calling_node/utils.py,sha256=iiB_Tm3zvElispx_DhnW4eQH1MnK-Y9k44X_PSpp7p8,9923
1653
1662
  vellum/workflows/nodes/mocks.py,sha256=a1FjWEIocseMfjzM-i8DNozpUsaW0IONRpZmXBoWlyc,10455
1654
1663
  vellum/workflows/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1655
1664
  vellum/workflows/nodes/tests/test_mocks.py,sha256=mfPvrs75PKcsNsbJLQAN6PDFoVqs9TmQxpdyFKDdO60,7837
@@ -1663,7 +1672,7 @@ vellum/workflows/ports/port.py,sha256=j_qiZlpx-a1cK5E7sxXwPcb_9NS-KUM-JoP8mgqg32
1663
1672
  vellum/workflows/ports/utils.py,sha256=cWJ9xX1KrHBTiU3xe6t7Rs0yaOy9RV18GMtHaAshAsc,3094
1664
1673
  vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
1665
1674
  vellum/workflows/references/constant.py,sha256=6yUT4q1sMj1hkI_tzzQ9AYcmeeDYFUNCqUq_W2DN0S8,540
1666
- vellum/workflows/references/environment_variable.py,sha256=-gfOcdYwVp9ztSUYz6h2WI2Cg95zqxq5hhFf3Yr7aQg,791
1675
+ vellum/workflows/references/environment_variable.py,sha256=-RGql8dSrhimfCdrT_G_LSYz6VlKpfAf-N7XEyvgbBk,649
1667
1676
  vellum/workflows/references/execution_count.py,sha256=JILHqt8ELdc9ct-WsVCA5X-rKiP1rmJODw-XTf4kpHI,722
1668
1677
  vellum/workflows/references/external_input.py,sha256=c_4SojTpykCSbGS1Pjmx9FfquyYGMPksoj0AbrWv7Go,2064
1669
1678
  vellum/workflows/references/input.py,sha256=3INu-TLTi4dziWmva6LO3WvgDlPzsjayUx61cVvqLJA,325
@@ -1715,8 +1724,8 @@ vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnad
1715
1724
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1716
1725
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=fROqff6AZpCIzaSwOKSdtYy4XR0UZQ6ejxL3RJOSJVs,20447
1717
1726
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
1718
- vellum_ai-0.14.68.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1719
- vellum_ai-0.14.68.dist-info/METADATA,sha256=qkOifbKlMLcfIUM9o80rUlUSYhC84pK5Tv1pFyhWomM,5556
1720
- vellum_ai-0.14.68.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1721
- vellum_ai-0.14.68.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1722
- vellum_ai-0.14.68.dist-info/RECORD,,
1727
+ vellum_ai-0.14.70.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1728
+ vellum_ai-0.14.70.dist-info/METADATA,sha256=qt_owPpRPSEfBhHgLJGnUPlKvtDCCmMBkMLu1UcwUfQ,5556
1729
+ vellum_ai-0.14.70.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1730
+ vellum_ai-0.14.70.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1731
+ vellum_ai-0.14.70.dist-info/RECORD,,
vellum_cli/__init__.py CHANGED
@@ -362,9 +362,12 @@ def images() -> None:
362
362
  "This field does not push multiple local tags of the passed in image.",
363
363
  )
364
364
  @click.option("--workspace", type=str, help="The specific Workspace config to use when pushing")
365
- def image_push(image: str, tag: Optional[List[str]] = None, workspace: Optional[str] = None) -> None:
365
+ @click.option("--source", type=str, help="Path to Dockerfile to build before pushing")
366
+ def image_push(
367
+ image: str, tag: Optional[List[str]] = None, workspace: Optional[str] = None, source: Optional[str] = None
368
+ ) -> None:
366
369
  """Push Docker image to Vellum"""
367
- image_push_command(image, tag, workspace)
370
+ image_push_command(image, tag, workspace, source)
368
371
 
369
372
 
370
373
  @workflows.command(name="init")
vellum_cli/image_push.py CHANGED
@@ -17,10 +17,33 @@ from vellum_cli.logger import handle_cli_error, load_cli_logger
17
17
  _SUPPORTED_ARCHITECTURE = "amd64"
18
18
 
19
19
 
20
- def image_push_command(image: str, tags: Optional[List[str]] = None, workspace: Optional[str] = None) -> None:
20
+ def image_push_command(
21
+ image: str, tags: Optional[List[str]] = None, workspace: Optional[str] = None, source: Optional[str] = None
22
+ ) -> None:
21
23
  load_dotenv(dotenv_path=os.path.join(os.getcwd(), ".env"))
22
24
  logger = load_cli_logger()
23
25
  config = load_vellum_cli_config()
26
+
27
+ if source:
28
+ logger.info(f"Building Docker image from Dockerfile: {source}")
29
+
30
+ if not os.path.exists(source):
31
+ handle_cli_error(logger, "Dockerfile not found", f"Dockerfile does not exist: {source}")
32
+
33
+ source_dir = os.path.dirname(source)
34
+ dockerfile_name = os.path.basename(source)
35
+
36
+ build_result = subprocess.run(
37
+ ["docker", "buildx", "build", "-f", dockerfile_name, "--platform=linux/amd64", "-t", image, "."],
38
+ cwd=source_dir,
39
+ stdout=subprocess.PIPE,
40
+ stderr=subprocess.PIPE,
41
+ )
42
+
43
+ if build_result.returncode != 0:
44
+ handle_cli_error(logger, "Docker build failed", build_result.stderr.decode("utf-8"))
45
+
46
+ logger.info("Docker build completed successfully")
24
47
  workspace_config = next((w for w in config.workspaces if w.name == workspace), DEFAULT_WORKSPACE_CONFIG)
25
48
 
26
49
  api_key = os.getenv(workspace_config.api_key, None)
@@ -4,13 +4,14 @@ import os
4
4
  import shutil
5
5
  import subprocess
6
6
  import tempfile
7
- from unittest.mock import MagicMock, patch
7
+ from unittest.mock import MagicMock
8
8
  from uuid import uuid4
9
9
  from typing import Generator
10
10
 
11
11
  from click.testing import CliRunner
12
12
  from httpx import Response
13
13
 
14
+ from vellum.client.types.docker_service_token import DockerServiceToken
14
15
  from vellum_cli import main as cli_main
15
16
 
16
17
 
@@ -26,9 +27,18 @@ def mock_temp_dir() -> Generator[str, None, None]:
26
27
  shutil.rmtree(temp_dir)
27
28
 
28
29
 
29
- @patch("subprocess.run")
30
- @patch("docker.from_env")
31
- def test_image_push__self_hosted_happy_path(mock_docker_from_env, mock_run, vellum_client, monkeypatch):
30
+ @pytest.fixture
31
+ def mock_docker_from_env(mocker):
32
+ return mocker.patch("docker.from_env")
33
+
34
+
35
+ @pytest.fixture
36
+ def mock_subprocess_run(mocker):
37
+ return mocker.patch("subprocess.run")
38
+
39
+
40
+ @pytest.mark.usefixtures("vellum_client")
41
+ def test_image_push__self_hosted_happy_path(mock_docker_from_env, mock_subprocess_run, monkeypatch):
32
42
  # GIVEN a self hosted vellum api URL env var
33
43
  monkeypatch.setenv("VELLUM_API_URL", "mycompany.api.com")
34
44
  monkeypatch.setenv("VELLUM_API_KEY", "123456abcdef")
@@ -37,7 +47,7 @@ def test_image_push__self_hosted_happy_path(mock_docker_from_env, mock_run, vell
37
47
  mock_docker_client = MagicMock()
38
48
  mock_docker_from_env.return_value = mock_docker_client
39
49
 
40
- mock_run.side_effect = [
50
+ mock_subprocess_run.side_effect = [
41
51
  subprocess.CompletedProcess(
42
52
  args="", returncode=0, stdout=b'{"manifests": [{"platform": {"architecture": "amd64"}}]}'
43
53
  ),
@@ -56,10 +66,8 @@ def test_image_push__self_hosted_happy_path(mock_docker_from_env, mock_run, vell
56
66
  assert "Image successfully pushed" in result.output
57
67
 
58
68
 
59
- @patch("subprocess.run")
60
- @patch("docker.from_env")
61
69
  def test_image_push__self_hosted_happy_path__workspace_option(
62
- mock_docker_from_env, mock_run, mock_httpx_transport, mock_temp_dir
70
+ mock_docker_from_env, mock_subprocess_run, mock_httpx_transport, mock_temp_dir
63
71
  ):
64
72
  # GIVEN a workspace config with a new env for url
65
73
  with open(os.path.join(mock_temp_dir, "vellum.lock.json"), "w") as f:
@@ -90,7 +98,7 @@ def test_image_push__self_hosted_happy_path__workspace_option(
90
98
  mock_docker_client = MagicMock()
91
99
  mock_docker_from_env.return_value = mock_docker_client
92
100
 
93
- mock_run.side_effect = [
101
+ mock_subprocess_run.side_effect = [
94
102
  subprocess.CompletedProcess(
95
103
  args="", returncode=0, stdout=b'{"manifests": [{"platform": {"architecture": "amd64"}}]}'
96
104
  ),
@@ -144,9 +152,8 @@ def test_image_push__self_hosted_happy_path__workspace_option(
144
152
  assert str(request.url) == "https://api.vellum.mycompany.ai/v1/container-images/push"
145
153
 
146
154
 
147
- @patch("subprocess.run")
148
- @patch("docker.from_env")
149
- def test_image_push__self_hosted_blocks_repo(mock_docker_from_env, mock_run, vellum_client, monkeypatch):
155
+ @pytest.mark.usefixtures("vellum_client", "mock_subprocess_run")
156
+ def test_image_push__self_hosted_blocks_repo(mock_docker_from_env, monkeypatch):
150
157
  # GIVEN a self hosted vellum api URL env var
151
158
  monkeypatch.setenv("VELLUM_API_URL", "mycompany.api.com")
152
159
 
@@ -163,3 +170,87 @@ def test_image_push__self_hosted_blocks_repo(mock_docker_from_env, mock_run, vel
163
170
 
164
171
  # AND gives the error message for self hosted installs not including the repo
165
172
  assert "For adding images to your self hosted install you must include" in result.output
173
+
174
+
175
+ def test_image_push_with_source_success(
176
+ mock_docker_from_env, mock_subprocess_run, vellum_client, monkeypatch, mock_temp_dir
177
+ ):
178
+ monkeypatch.setenv("VELLUM_API_URL", "https://api.vellum.ai")
179
+ monkeypatch.setenv("VELLUM_API_KEY", "123456abcdef")
180
+
181
+ dockerfile_path = os.path.join(mock_temp_dir, "Dockerfile")
182
+ with open(dockerfile_path, "w") as f:
183
+ f.write("FROM alpine:latest\n")
184
+
185
+ mock_docker_client = MagicMock()
186
+ mock_docker_from_env.return_value = mock_docker_client
187
+ mock_docker_client.images.push.return_value = [b'{"status": "Pushed"}']
188
+
189
+ mock_subprocess_run.side_effect = [
190
+ subprocess.CompletedProcess(args="", returncode=0, stdout=b"Build successful"),
191
+ subprocess.CompletedProcess(
192
+ args="", returncode=0, stdout=b'{"manifests": [{"platform": {"architecture": "amd64"}}]}'
193
+ ),
194
+ subprocess.CompletedProcess(args="", returncode=0, stdout=b"sha256:hellosha"),
195
+ ]
196
+
197
+ vellum_client.container_images.docker_service_token.return_value = DockerServiceToken(
198
+ access_token="345678mnopqr", organization_id="test-org", repository="myrepo.net"
199
+ )
200
+
201
+ runner = CliRunner()
202
+ result = runner.invoke(cli_main, ["image", "push", "myimage:latest", "--source", dockerfile_path])
203
+
204
+ assert result.exit_code == 0, result.output
205
+
206
+ build_call = mock_subprocess_run.call_args_list[0]
207
+ assert build_call[0][0] == [
208
+ "docker",
209
+ "buildx",
210
+ "build",
211
+ "-f",
212
+ "Dockerfile",
213
+ "--platform=linux/amd64",
214
+ "-t",
215
+ "myimage:latest",
216
+ ".",
217
+ ]
218
+ assert build_call[1]["cwd"] == mock_temp_dir
219
+
220
+ assert "Docker build completed successfully" in result.output
221
+ assert "Image successfully pushed" in result.output
222
+
223
+
224
+ @pytest.mark.usefixtures("mock_docker_from_env", "mock_subprocess_run", "vellum_client")
225
+ def test_image_push_with_source_dockerfile_not_exists(monkeypatch, mock_temp_dir):
226
+ monkeypatch.setenv("VELLUM_API_URL", "https://api.vellum.ai")
227
+ monkeypatch.setenv("VELLUM_API_KEY", "123456abcdef")
228
+
229
+ nonexistent_dockerfile = os.path.join(mock_temp_dir, "nonexistent_dockerfile")
230
+
231
+ runner = CliRunner()
232
+ result = runner.invoke(cli_main, ["image", "push", "myimage:latest", "--source", nonexistent_dockerfile])
233
+
234
+ assert result.exit_code == 1
235
+ assert "Dockerfile does not exist" in result.output
236
+
237
+
238
+ @pytest.mark.usefixtures("mock_docker_from_env", "vellum_client")
239
+ def test_image_push_with_source_build_fails(mock_subprocess_run, monkeypatch, mock_temp_dir):
240
+ monkeypatch.setenv("VELLUM_API_URL", "https://api.vellum.ai")
241
+ monkeypatch.setenv("VELLUM_API_KEY", "123456abcdef")
242
+
243
+ dockerfile_path = os.path.join(mock_temp_dir, "Dockerfile")
244
+ with open(dockerfile_path, "w") as f:
245
+ f.write("FROM alpine:latest\n")
246
+
247
+ mock_subprocess_run.side_effect = [
248
+ subprocess.CompletedProcess(args="", returncode=1, stderr=b"Build failed: missing dependency"),
249
+ ]
250
+
251
+ runner = CliRunner()
252
+ result = runner.invoke(cli_main, ["image", "push", "myimage:latest", "--source", dockerfile_path])
253
+
254
+ assert result.exit_code == 1
255
+ assert "Docker build failed" in result.output
256
+ assert "Build failed: missing dependency" in result.output
@@ -310,7 +310,7 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
310
310
 
311
311
  return self._get_node_display_uuid("target_handle_id")
312
312
 
313
- def get_target_handle_id_by_source_node_id(self, source_node_id: UUID) -> UUID:
313
+ def get_target_handle_id_by_source_node_id(self, _source_node_id: UUID) -> UUID:
314
314
  """
315
315
  In the vast majority of cases, nodes will only have a single target handle and can be retrieved independently
316
316
  of the source node. However, in rare cases (such as legacy Merge nodes), this method can be overridden to
@@ -8,11 +8,11 @@ _T = TypeVar("_T")
8
8
 
9
9
 
10
10
  @overload
11
- def raise_if_descriptor(node_attr: BaseDescriptor[_T]) -> _T: ...
11
+ def raise_if_descriptor(_node_attr: BaseDescriptor[_T]) -> _T: ...
12
12
 
13
13
 
14
14
  @overload
15
- def raise_if_descriptor(node_attr: _T) -> _T: ...
15
+ def raise_if_descriptor(_node_attr: _T) -> _T: ...
16
16
 
17
17
 
18
18
  def raise_if_descriptor(node_attr: Union[NodeReference[_T], _T]) -> Optional[_T]:
@@ -1,5 +1,5 @@
1
1
  from uuid import UUID
2
- from typing import Any, ClassVar, Dict, Generic, Optional, TypeVar, cast
2
+ from typing import ClassVar, Dict, Generic, Optional, TypeVar, cast
3
3
 
4
4
  from vellum.workflows.nodes.displayable import APINode
5
5
  from vellum.workflows.references.output import OutputReference
@@ -32,7 +32,7 @@ class BaseAPINodeDisplay(BaseNodeDisplay[_APINodeType], Generic[_APINodeType]):
32
32
  }
33
33
 
34
34
  def serialize(
35
- self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs: Any
35
+ self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **_kwargs
36
36
  ) -> JsonObject:
37
37
  node = self._node
38
38
  node_id = self.node_id
@@ -24,7 +24,7 @@ class BaseCodeExecutionNodeDisplay(BaseNodeDisplay[_CodeExecutionNodeType], Gene
24
24
  }
25
25
 
26
26
  def serialize(
27
- self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
27
+ self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **_kwargs
28
28
  ) -> JsonObject:
29
29
  node = self._node
30
30
  node_id = self.node_id
@@ -45,7 +45,7 @@ class BaseConditionalNodeDisplay(BaseNodeDisplay[_ConditionalNodeType], Generic[
45
45
  rule_ids: ClassVar[List[RuleIdMap]]
46
46
  condition_ids: ClassVar[list[ConditionId]]
47
47
 
48
- def serialize(self, display_context: WorkflowDisplayContext, **kwargs: Any) -> JsonObject:
48
+ def serialize(self, display_context: WorkflowDisplayContext, **_kwargs) -> JsonObject:
49
49
  node = self._node
50
50
  node_id = self.node_id
51
51
 
@@ -20,7 +20,7 @@ class BaseErrorNodeDisplay(BaseNodeDisplay[_ErrorNodeType], Generic[_ErrorNodeTy
20
20
 
21
21
  __serializable_inputs__ = {ErrorNode.error}
22
22
 
23
- def serialize(self, display_context: WorkflowDisplayContext, **kwargs) -> JsonObject:
23
+ def serialize(self, display_context: WorkflowDisplayContext, **_kwargs) -> JsonObject:
24
24
  node_id = self.node_id
25
25
  error_source_input_id = self.node_input_ids_by_name.get(
26
26
  ErrorNode.error.name,
@@ -1,5 +1,5 @@
1
1
  from uuid import UUID
2
- from typing import Any, ClassVar, Generic, Optional, TypeVar
2
+ from typing import ClassVar, Generic, Optional, TypeVar
3
3
 
4
4
  from vellum.workflows.nodes.displayable.final_output_node import FinalOutputNode
5
5
  from vellum.workflows.types.core import JsonObject
@@ -19,7 +19,7 @@ NODE_INPUT_KEY = "node_input"
19
19
  class BaseFinalOutputNodeDisplay(BaseNodeDisplay[_FinalOutputNodeType], Generic[_FinalOutputNodeType]):
20
20
  output_name: ClassVar[Optional[str]] = None
21
21
 
22
- def serialize(self, display_context: WorkflowDisplayContext, **kwargs: Any) -> JsonObject:
22
+ def serialize(self, display_context: WorkflowDisplayContext, **_kwargs) -> JsonObject:
23
23
  node = self._node
24
24
  node_id = self.node_id
25
25
 
@@ -15,7 +15,7 @@ class BaseGuardrailNodeDisplay(BaseNodeDisplay[_GuardrailNodeType], Generic[_Gua
15
15
  __serializable_inputs__ = {GuardrailNode.metric_inputs}
16
16
 
17
17
  def serialize(
18
- self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
18
+ self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **_kwargs
19
19
  ) -> JsonObject:
20
20
  node = self._node
21
21
  node_id = self.node_id
@@ -18,10 +18,9 @@ _InlinePromptNodeType = TypeVar("_InlinePromptNodeType", bound=InlinePromptNode)
18
18
 
19
19
 
20
20
  class BaseInlinePromptNodeDisplay(BaseNodeDisplay[_InlinePromptNodeType], Generic[_InlinePromptNodeType]):
21
- __serializable_inputs__ = {InlinePromptNode.prompt_inputs}
21
+ __serializable_inputs__ = {InlinePromptNode.prompt_inputs, InlinePromptNode.functions}
22
22
  __unserializable_attributes__ = {
23
23
  InlinePromptNode.blocks,
24
- InlinePromptNode.functions,
25
24
  InlinePromptNode.parameters,
26
25
  InlinePromptNode.settings,
27
26
  InlinePromptNode.expand_meta,
@@ -29,7 +28,7 @@ class BaseInlinePromptNodeDisplay(BaseNodeDisplay[_InlinePromptNodeType], Generi
29
28
  }
30
29
 
31
30
  def serialize(
32
- self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
31
+ self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **_kwargs
33
32
  ) -> JsonObject:
34
33
  node = self._node
35
34
  node_id = self.node_id
@@ -48,9 +47,10 @@ class BaseInlinePromptNodeDisplay(BaseNodeDisplay[_InlinePromptNodeType], Generi
48
47
  blocks: list = [
49
48
  self._generate_prompt_block(block, input_variable_id_by_name, [i]) for i, block in enumerate(node_blocks)
50
49
  ]
50
+
51
51
  functions = (
52
52
  [self._generate_function_tools(function, i) for i, function in enumerate(function_definitions)]
53
- if function_definitions
53
+ if isinstance(function_definitions, list)
54
54
  else []
55
55
  )
56
56
  blocks.extend(functions)