vellum-ai 0.14.44__py3-none-any.whl → 0.14.46__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 (56) hide show
  1. vellum/client/core/client_wrapper.py +1 -1
  2. vellum/client/core/pydantic_utilities.py +7 -1
  3. vellum/workflows/nodes/bases/base.py +1 -0
  4. vellum/workflows/nodes/bases/tests/test_base_node.py +20 -0
  5. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +8 -14
  6. vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py +62 -0
  7. vellum/workflows/nodes/displayable/code_execution_node/utils.py +3 -54
  8. vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +5 -6
  9. vellum/workflows/nodes/utils.py +4 -0
  10. vellum/workflows/ports/port.py +13 -3
  11. vellum/workflows/types/code_execution_node_wrappers.py +64 -0
  12. vellum/workflows/types/tests/test_utils.py +3 -3
  13. vellum/workflows/types/utils.py +31 -10
  14. vellum/workflows/vellum_client.py +19 -7
  15. {vellum_ai-0.14.44.dist-info → vellum_ai-0.14.46.dist-info}/METADATA +1 -1
  16. {vellum_ai-0.14.44.dist-info → vellum_ai-0.14.46.dist-info}/RECORD +56 -53
  17. vellum_cli/config.py +7 -2
  18. vellum_cli/push.py +5 -1
  19. vellum_cli/tests/test_push.py +192 -8
  20. vellum_ee/workflows/display/nodes/base_node_display.py +4 -173
  21. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +1 -1
  22. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +2 -1
  23. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +5 -6
  24. vellum_ee/workflows/display/nodes/vellum/retry_node.py +3 -3
  25. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +5 -6
  26. vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py +106 -0
  27. vellum_ee/workflows/display/nodes/vellum/tests/test_subworkflow_deployment_node.py +109 -0
  28. vellum_ee/workflows/display/nodes/vellum/try_node.py +3 -3
  29. vellum_ee/workflows/display/tests/test_base_workflow_display.py +1 -0
  30. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +73 -111
  31. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +0 -1
  32. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +0 -3
  33. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +0 -4
  34. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +0 -1
  35. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +0 -1
  36. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +0 -1
  37. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +0 -1
  38. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +18 -2
  39. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +10 -1
  40. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +0 -1
  41. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +2 -3
  42. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +0 -1
  43. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +2 -3
  44. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +0 -1
  45. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +1 -2
  46. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +0 -1
  47. vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +5 -55
  48. vellum_ee/workflows/display/types.py +3 -0
  49. vellum_ee/workflows/display/utils/expressions.py +222 -2
  50. vellum_ee/workflows/display/utils/vellum.py +1 -79
  51. vellum_ee/workflows/display/workflows/base_workflow_display.py +59 -37
  52. vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py +3 -0
  53. vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +98 -0
  54. {vellum_ai-0.14.44.dist-info → vellum_ai-0.14.46.dist-info}/LICENSE +0 -0
  55. {vellum_ai-0.14.44.dist-info → vellum_ai-0.14.46.dist-info}/WHEEL +0 -0
  56. {vellum_ai-0.14.44.dist-info → vellum_ai-0.14.46.dist-info}/entry_points.txt +0 -0
@@ -2,13 +2,13 @@ vellum_cli/CONTRIBUTING.md,sha256=FtDC7BGxSeMnwCXAUssFsAIElXtmJE-O5Z7BpolcgvI,29
2
2
  vellum_cli/README.md,sha256=2NudRoLzWxNKqnuVy1JuQ7DerIaxWGYkrH8kMd-asIE,90
3
3
  vellum_cli/__init__.py,sha256=7aO9XFnaEVRiVshn86cFudebFUccT-gV8xIARJWqKYo,12257
4
4
  vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
5
- vellum_cli/config.py,sha256=aKnhvM5B8QdPA4cQC5Sqg7ImP-vNcVdSkZmk_OBpQTw,9309
5
+ vellum_cli/config.py,sha256=v5BmZ-t_v4Jmqd7KVuQMZF2pRI-rbMspSkVYXIRoTmI,9448
6
6
  vellum_cli/image_push.py,sha256=8DDvRDJEZ-FukUCqGW1827bg1ybF4xBbx9WyqWYQE-g,6816
7
7
  vellum_cli/init.py,sha256=WpnMXPItPmh0f0bBGIer3p-e5gu8DUGwSArT_FuoMEw,5093
8
8
  vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
9
9
  vellum_cli/ping.py,sha256=p_BCCRjgPhng6JktuECtkDQLbhopt6JpmrtGoLnLJT8,1161
10
10
  vellum_cli/pull.py,sha256=2hSJGeqooevMb--mcvRLQ1GYT-9290cI7VdSRifzmTg,12561
11
- vellum_cli/push.py,sha256=0bHAhp6B67JUFuiL9sSekrLOw-x2Dp6VsrzhFbOy7e4,9508
11
+ vellum_cli/push.py,sha256=nWHLDi_w0LXycNkVv00CiNwY469BcTNBn7NphWpCA7E,9711
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
@@ -17,7 +17,7 @@ vellum_cli/tests/test_init.py,sha256=8UOc_ThfouR4ja5cCl_URuLk7ohr9JXfCnG4yka1OUQ
17
17
  vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k,272
18
18
  vellum_cli/tests/test_ping.py,sha256=3ucVRThEmTadlV9LrJdCCrr1Ofj3rOjG6ue0BNR2UC0,2523
19
19
  vellum_cli/tests/test_pull.py,sha256=iTxVbJGuehvgNt8Vp9W3Y5Bvaocfws8bl8LMGEbc_qQ,47508
20
- vellum_cli/tests/test_push.py,sha256=j22l7p_cy1KXdcvQKhWiM2bpu-3WL1q5IJquRm84mxE,25580
20
+ vellum_cli/tests/test_push.py,sha256=uNMmPG9Z0uRN6xYYMzBGZaCXJZkAHWcbcSJRJ4eQk70,31182
21
21
  vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
23
  vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -26,7 +26,7 @@ vellum_ee/workflows/display/base.py,sha256=EqlQFD56kpqMY02ZBJBQajzJKh33Dwi60Wo77
26
26
  vellum_ee/workflows/display/editor/__init__.py,sha256=MSAgY91xCEg2neH5d8jXx5wRdR962ftZVa6vO9BGq9k,167
27
27
  vellum_ee/workflows/display/editor/types.py,sha256=x-tOOCJ6CF4HmiKDfCmcc3bOVfc1EBlP5o6u5WEfLoY,567
28
28
  vellum_ee/workflows/display/nodes/__init__.py,sha256=jI1aPBQf8DkmrYoZ4O-wR1duqZByOf5mDFmo_wFJPE4,307
29
- vellum_ee/workflows/display/nodes/base_node_display.py,sha256=emQg21S5wmY155LWePaBswIDgsDuZctGKEaNmEMNr6M,22625
29
+ vellum_ee/workflows/display/nodes/base_node_display.py,sha256=0wuzviC45kEd26LaXinIsqSpH6O4q2xLuc2esd0VCGc,14633
30
30
  vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=5QuXpMth0HmZuC-e8LRKOLbrVXSL-ylMR5IWae8eNmc,2113
31
31
  vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
32
  vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=Z4Mf7xLCNiblSbpKI0BrV5modQr-ZcFzhfir_OSyTTs,2997
@@ -36,70 +36,72 @@ vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLP
36
36
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=QCaW_Q9CjLnkzv7dbUKyrZGoumov-C0in7lh7uDar7s,8579
37
37
  vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=rJbHZBg9A_v2bjk-R6MfWzShcrS2gcKIOyYGoqwTx8s,6353
38
38
  vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=fHE2_3ZNMRVV66zYGY3ukk8rs-hK8i_c6mO74Ab8Z3w,4451
39
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=6d5oqwzdMpgNFILfxaX_mCRyxXDjvvoKBKPUc2Cxp0o,11145
39
+ vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=MrvyiYD0qgQf3-ZYFcurQtin3FagAHGRoT7zYGiIao0,11150
40
40
  vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=eJ_nw0u63vJ7fxxMCrfNyKx8JTOcRoujrJsvsxo_FJ4,2167
41
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=7odQcHi2acJ9TTUxBDR6VWn4jGqITshonk-LQxcnIpk,3029
41
+ vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=jUDI2FwVaw0Or4zJL58J_g0S--i59Hzik60s_Es_M-8,3098
42
42
  vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=nVOixouitWwatZLbSBddeMfYQ2doZ_tCdb1ashq3pqA,2269
43
43
  vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=-nPccukjzM2kJiIwFE3orVahB14zqGGvITQsTBWS3TE,8884
44
44
  vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=yZO9UNLj8sAtw64bLSN2wtdPMGoQ2oAVbadrxfL3wsE,5551
45
45
  vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=T3a6Lv51SC1506bTVd8T9y_KVmP2VP4IQarAO87xdmM,3755
46
46
  vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=yBWeN4T_lOsDVnNOKWRiT7JYKu0IR5Fx2z99iq6QKSA,3273
47
47
  vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=3E0UqmgVYdtbj4nyq8gKju8EpMsRHMCQ0KLrJhug3XU,1084
48
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=xAt926FCYPI12hUeS7S1tx7ezDSriQcGbSZHBkv_omM,3298
49
- vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=TjBpRERmkmm1myZTWKAxxD1F0dWSc7U1sih8g9sqq2Q,3300
48
+ vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=NCh9T7M4V1w-5i_bfYdI6L4jj1C_JGBuVBb0nXXsN38,3239
49
+ vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=X3xnlAU5JisL0jRvaG_V9RvTF7ZlGufTO8tXLLVhGIg,3280
50
50
  vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=7vU_4IxYe7iwn4p7J909cxF1TOR-tUlFXA7k3ySQPwM,9320
51
- vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=5Ok5X4R5E8SVW58O5cAVJo92VqGDBiFJpHQ3txqNi1U,2653
51
+ vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=TIMpOL0dm__xvnDHotCEjBQWCp2hgRDJUnRuPMBrZcE,2592
52
52
  vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=Nk5pxly4d-kactJ3Z4SLErZCm8hicyj2rCArZw8pW9k,3283
53
53
  vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=OoNO-BstB96F-VMK6FZ9aXyi-0wyNePo6HiaJC6SYRw,3880
55
55
  vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=HoIph_rNlHFNBMqBq1a_eyFwPzBIazdH1yQeRhgba14,1510
56
56
  vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py,sha256=uiMB0cOxKZzos7YKnj4ef4DFa2bOvZJWIv-hfbUV6Go,1218
57
+ vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py,sha256=kZQn7W4CWFLc1FiayvvYCPQIcm-3bPNkcjxWMQowAIE,3692
57
58
  vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=6Q6rfEwjjSEgSX24aFZjS3K6l8G2YRYBUNC2o5BE8Tk,6101
58
59
  vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py,sha256=h93ysolmbo2viisyhRnXKHPxiDK0I_dSAbYoHFYIoO4,1953
60
+ vellum_ee/workflows/display/nodes/vellum/tests/test_subworkflow_deployment_node.py,sha256=mQW6eIduImP9WKnDUsTskhJEPC4fqzF91GFS_iXKZPQ,3780
59
61
  vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py,sha256=PK7v0AWCgH9gWRfAwGPUGCRLbIH3NSyoAYa9W15ggAo,3321
60
62
  vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=Khjsb53PKpZuyhKoRMgKAL45eGp5hZqXvHmVeQWRw4w,2289
61
63
  vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=3LS1O4DGPWit05oj_ubeW8AlHGnoBxdUMferGQuAiZs,4851
62
- vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=o6wL17XVm6Wj4sHoJkBW54Y5fY9ZwhD7ry0xkNWRu5c,4106
64
+ vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=z9Omo676RRc7mQjLoL7hjiHhUj0OWVLhrrb97YTN4QA,4086
63
65
  vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=oICunzyaXPs0tYnW5zH1r93Bx35MSH7mcD-n0DEWRok,4978
64
66
  vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- vellum_ee/workflows/display/tests/test_base_workflow_display.py,sha256=1R9BAjbfRX7tV3hEwDebzUqzzXoFLfZ-f2WI8Bj4oLI,9286
67
+ vellum_ee/workflows/display/tests/test_base_workflow_display.py,sha256=iZN-uTaI77i_U7YwncVj1X0EsIzDDvgzs0KPjEqbEyM,9319
66
68
  vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
69
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
70
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=XOQDDRiG46etxTC7-_RUEutoNumXc02fo7oho4GYM0c,1900
69
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=ixu_VHgpigvKXj2uQu2_EUn4bkpRy0390LGoRKBJ6iU,15262
71
+ vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=tsjGM-jOurPSkDIbrDFdjNLmkI1fPNPAw3J9-l9knCw,12848
70
72
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=m9KpVN55_bHiooZOJLm7doRewhcTK53weVYRiglCJX0,19578
71
73
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=s6_mnk0pkztU59wYpSfOFpMhAJaRjmyfxM6WJGtnD4Y,6456
72
74
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=PkSgghJDz0fpDB72HHPjLjo8LkZk-HpUkCQzRLX-iVw,40611
73
75
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=dsJr8I9AdPwMOGszirfNDzZP2Ychd94aAKuPXAzknMk,4632
74
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=r_YrQLgG29D4CtBNCBEKZLFp7x-pKrqJu6EyuvDsUl4,15903
75
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=XzhbQ0J5yPQPfLNyH7lAC_oWTjR4ITKYqmLNzNJ99P0,29903
76
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=oDlFnp8oBuU1sd40IG5opLJM5qcuwTE3yjb2rUFQyo4,53920
77
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py,sha256=3GloR_5CwBYIpIkRNqJ6-AvwXe9acwyjU-xz1yN-Xws,8693
78
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=8WnzAu4HceKcIcp-Tdnrkdwq9zC6an5-92khTxNm1uk,5978
79
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=jSUfw4iSfyu9-Yift1Lb_oBDC1WnD7FwSPnNzPyQlOI,5632
80
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=9GaiCJT__hlO01ORjJ8y6zZa_cNsTR0-5SEOkN-jWzk,7462
76
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=xo5RRyv4TTTauy2TWtMXzYFSGa-nvxTa352-xu-pAIw,15815
77
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=yX-ICQs8Wf7ksSH71hTbApcE_c-7a_-6AAqRIVkf_Ys,29639
78
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=88IQkkTlbWHe1FyV7iwBhWi4iMB154VQm_oXgU0oGsE,53568
79
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py,sha256=I0f24qbterFb20X4N2O6IvdbgR71juE2t8d6ZdkwgnE,8605
80
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=2k9GZ_gNa9795v2dTVN6Gvp_wXoa4gTRLnWIRRfxhOY,5890
81
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=kLOnUNn-r1w1JXNQcVKe-Vp-fKhSfuDBuDqrjGkFZ3U,5544
82
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=v07cILUzS5iFYDrSOAXK93yz50-FtxLaMYMwoaPOv20,7374
81
83
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=8NiFJLd9vVK8MheYs7TJ3PqYDmtWVXrUNz40E33Y4gA,659
82
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=MCzk2k0jRmbpdKa5ZBid6TYNWbiph9haoY7O_m4rMdA,20586
83
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=_Buk1kTvaOnVWYoC3V7ScuQeLq1_WRAV4wUQzkmbsMQ,16145
84
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=p1nkn67kqrp92-27x4BtWAqA-Xpxqo0UU1fI3y1kdR8,8430
85
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=mFhF0FFwf3j5wQn25O4EGNl8Akcc2YkkKZstw8nii8c,8690
86
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=lFqT2y8szukLNqeZBbR2XxmF2zmzYNlTSdfebQaUj6Q,13024
87
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=nU87rbidKEe9NVlTVTxMBvcxtrzKIbmunPzqZH_uf6w,11299
88
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=UmnNqIKgwKlJjniBnE9nZ_0Z4AsYIRx6BeOviI6Ucc4,7799
89
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=Svtg3nRSbLfbw4VhI_G44zjhoLWLIsDQr9CB5OP9Jws,3956
90
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=NIq7pa8EBR0ZmhTc3k_akwGuOKih8mwurkyIbc0dNTg,2857
91
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=-okQGpxcPGd2TbY55aul6cXoTcqZklee-MrM1qztv1E,7530
92
- vellum_ee/workflows/display/types.py,sha256=NKtEGFhvgz1i_oAayXFIS06QZautixnS3id5DckCIjg,2637
84
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=u2nquKoO3o2xIkU_uFPOb_s5YoLmULiq09vb6Ee0Cqw,21415
85
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=3gZuNM8sT6ovVaeoAvd2JoyKwuxokvowlhH8kwDUoZ8,16559
86
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=IIJt7YZBzkhNtbmaMwCX4ENs58QtSIIoBHlMR6OwGU8,8342
87
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=mLr_1Ow5NZYSLzzEZPup14LckuT8ivOvq9Lz85pGj0c,8602
88
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=K0mECBUyTNX4I468goeaRf93N7Qfizoc1ctCH5_nNys,12936
89
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=KkYZc_bZuq1lmDcvUz3QxIqJLpQPCZioD1FHUNsMJY8,11211
90
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=aZaqRDrkO3ytcmdM2eKJqHSt60MF070NMj6M2vgzOKc,7711
91
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=r748dpS13HtwY7t_KQFExFssxRy0xI2d-wxmhiUHRe0,3850
92
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=EL5kfakuoEcwD85dGjhMta-J-PpCHRSDoc80SdbBrQk,2769
93
+ vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=RmFUDx8dYdfsOE2CGLvdXqNNRtLLpVzXDN8dqZyMcZ8,5822
94
+ vellum_ee/workflows/display/types.py,sha256=i4T7ElU5b5h-nA1i3scmEhO1BqmNDc4eJDHavATD88w,2821
93
95
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
96
  vellum_ee/workflows/display/utils/exceptions.py,sha256=LSwwxCYNxFkf5XMUcFkaZKpQ13OSrI7y_bpEUwbKVk0,169
95
- vellum_ee/workflows/display/utils/expressions.py,sha256=2u2o8Fqr-2C45FII01ej5rt6i8n2EEGiliXugK7buVw,1210
97
+ vellum_ee/workflows/display/utils/expressions.py,sha256=Q0Vf-88wtbOIM1ZRkAaF5tMZc2V-i8LeZ32wFmHFmZg,10642
96
98
  vellum_ee/workflows/display/utils/registry.py,sha256=fWIm5Jj-10gNFjgn34iBu4RWv3Vd15ijtSN0V97bpW8,1513
97
- vellum_ee/workflows/display/utils/vellum.py,sha256=VSWB3RA3RWQwQ7nMsU9gLfgpX3_BK9ARBIT36i52r9k,9478
99
+ vellum_ee/workflows/display/utils/vellum.py,sha256=HDe1vtIaU35OEg4oC1KC6WNwhw5Laf_mNURorzbeutQ,5418
98
100
  vellum_ee/workflows/display/vellum.py,sha256=o7mq_vk2Yapu9DDKRz5l76h8EmCAypWGQYe6pryrbB8,3576
99
101
  vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
100
- vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=qjdATqHawQ1IWkyQ3aRlQQAFixNsS-X4ewpmKSnSwvI,32001
101
- vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=s6yMO0RxoM8scmfT8TJ-9cwl-WHFe7JSyEJA0alCeEs,1913
102
- vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=uWBMmd_2BlDpymGoo5FB2LBeFQKHmPWJAPvSPZHk94o,11869
102
+ vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=NuWlnGNe3Htcfh-l_8e37uitdUsy6WZNB7W7dYcCoUg,33355
103
+ vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=gxz76AeCqgAZ9D2lZeTiZzxY9eMgn3qOSfVgiqYcOh8,2028
104
+ vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=U0LsUqjJ-5qrkqgFsvdWzqWX7OHEMzsDCWrXR1xyzp0,15599
103
105
  vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=aaKdmWrgEe5YyV4zuDY_4E3y-l59rIHQnNGiPj2OWxQ,359
104
106
  vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
107
  vellum_ee/workflows/server/virtual_file_loader.py,sha256=7JphJcSO3H85qiC2DpFfBWjC3JjrbRmoynBC6KKHVsA,2710
@@ -130,12 +132,12 @@ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
130
132
  vellum/client/__init__.py,sha256=Z-JHK2jGxhtTtmkLeOaUGGJWIUNYGNVBLvUewC6lp6w,118148
131
133
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
132
134
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
133
- vellum/client/core/client_wrapper.py,sha256=cnTC1fgCzqUC_BZ21rLn2Wi6ACUHsyWmxx9o2etyN28,1869
135
+ vellum/client/core/client_wrapper.py,sha256=Bo-z8mq3B7ugaNmdHcHDd0_iCRPsJMoD6YQfXPjlnC8,1869
134
136
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
135
137
  vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
136
138
  vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
137
139
  vellum/client/core/jsonable_encoder.py,sha256=qaF1gtgH-kQZb4kJskETwcCsOPUof-NnYVdszHkb-dM,3656
138
- vellum/client/core/pydantic_utilities.py,sha256=6ev3gtER-hjlq7PcPL9XT_YSCdgyCE8ZKHJ9Uc-gHIg,12071
140
+ vellum/client/core/pydantic_utilities.py,sha256=DE9FvWR2EYihzbtOvFJudEExH7XKH_fjSHGm-b5UhJc,12268
139
141
  vellum/client/core/query_encoder.py,sha256=ekulqNd0j8TgD7ox-Qbz7liqX8-KP9blvT9DsRCenYM,2144
140
142
  vellum/client/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd864mS6vQZw,342
141
143
  vellum/client/core/request_options.py,sha256=5cCGt5AEGgtP5xifDl4oVQUmSjlIA8FmRItAlJawM18,1417
@@ -1536,11 +1538,11 @@ vellum/workflows/inputs/tests/test_inputs.py,sha256=lioA8917mFLYq7Ml69UNkqUjcWbb
1536
1538
  vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
1537
1539
  vellum/workflows/nodes/__init__.py,sha256=aVdQVv7Y3Ro3JlqXGpxwaU2zrI06plDHD2aumH5WUIs,1157
1538
1540
  vellum/workflows/nodes/bases/__init__.py,sha256=cniHuz_RXdJ4TQgD8CBzoiKDiPxg62ErdVpCbWICX64,58
1539
- vellum/workflows/nodes/bases/base.py,sha256=tX3xOQIPfnspQPNaOMwGoZ93gM5d5dWeK1YUukzkINI,15158
1541
+ vellum/workflows/nodes/bases/base.py,sha256=c7--RMKBs215xOshoL_tdtvP8i4k1eT9BmRVhQXF5m4,15186
1540
1542
  vellum/workflows/nodes/bases/base_adornment_node.py,sha256=Ao2opOW4kgNoYXFF9Pk7IMpVZdy6luwrjcqEwU5Q9V0,3404
1541
1543
  vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1542
1544
  vellum/workflows/nodes/bases/tests/test_base_adornment_node.py,sha256=fXZI9KqpS4XMBrBnIEkK3foHaBVvyHwYcQWWDKay7ic,1148
1543
- vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=6J85q-vtfG-NHzCndMKLk5_sEEDiI52sTGaxefcUCOU,7892
1545
+ vellum/workflows/nodes/bases/tests/test_base_node.py,sha256=hWt90sNvQpUzcttRzQxBBUQXA0A5Mj-Is7awRKYtlNU,8503
1544
1546
  vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT9JL18-mRR4,455
1545
1547
  vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
1546
1548
  vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
@@ -1578,7 +1580,7 @@ vellum/workflows/nodes/displayable/bases/inline_prompt_node/constants.py,sha256=
1578
1580
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py,sha256=wqN1EjyjTL6McUmlkHWu3GXVzcNaqDjavvmKUHDaVqg,10623
1579
1581
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1580
1582
  vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py,sha256=YPOFoaEBENfOzE_qWo3WdQ_E1dQk78aLCWk8gOMvTjg,16042
1581
- vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=lwH7mfiHcRKFxU1Y9IPQVgb3o5trssuhwlKnA30rTWk,9777
1583
+ vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py,sha256=T99UWACTD9ytVDVHa6W2go00V7HNwDxOyBFyMM2GnhQ,9567
1582
1584
  vellum/workflows/nodes/displayable/bases/search_node.py,sha256=3UtbqY3QO4kzfJHbmUNZGnEEfJmaoiF892u8H6TGjp8,5381
1583
1585
  vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1584
1586
  vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=eqdqbKNRWVMDPevgwLg1i6YK0g4L4bCy-7xCBN5yYZI,3156
@@ -1589,8 +1591,8 @@ vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=Ko_Dy17Ajf
1589
1591
  vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1590
1592
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1591
1593
  vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
1592
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=AzgTK2YSvVj7zr6gWZfz0-YGf1cVQ9DiSx9fe5BR4uE,24690
1593
- vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=G-sc7yOL5g6rLk99X8HAbXNcLxRaqpju9IXq1iUwnQI,4470
1594
+ vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=Km_BH9W61IJSRj5CdiSmEOINOIouG_a5Gey0fCDmShQ,26620
1595
+ vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=oCI8HS_Y-hsNhvGIC8HgbIzKIZeWOkXMLaknDRf-qus,2928
1594
1596
  vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
1595
1597
  vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=Qjfl33gZ3JEgxBA1EgzSUebboGvsARthIxxcQyvx5Gg,1152
1596
1598
  vellum/workflows/nodes/displayable/conftest.py,sha256=K2kLM2JGAfcrmmd92u8DXInUO5klFdggPWblg5RVcx4,5729
@@ -1626,7 +1628,7 @@ vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.p
1626
1628
  vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1627
1629
  vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py,sha256=LaxohBcKfSW2PSiBBlx67FdW_q4YC2BM2ouH-vuGPAA,4700
1628
1630
  vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
1629
- vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=sGlAzTgKz8OsqeT3e7FbQyPpvs_2Fk9_jfD6BRyc6M0,2628
1631
+ vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=dc3EEn1sOICpr3GdS8eyeFtExaGwWWcw9eHSdkRhQJU,2584
1630
1632
  vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrraiBHDLKTlnBa51ZiE,284
1631
1633
  vellum/workflows/nodes/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1632
1634
  vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
@@ -1638,12 +1640,12 @@ vellum/workflows/nodes/mocks.py,sha256=a1FjWEIocseMfjzM-i8DNozpUsaW0IONRpZmXBoWl
1638
1640
  vellum/workflows/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1639
1641
  vellum/workflows/nodes/tests/test_mocks.py,sha256=mfPvrs75PKcsNsbJLQAN6PDFoVqs9TmQxpdyFKDdO60,7837
1640
1642
  vellum/workflows/nodes/tests/test_utils.py,sha256=qNB6ApIsnFtE_9HDaEah9KD-zX8e10FhDixewS1uRcc,5199
1641
- vellum/workflows/nodes/utils.py,sha256=ziHJc5uU4foxIvacl0Vg7fEJJ0jiznqqhyvURVj0FsY,9005
1643
+ vellum/workflows/nodes/utils.py,sha256=j3I_qKlkU9WDplYbeija3-rC_KAKD4dyums1xROWFKQ,9193
1642
1644
  vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
1643
1645
  vellum/workflows/outputs/base.py,sha256=1OGHqBJVk7i8cW8uewFWOhIjuMlRRpzCDrGE30ZwDjw,8763
1644
1646
  vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
1645
1647
  vellum/workflows/ports/node_ports.py,sha256=2Uo9gwNVCuH86J-GXcpc95QSDh5I-XVvhHJCMSWe-S8,2825
1646
- vellum/workflows/ports/port.py,sha256=eI2SOZPZ5rsC3jMsxW6Rbn0NpaYQsrR7AapiIbbiy8Q,3635
1648
+ vellum/workflows/ports/port.py,sha256=j_qiZlpx-a1cK5E7sxXwPcb_9NS-KUM-JoP8mgqg32k,4073
1647
1649
  vellum/workflows/ports/utils.py,sha256=cWJ9xX1KrHBTiU3xe6t7Rs0yaOy9RV18GMtHaAshAsc,3094
1648
1650
  vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
1649
1651
  vellum/workflows/references/constant.py,sha256=6yUT4q1sMj1hkI_tzzQ9AYcmeeDYFUNCqUq_W2DN0S8,540
@@ -1674,13 +1676,14 @@ vellum/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
1674
1676
  vellum/workflows/tests/test_sandbox.py,sha256=JKwaluI-lODQo7Ek9sjDstjL_WTdSqUlVik6ZVTfVOA,1826
1675
1677
  vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83yc5FIM33zuo8,353
1676
1678
  vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
1679
+ vellum/workflows/types/code_execution_node_wrappers.py,sha256=cQ1Se6fe1uqGUs8uVQxkk2OEVikcHbwTM0CyU2AsgqI,2010
1677
1680
  vellum/workflows/types/core.py,sha256=kMQremh_I8egXpiKmtMQbB6e3OczAWiRnnTq5V6xlD0,928
1678
1681
  vellum/workflows/types/definition.py,sha256=z81CL_u0FJol-9yUIqoXNTYAARtU8x__c6s-f4rb5c8,2335
1679
1682
  vellum/workflows/types/generics.py,sha256=tKXz0LwWJGKw1YGudyl9_yFDrRgU6yYV1yJV1Zv-LTw,1430
1680
1683
  vellum/workflows/types/stack.py,sha256=h7NE0vXR7l9DevFBIzIAk1Zh59K-kECQtDTKOUunwMY,1314
1681
1684
  vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1682
- vellum/workflows/types/tests/test_utils.py,sha256=y2bj4O8-ykPRRRocdD98NdnQz6ydSCoMBp6rECPPqE8,2536
1683
- vellum/workflows/types/utils.py,sha256=mSlcgIr8q_qMCtSCdPxcduRntL_5hk4ptFGq3K0EVgw,5801
1685
+ vellum/workflows/types/tests/test_utils.py,sha256=UnZog59tR577mVwqZRqqWn2fScoOU1H6up0EzS8zYhw,2536
1686
+ vellum/workflows/types/utils.py,sha256=axxHbPLsnjhEOnMZrc5YarFd-P2bnsacBDQGNCvY8OY,6367
1684
1687
  vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1685
1688
  vellum/workflows/utils/functions.py,sha256=7A4BImhtY__qQpNrF5uPiwLfkj6PSUxYvF7ITigIkxY,4051
1686
1689
  vellum/workflows/utils/names.py,sha256=QLUqfJ1tmSEeUwBKTTiv_Qk3QGbInC2RSmlXfGXc8Wo,380
@@ -1691,15 +1694,15 @@ vellum/workflows/utils/tests/test_uuids.py,sha256=i77ABQ0M3S-aFLzDXHJq_yr5FPkJEW
1691
1694
  vellum/workflows/utils/tests/test_vellum_variables.py,sha256=maI5e7Od7UlpMwlrOrcdlXqnFhonkXGnWq8G2-YQLi8,1155
1692
1695
  vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
1693
1696
  vellum/workflows/utils/vellum_variables.py,sha256=UiGlUh0a8vel2FbW3w-xbHxSv_jNutkDdqMVtP_b42A,3385
1694
- vellum/workflows/vellum_client.py,sha256=GxOy3dX6A04xiY69vPv1S4YGuQ_TMxwHi6WRMimQBBE,762
1697
+ vellum/workflows/vellum_client.py,sha256=xkfoucodxNK5JR2-lbRqZx3xzDgExWkP6kySrpi_Ubc,1079
1695
1698
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1696
1699
  vellum/workflows/workflows/base.py,sha256=9dGZzoXbVVtw19pVhmawIA1wd1iLQttAKypuVFWb0fU,23793
1697
1700
  vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
1698
1701
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1699
1702
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=8P5YIsNMO78_CR1NNK6wkEdkMB4b3Q_Ni1qxh78OnHo,20481
1700
1703
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
1701
- vellum_ai-0.14.44.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1702
- vellum_ai-0.14.44.dist-info/METADATA,sha256=m4i-IppU7qrX6bueYqy1ma0QUBht58aQCd-FP7Lekxc,5484
1703
- vellum_ai-0.14.44.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1704
- vellum_ai-0.14.44.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1705
- vellum_ai-0.14.44.dist-info/RECORD,,
1704
+ vellum_ai-0.14.46.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1705
+ vellum_ai-0.14.46.dist-info/METADATA,sha256=QVjFBBT5KT2PzAvAibMrRv8VD7GpQoUhjlXaR_H--Fw,5484
1706
+ vellum_ai-0.14.46.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1707
+ vellum_ai-0.14.46.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1708
+ vellum_ai-0.14.46.dist-info/RECORD,,
vellum_cli/config.py CHANGED
@@ -16,10 +16,15 @@ PYPROJECT_TOML_PATH = "pyproject.toml"
16
16
 
17
17
  class WorkspaceConfig(UniversalBaseModel):
18
18
  name: str
19
- api_key: str
19
+ api_key: str = "VELLUM_API_KEY"
20
+ api_url: Optional[str] = None
20
21
 
21
22
  def merge(self, other: "WorkspaceConfig") -> "WorkspaceConfig":
22
- return WorkspaceConfig(name=self.name or other.name, api_key=self.api_key or other.api_key)
23
+ return WorkspaceConfig(
24
+ name=self.name or other.name,
25
+ api_key=self.api_key or other.api_key,
26
+ api_url=self.api_url or other.api_url,
27
+ )
23
28
 
24
29
 
25
30
  DEFAULT_WORKSPACE_CONFIG = WorkspaceConfig(name="default", api_key="VELLUM_API_KEY")
vellum_cli/push.py CHANGED
@@ -97,6 +97,7 @@ def push_command(
97
97
 
98
98
  client = create_vellum_client(
99
99
  api_key=api_key,
100
+ api_url=workspace_config.api_url,
100
101
  )
101
102
  sys.path.insert(0, os.getcwd())
102
103
 
@@ -105,6 +106,7 @@ def push_command(
105
106
  workflow = BaseWorkflow.load_from_module(workflow_config.module)
106
107
  workflow_display = get_workflow_display(
107
108
  workflow_class=workflow,
109
+ client=client,
108
110
  dry_run=dry_run or False,
109
111
  )
110
112
  exec_config = workflow_display.serialize()
@@ -234,9 +236,11 @@ def push_command(
234
236
  """
235
237
  ) # type: ignore[attr-defined]
236
238
  else:
239
+ default_api_url = client._client_wrapper._environment.default
240
+ base_url = default_api_url.split("/v1")[0].replace("//api.", "//app.")
237
241
  logger.info(
238
242
  f"""Successfully pushed {workflow_config.module} to Vellum!
239
- Visit at: https://app.vellum.ai/workflow-sandboxes/{response.workflow_sandbox_id}"""
243
+ Visit at: {base_url}/workflow-sandboxes/{response.workflow_sandbox_id}"""
240
244
  )
241
245
 
242
246
  if not workflow_config.workflow_sandbox_id:
@@ -7,6 +7,7 @@ from unittest import mock
7
7
  from uuid import uuid4
8
8
 
9
9
  from click.testing import CliRunner
10
+ from httpx import Response
10
11
 
11
12
  from vellum.client.core.api_error import ApiError
12
13
  from vellum.client.types.workflow_push_response import WorkflowPushResponse
@@ -29,19 +30,25 @@ def _extract_tar_gz(tar_gz_bytes: bytes) -> dict[str, str]:
29
30
  return files
30
31
 
31
32
 
32
- def _ensure_workflow_py(temp_dir: str, module: str) -> str:
33
- base_dir = os.path.join(temp_dir, *module.split("."))
33
+ def _ensure_file(temp_dir: str, module: str, file_name: str, content: str) -> str:
34
+ file_path = os.path.join(temp_dir, *module.split("."), file_name)
35
+ base_dir = os.path.dirname(file_path)
34
36
  os.makedirs(base_dir, exist_ok=True)
37
+
38
+ with open(file_path, "w") as f:
39
+ f.write(content)
40
+
41
+ return content
42
+
43
+
44
+ def _ensure_workflow_py(temp_dir: str, module: str) -> str:
35
45
  workflow_py_file_content = """\
36
46
  from vellum.workflows import BaseWorkflow
37
47
 
38
48
  class ExampleWorkflow(BaseWorkflow):
39
49
  pass
40
50
  """
41
- with open(os.path.join(temp_dir, *module.split("."), "workflow.py"), "w") as f:
42
- f.write(workflow_py_file_content)
43
-
44
- return workflow_py_file_content
51
+ return _ensure_file(temp_dir, module, "workflow.py", workflow_py_file_content)
45
52
 
46
53
 
47
54
  def test_push__no_config(mock_module):
@@ -133,6 +140,38 @@ def test_push__happy_path(mock_module, vellum_client, base_command):
133
140
  assert extracted_files["workflow.py"] == workflow_py_file_content
134
141
 
135
142
 
143
+ def test_push__verify_default_url_in_raw_httpx_transport(mock_module, mock_httpx_transport):
144
+ # GIVEN a single workflow configured
145
+ module = mock_module.module
146
+ temp_dir = mock_module.temp_dir
147
+ _ensure_workflow_py(temp_dir, module)
148
+
149
+ # AND the push API call returns successfully
150
+ mock_httpx_transport.handle_request.return_value = Response(
151
+ status_code=200,
152
+ text=json.dumps(
153
+ {
154
+ "workflow_sandbox_id": str(uuid4()),
155
+ }
156
+ ),
157
+ )
158
+
159
+ # WHEN calling `vellum push`
160
+ runner = CliRunner()
161
+ result = runner.invoke(cli_main, ["workflows", "push", module])
162
+
163
+ # THEN it should succeed
164
+ assert result.exit_code == 0
165
+
166
+ # AND we should have called the push API with the correct args
167
+ mock_httpx_transport.handle_request.assert_called_once()
168
+ request = mock_httpx_transport.handle_request.call_args[0][0]
169
+ assert str(request.url) == "https://api.vellum.ai/v1/workflows/push"
170
+
171
+ # AND the new URL is in the message at the end
172
+ assert "Visit at: https://app.vellum.ai/workflow-sandboxes/" in result.output
173
+
174
+
136
175
  def test_push__no_config__module_found(mock_module, vellum_client):
137
176
  # GIVEN no config file set
138
177
  temp_dir = mock_module.temp_dir
@@ -486,7 +525,74 @@ Files that were different between the original project and the generated artifac
486
525
  )
487
526
 
488
527
 
489
- def test_push__workspace_option__uses_different_api_key(mock_module, vellum_client_class):
528
+ @pytest.mark.parametrize(
529
+ "file_data",
530
+ [
531
+ {
532
+ "workflow.py": """\
533
+ from vellum.workflows import BaseWorkflow
534
+
535
+ class ExampleWorkflow(BaseWorkflow):
536
+ pass
537
+ """
538
+ },
539
+ {
540
+ "nodes/start_node.py": """\
541
+ from vellum.workflows.nodes import CodeExecutionNode
542
+ from vellum.workflows.references import VellumSecretReference
543
+
544
+ class StartNode(CodeExecutionNode):
545
+ code_inputs = {
546
+ "foo": VellumSecretReference("MY_SECRET_KEY"),
547
+ }
548
+ """,
549
+ "workflow.py": """\
550
+ from vellum.workflows import BaseWorkflow
551
+ from .nodes.start_node import StartNode
552
+
553
+ class ExampleWorkflow(BaseWorkflow):
554
+ graph = StartNode
555
+ """,
556
+ },
557
+ {
558
+ "nodes/start_node.py": """\
559
+ from vellum.workflows.nodes import PromptDeploymentNode
560
+
561
+ class StartNode(PromptDeploymentNode):
562
+ deployment = "my-deployment"
563
+ """,
564
+ "workflow.py": """\
565
+ from vellum.workflows import BaseWorkflow
566
+ from .nodes.start_node import StartNode
567
+
568
+ class ExampleWorkflow(BaseWorkflow):
569
+ graph = StartNode
570
+ """,
571
+ },
572
+ {
573
+ "nodes/start_node.py": """\
574
+ from vellum.workflows.nodes import SubworkflowDeploymentNode
575
+
576
+ class StartNode(SubworkflowDeploymentNode):
577
+ deployment = "my-deployment"
578
+ """,
579
+ "workflow.py": """\
580
+ from vellum.workflows import BaseWorkflow
581
+ from .nodes.start_node import StartNode
582
+
583
+ class ExampleWorkflow(BaseWorkflow):
584
+ graph = StartNode
585
+ """,
586
+ },
587
+ ],
588
+ ids=[
589
+ "base_case",
590
+ "with_secret_reference",
591
+ "with_prompt_deployment",
592
+ "with_subworkflow_deployment",
593
+ ],
594
+ )
595
+ def test_push__workspace_option__uses_different_api_key(mock_module, vellum_client_class, file_data):
490
596
  # GIVEN a single workflow configured
491
597
  temp_dir = mock_module.temp_dir
492
598
  module = mock_module.module
@@ -521,7 +627,8 @@ MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
521
627
  )
522
628
 
523
629
  # AND a workflow exists in the module successfully
524
- _ensure_workflow_py(temp_dir, module)
630
+ for file_name, content in file_data.items():
631
+ _ensure_file(temp_dir, module, file_name, content)
525
632
 
526
633
  # AND the push API call returns a new workflow sandbox id
527
634
  new_workflow_sandbox_id = str(uuid4())
@@ -564,6 +671,83 @@ MY_OTHER_VELLUM_API_KEY=aaabbbcccddd
564
671
  }
565
672
 
566
673
 
674
+ def test_push__workspace_option__uses_different_api_url_env(mock_module, mock_httpx_transport):
675
+ # GIVEN a single workflow configured
676
+ temp_dir = mock_module.temp_dir
677
+ module = mock_module.module
678
+ workflow_sandbox_id = mock_module.workflow_sandbox_id
679
+ set_pyproject_toml = mock_module.set_pyproject_toml
680
+
681
+ # AND a different workspace is set in the pyproject.toml
682
+ set_pyproject_toml(
683
+ {
684
+ "workflows": [
685
+ {
686
+ "module": module,
687
+ "workflow_sandbox_id": workflow_sandbox_id,
688
+ }
689
+ ],
690
+ "workspaces": [
691
+ {
692
+ "name": "my_other_workspace",
693
+ "api_url": "MY_OTHER_VELLUM_API_URL",
694
+ }
695
+ ],
696
+ }
697
+ )
698
+
699
+ # AND the .env file has the other api key stored
700
+ with open(os.path.join(temp_dir, ".env"), "w") as f:
701
+ f.write(
702
+ """\
703
+ VELLUM_API_KEY=abcdef123456
704
+ MY_OTHER_VELLUM_API_URL=https://app.aws-vpc-staging.vellum.ai
705
+ """
706
+ )
707
+
708
+ # AND a workflow exists in the module successfully
709
+ _ensure_workflow_py(temp_dir, module)
710
+
711
+ # AND the push API call returns a new workflow sandbox id
712
+ new_workflow_sandbox_id = str(uuid4())
713
+ mock_httpx_transport.handle_request.return_value = Response(
714
+ status_code=200,
715
+ text=json.dumps(
716
+ {
717
+ "workflow_sandbox_id": new_workflow_sandbox_id,
718
+ }
719
+ ),
720
+ )
721
+
722
+ # WHEN calling `vellum push` on strict mode
723
+ runner = CliRunner()
724
+ result = runner.invoke(cli_main, ["push", module, "--workspace", "my_other_workspace"])
725
+
726
+ # THEN it should succeed
727
+ assert result.exit_code == 0, result.output
728
+
729
+ # AND we should have called the push API once with the correct api url
730
+ request = mock_httpx_transport.handle_request.call_args[0][0]
731
+ assert str(request.url) == "https://app.aws-vpc-staging.vellum.ai/v1/workflows/push"
732
+
733
+ # AND the vellum lock file should have been updated with the correct workspace
734
+ with open(os.path.join(temp_dir, "vellum.lock.json")) as f:
735
+ lock_file_content = json.load(f)
736
+ assert lock_file_content["workflows"][1] == {
737
+ "module": module,
738
+ "workflow_sandbox_id": new_workflow_sandbox_id,
739
+ "workspace": "my_other_workspace",
740
+ "container_image_name": None,
741
+ "container_image_tag": None,
742
+ "deployments": [],
743
+ "ignore": None,
744
+ "target_directory": None,
745
+ }
746
+
747
+ # AND the new URL is in the message at the end
748
+ assert "Visit at: https://app.aws-vpc-staging.vellum.ai/workflow-sandboxes/" in result.output
749
+
750
+
567
751
  def test_push__workspace_option__both_options_already_configured(mock_module, vellum_client_class):
568
752
  # GIVEN a single workflow configured
569
753
  temp_dir = mock_module.temp_dir