vellum-ai 0.12.14__py3-none-any.whl → 0.12.16__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- vellum/__init__.py +6 -0
- vellum/client/__init__.py +2 -6
- vellum/client/core/client_wrapper.py +1 -1
- vellum/client/environment.py +3 -3
- vellum/client/resources/ad_hoc/client.py +2 -6
- vellum/client/resources/container_images/client.py +0 -8
- vellum/client/resources/metric_definitions/client.py +2 -6
- vellum/client/resources/workflows/client.py +8 -8
- vellum/client/types/__init__.py +6 -0
- vellum/client/types/audio_prompt_block.py +29 -0
- vellum/client/types/function_call_prompt_block.py +30 -0
- vellum/client/types/image_prompt_block.py +29 -0
- vellum/client/types/prompt_block.py +12 -1
- vellum/client/types/workflow_push_response.py +1 -0
- vellum/prompts/blocks/compilation.py +43 -0
- vellum/types/audio_prompt_block.py +3 -0
- vellum/types/function_call_prompt_block.py +3 -0
- vellum/types/image_prompt_block.py +3 -0
- vellum/workflows/nodes/core/inline_subworkflow_node/node.py +10 -2
- vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py +16 -0
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.16.dist-info}/METADATA +11 -9
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.16.dist-info}/RECORD +59 -48
- vellum_cli/__init__.py +14 -0
- vellum_cli/config.py +4 -0
- vellum_cli/pull.py +20 -5
- vellum_cli/push.py +33 -4
- vellum_cli/tests/test_pull.py +19 -1
- vellum_cli/tests/test_push.py +63 -0
- vellum_ee/workflows/display/nodes/vellum/__init__.py +2 -0
- vellum_ee/workflows/display/nodes/vellum/api_node.py +3 -3
- vellum_ee/workflows/display/nodes/vellum/base_node.py +35 -0
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +20 -6
- vellum_ee/workflows/display/nodes/vellum/map_node.py +1 -0
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +2 -2
- vellum_ee/workflows/display/nodes/vellum/search_node.py +4 -2
- vellum_ee/workflows/display/nodes/vellum/templating_node.py +1 -1
- vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +3 -3
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py +0 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +28 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +123 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +6 -46
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +3 -25
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +168 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +18 -10
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +18 -10
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +3 -25
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +2 -8
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +13 -27
- vellum_ee/workflows/display/types.py +5 -1
- vellum_ee/workflows/display/utils/vellum.py +3 -3
- vellum_ee/workflows/display/vellum.py +4 -0
- vellum_ee/workflows/display/workflows/base_workflow_display.py +44 -16
- vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py +3 -0
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +7 -8
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.16.dist-info}/LICENSE +0 -0
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.16.dist-info}/WHEEL +0 -0
- {vellum_ai-0.12.14.dist-info → vellum_ai-0.12.16.dist-info}/entry_points.txt +0 -0
@@ -1,18 +1,18 @@
|
|
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=
|
3
|
+
vellum_cli/__init__.py,sha256=7liY2AX5t51Vd_usohIU6QSLjAsF6MaHD30L6ng9SSg,8926
|
4
4
|
vellum_cli/aliased_group.py,sha256=ugW498j0yv4ALJ8vS9MsO7ctDW7Jlir9j6nE_uHAP8c,3363
|
5
|
-
vellum_cli/config.py,sha256=
|
5
|
+
vellum_cli/config.py,sha256=998IZbvkrw2avjbvs8bw6NrbEgGz5UBKRbvKAcastJg,5493
|
6
6
|
vellum_cli/image_push.py,sha256=SJwhwWJsLjwGNezNVd_oCVpFMfPsAB3dfLWmriZZUtw,4419
|
7
7
|
vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
|
8
|
-
vellum_cli/pull.py,sha256=
|
9
|
-
vellum_cli/push.py,sha256=
|
8
|
+
vellum_cli/pull.py,sha256=hYQBe2_-Y4Ieh_Jo54EwBUpqPYq6UYitUBPgqyOVba0,7499
|
9
|
+
vellum_cli/push.py,sha256=iQ2H-vY8njqiYgIifGooqopqkb1BUUA3I7IN7VIHKv8,6149
|
10
10
|
vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
11
|
vellum_cli/tests/conftest.py,sha256=eFGwBxib3Nki830lIFintB0b6r4x8T_KMnmzhlTY5x0,1337
|
12
12
|
vellum_cli/tests/test_config.py,sha256=uvKGDc8BoVyT9_H0Z-g8469zVxomn6Oi3Zj-vK7O_wU,2631
|
13
13
|
vellum_cli/tests/test_main.py,sha256=qDZG-aQauPwBwM6A2DIu1494n47v3pL28XakTbLGZ-k,272
|
14
|
-
vellum_cli/tests/test_pull.py,sha256=
|
15
|
-
vellum_cli/tests/test_push.py,sha256=
|
14
|
+
vellum_cli/tests/test_pull.py,sha256=6gbASF6ASy5YcdWjOCt6b5K0u2VWsFegdrTWu6sEVKs,19613
|
15
|
+
vellum_cli/tests/test_push.py,sha256=sqPy1N9TOa0Wwk4tfEZm18BnfcwRSoQboTWW_PHQA-E,8145
|
16
16
|
vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
17
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
18
|
vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -26,60 +26,65 @@ vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5J
|
|
26
26
|
vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=QqR3Ly0RNrXwOeLdW5nERDFt0gRPf76n1bPES6o5UN4,1093
|
27
27
|
vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
|
28
28
|
vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
|
29
|
-
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=
|
30
|
-
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=
|
31
|
-
vellum_ee/workflows/display/nodes/vellum/
|
29
|
+
vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=_raKY9eKi_OvIFn6nGvf9xKSboKtYLHCWaWCwDQFbOc,1567
|
30
|
+
vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=zucBb2neqTig5Q3HCiMrksRdg-WISnR2prFxYzk3WL0,8527
|
31
|
+
vellum_ee/workflows/display/nodes/vellum/base_node.py,sha256=M59-Kwz6bQ_j8yWLAtJikye-iOl5WtMI8eMnTtvb8SQ,1508
|
32
|
+
vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=Kp-0YRZoy_Pi7HdwUgBxV57a6BzyoxotsvFsfoSGg40,4244
|
32
33
|
vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=EtdqJfhYw03PuT2iyJ6mSAZK4RsQqDie_2AnJAtMelk,13625
|
33
34
|
vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=ygTjSjYDI4DtkxADWub5rhBnRWItMKWF6fezBrgpOKA,1979
|
34
35
|
vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=t5iJQVoRT5g-v2IiUb4kFYdvUVKch0zn27016pzDZoo,2761
|
35
36
|
vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=3TJvHX_Uuf_gr94VkYc_zmNH8I5p71ChIeoAbJZ3ddY,2158
|
36
|
-
vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=
|
37
|
-
vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=
|
38
|
-
vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=
|
37
|
+
vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=dcrCIIWeL5RDHEmc9eyHEdDvxrzQddm71TUtLVcVH8I,7203
|
38
|
+
vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=_cdCzwbwB3gvcLz3UOgvmpz_AZwhXaU8CsOj9nuHB0M,5566
|
39
|
+
vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=y05CB-Pa5-H22YYSjqKnwGyUnuFqjiawbmjVPoElIQw,3692
|
39
40
|
vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=jzO63B9KiEAncnBqmz2ZTcxjmEHozMEe7WnfpcpsQYg,3195
|
40
41
|
vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=9VpC3h0RYOxJuRbjDwidBYlLKakkmlEnDMBh2C7lHcY,1107
|
41
|
-
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=
|
42
|
-
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=
|
42
|
+
vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=3uvSVvNNwVhqxsEh4moW_gIQss1bIuw9Do8XPWr9XLA,3120
|
43
|
+
vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=sSO7n-UXoIdolRAqyKy6MdpdC-hrrt83ntSWe_qLKEM,9071
|
43
44
|
vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=zOp4voBSgB3MR1R93wTOrsiiara_hxEAYFupLl_SvTA,2657
|
44
|
-
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=
|
45
|
+
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=l_QDDTxHxmnwGKr6IwZZvwUMXAjSHJPNE8hf5tY75b4,3380
|
45
46
|
vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
46
|
-
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=
|
47
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=JPZKf7irQ38Dus5bWV_ysKkG97z0oeqP57lOptA-dPk,3881
|
47
48
|
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=hB8dcGMGkuC95kk9hmZUgHsCLwEA37fHTFXj0JzbRjM,4692
|
48
49
|
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=6mPg9QilJfLw9Sgk_h9LRSyKZpKgRu06mr3X1AmmDCA,4691
|
49
50
|
vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
51
|
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=TEg3QbdE7rLbEhml9pMWmay--phsekGlfGVhTblxCGE,1727
|
51
52
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
53
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=5UTzBUKC1H5ve9MJGJMMLGhQ-1ZV4NPn6wYYEdreNxM,1172
|
55
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=nhqi4D_6R9WtQG2WYyPy9RdoollwriWc-72BgOBY9BM,4035
|
52
56
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=e__ae2yepB5vlgVT08sr1DDB8pYjax6VQLo5FtRk-nA,17934
|
53
57
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=F822H2tM3Fvmc2PvunrVCRhtSKQLLpi5y2L1gyJKa78,31576
|
54
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=
|
55
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=
|
58
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=88z_dRc2sARwH73KqyZy6KXJCFPULdPKCeTJ2QJAODY,52192
|
59
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=KNcZR9PhkXYUl-OFKc2XK9qG-C_28K01Le7ecpwPUfU,6143
|
60
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=ZcKpGLZ-RyqfWzvVEsFywSYEqLHrIjFjx5RJmxJT_u4,6091
|
56
61
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=vA8cd7PJYhf949OUGeYP_moKtMogSyfHN2Z-qzNQLwM,8294
|
57
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=
|
58
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=
|
59
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=
|
62
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=7XaPhlX4TU7Ehq62opb_1vGHvynjxJLP_pYqyMt6IOI,22621
|
63
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=lukNCF0w45X2i5SCT5KDMGFn0C0acBNY8t78sC4mBXQ,16485
|
64
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=qXEVZ_OZUUvHZvQyXgVrjvhmvFp5As3DrHZWIvlhGsc,9345
|
60
65
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=NkpgaTbu6nLr3iwgsSNtiHyiNDCUaFakd1JaoW6CC6Y,9489
|
61
66
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=9R6ELHBn9tsp3cy15q1qp1OByyCxFOVdrM67EwCYY50,12984
|
62
67
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=8bz0vm_EyQKSjnwS5vqqgnjE9ygvm-CaPKcwCfeOrlo,12704
|
63
68
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=6LrGPS7e9CWpjFq2hpliSzP9kDpZ9KqvBNlNO3sq8cs,8063
|
64
69
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=xG8nKA1iKXxUe1fnD2X6qm7cUGW14iq2P-L16zhcKC8,4271
|
65
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=
|
66
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=
|
67
|
-
vellum_ee/workflows/display/types.py,sha256
|
70
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=cE6dmre7LRfUV2sZReDhES1zHpYcNH07cDZCrXQsRDw,2638
|
71
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=stOOF7n7oZvZby9Zyk0vr7dK3OG6bx9TEaIXFEZjX0o,8478
|
72
|
+
vellum_ee/workflows/display/types.py,sha256=-ninso8Yf2EBn_RkFhpOEOjRhX2bYgCeMWssHoEgPRg,2248
|
68
73
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
|
-
vellum_ee/workflows/display/utils/vellum.py,sha256
|
70
|
-
vellum_ee/workflows/display/vellum.py,sha256=
|
74
|
+
vellum_ee/workflows/display/utils/vellum.py,sha256=72wyR_ngYjirPYT8kFDxVPtRdHT7FpzBpsjoGMh1q0c,5053
|
75
|
+
vellum_ee/workflows/display/vellum.py,sha256=FHf2GXJ-KNXstMgRg5Prp7BL_dbUt8BSrPxg_QgJmxM,8945
|
71
76
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
72
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
73
|
-
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=
|
74
|
-
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=
|
77
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=u5u_KnDp_ktLBlfkT5wiGHIloodSlUT3D3_DQXijtMA,13735
|
78
|
+
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=kp0u8LN_2IwshLrhMImhpZx1hRyAcD5gXY-kDuuaGMQ,1269
|
79
|
+
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=sUQVEP2te48G97t-au_utKfMhePi4U5nmotzMln7Ga4,16943
|
75
80
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
81
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=sQQFqn7xI0GfUlypWkVFl-X5ShXTh9bXq8N6qlQvSoE,1452
|
77
|
-
vellum/__init__.py,sha256=
|
82
|
+
vellum/__init__.py,sha256=wO2rKMEtIjNEb53CstEj-0qkUDiKKmGb_uxXEl-jS8c,35776
|
78
83
|
vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
79
|
-
vellum/client/__init__.py,sha256=
|
84
|
+
vellum/client/__init__.py,sha256=7yb5YnhvHQUJusa1WyUZcAKGol3z-Lfu07EfD03eEW4,111291
|
80
85
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
81
86
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
82
|
-
vellum/client/core/client_wrapper.py,sha256=
|
87
|
+
vellum/client/core/client_wrapper.py,sha256=2N1VoBiQAederYuBKuAwXoDAkbTGPnkciOAPvOv1Xyk,1869
|
83
88
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
84
89
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
85
90
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -89,7 +94,7 @@ vellum/client/core/query_encoder.py,sha256=ekulqNd0j8TgD7ox-Qbz7liqX8-KP9blvT9Ds
|
|
89
94
|
vellum/client/core/remove_none_from_dict.py,sha256=EU9SGgYidWq7SexuJbNs4-PZ-5Bl3Vppd864mS6vQZw,342
|
90
95
|
vellum/client/core/request_options.py,sha256=5cCGt5AEGgtP5xifDl4oVQUmSjlIA8FmRItAlJawM18,1417
|
91
96
|
vellum/client/core/serialization.py,sha256=D9h_t-RQON3-CHWs1C4ESY9B-Yd5d-l5lnTLb_X896g,9601
|
92
|
-
vellum/client/environment.py,sha256=
|
97
|
+
vellum/client/environment.py,sha256=bcAFjoE9XXd7tiysYS90Os669IJmUMZS2JZ_ZQn0Dpg,498
|
93
98
|
vellum/client/errors/__init__.py,sha256=HZB8vVqzDNx0M2uFJ05S5RcGTH95iVDl4v3rQ4xRqSw,343
|
94
99
|
vellum/client/errors/bad_request_error.py,sha256=_EbO8mWqN9kFZPvIap8qa1lL_EWkRcsZe1HKV9GDWJY,264
|
95
100
|
vellum/client/errors/forbidden_error.py,sha256=QO1kKlhClAPES6zsEK7g9pglWnxn3KWaOCAawWOg6Aw,263
|
@@ -97,9 +102,9 @@ vellum/client/errors/internal_server_error.py,sha256=8USCagXyJJ1MOm9snpcXIUt6eNX
|
|
97
102
|
vellum/client/errors/not_found_error.py,sha256=tBVCeBC8n3C811WHRj_n-hs3h8MqwR5gp0vLiobk7W8,262
|
98
103
|
vellum/client/resources/__init__.py,sha256=2B6Oim7PG4IxSUNSzDY1EruQHsaZ7konj3j_WSTydCs,1378
|
99
104
|
vellum/client/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
100
|
-
vellum/client/resources/ad_hoc/client.py,sha256=
|
105
|
+
vellum/client/resources/ad_hoc/client.py,sha256=_liorv4AsoJ55kVu0a5oWB3Qeff0iUKXqoHEIyDWLxc,14173
|
101
106
|
vellum/client/resources/container_images/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
102
|
-
vellum/client/resources/container_images/client.py,sha256=
|
107
|
+
vellum/client/resources/container_images/client.py,sha256=g8X3IkWFj43-sJMvirjDrh1-yjOFYV2C9xsGC20Xfjo,15003
|
103
108
|
vellum/client/resources/deployments/__init__.py,sha256=m64MNuPx3qVazOnTNwOY8oEeDrAkNwMJvUEe5xoMDvs,239
|
104
109
|
vellum/client/resources/deployments/client.py,sha256=ssXaHJXBxO_I8JLuijusDVWwsfYadTw3j7o41ICYtrY,38777
|
105
110
|
vellum/client/resources/deployments/types/__init__.py,sha256=29GVdoLOJsADSSSqZwb6CQPeEmPjkKrbsWfru1bemj8,321
|
@@ -116,7 +121,7 @@ vellum/client/resources/folder_entities/client.py,sha256=ep5dnfJmEuEyrOSUftEVwKa
|
|
116
121
|
vellum/client/resources/folder_entities/types/__init__.py,sha256=cHabrupjC-HL3kj-UZ9WdVzqHoQHCu6QsLFB3wlOs7k,212
|
117
122
|
vellum/client/resources/folder_entities/types/folder_entities_list_request_entity_status.py,sha256=nK9b9fRSeCfjn2V2Hifl1IbhFeVsNkoeXJ8rCAPADFg,183
|
118
123
|
vellum/client/resources/metric_definitions/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
119
|
-
vellum/client/resources/metric_definitions/client.py,sha256=
|
124
|
+
vellum/client/resources/metric_definitions/client.py,sha256=WfR2f9YtDIdb9yXD_xvJf4pfRr0jVH7QKiiUrPAaeLs,9870
|
120
125
|
vellum/client/resources/ml_models/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
121
126
|
vellum/client/resources/ml_models/client.py,sha256=XIYapTEY6GRNr7V0Kjy5bEeKmrhv9ul8qlQY2A5LFqQ,3872
|
122
127
|
vellum/client/resources/sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
@@ -133,12 +138,12 @@ vellum/client/resources/workflow_deployments/types/workflow_deployments_list_req
|
|
133
138
|
vellum/client/resources/workflow_sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
134
139
|
vellum/client/resources/workflow_sandboxes/client.py,sha256=3wVQxkjrJ5bIS8fB5FpKXCP2dX38299ghWrJ8YmXxwQ,7435
|
135
140
|
vellum/client/resources/workflows/__init__.py,sha256=Z4xi8Nxd9U4t35FQSepTt1p-ns0X1xtdNs168kUcuBk,153
|
136
|
-
vellum/client/resources/workflows/client.py,sha256=
|
141
|
+
vellum/client/resources/workflows/client.py,sha256=4TOVbNauZ7x84rot3FBo8KKqmjd1mMGKLLXE7BRFEK0,11179
|
137
142
|
vellum/client/resources/workflows/types/__init__.py,sha256=-uFca4ypncAOvfsg6sjD-5C9zWdA5qNvU6m675GphVg,177
|
138
143
|
vellum/client/resources/workflows/types/workflows_pull_request_format.py,sha256=dOWE_jnDnniIJLoeseeCms23aklghyBkoPmBFzcqqZk,165
|
139
144
|
vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
140
145
|
vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
|
141
|
-
vellum/client/types/__init__.py,sha256=
|
146
|
+
vellum/client/types/__init__.py,sha256=NzUZ2aXt94v1CqcvgIA3vrSUVLDMM39rVeHm3_YqREw,54062
|
142
147
|
vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
|
143
148
|
vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
|
144
149
|
vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
|
@@ -159,6 +164,7 @@ vellum/client/types/array_vellum_value.py,sha256=6ZDizIzijUFX29JD4lnNv1mOH-venLD
|
|
159
164
|
vellum/client/types/array_vellum_value_request.py,sha256=SUIfUTeJTDcsH76mb_PfQv3q0GEUkVr4Gk-dqn2Qr-I,951
|
160
165
|
vellum/client/types/audio_chat_message_content.py,sha256=159ELbeifFmAOvqPKaVSemHytSJ6OR0kOCtspCj4Lmc,725
|
161
166
|
vellum/client/types/audio_chat_message_content_request.py,sha256=0iy-fv_AYp_3FIJUNza3aqCZrnHBsYN-IwQO690qeUk,754
|
167
|
+
vellum/client/types/audio_prompt_block.py,sha256=4gbzRmZfT_crv3YcGTq265LE-HnzB_bxxtK0aUKzEJY,1013
|
162
168
|
vellum/client/types/audio_variable_value.py,sha256=GLZMcQ_2IicejsXhvQz0kVNfIKmjLHqwa27qYOo881Y,747
|
163
169
|
vellum/client/types/audio_vellum_value.py,sha256=8tbwNkj5UtnjZhFIQZ18O233yCt4fK3BhXpR7S5VEt4,745
|
164
170
|
vellum/client/types/audio_vellum_value_request.py,sha256=KnEyYDvTVqNdYcb4v2AGs5nLbcWFSj351_A9nM2ad8Y,774
|
@@ -269,6 +275,7 @@ vellum/client/types/function_call_chat_message_content_request.py,sha256=HVGxHs6
|
|
269
275
|
vellum/client/types/function_call_chat_message_content_value.py,sha256=DHRZYAMc4Y5MerUS_6CIxQBtORftKn-gBx8Skgivm_A,736
|
270
276
|
vellum/client/types/function_call_chat_message_content_value_request.py,sha256=67EZ3qSR9zO5akOgloswRE0Pv8BcjtWhdTRJIwuQU04,743
|
271
277
|
vellum/client/types/function_call_input.py,sha256=Iiqk2-IX6xUI2UnRj3bum5C0OlQn9jRmBwatUzJQQt8,820
|
278
|
+
vellum/client/types/function_call_prompt_block.py,sha256=TFs-XtVM7F-Mg-KwVctOyOcSloVI1vIfsMEeEeLuu7Y,1052
|
272
279
|
vellum/client/types/function_call_request.py,sha256=udGEdk66q1zTpEFE2xq-cu6w_ahMpfQv_9lIey9x1G0,720
|
273
280
|
vellum/client/types/function_call_variable_value.py,sha256=VQKCiEtJsmIK3i7CtFV_2ZpxeX70rqpUViXIvAci8L0,702
|
274
281
|
vellum/client/types/function_call_vellum_value.py,sha256=lLJb-S_-S_UXm6una1BMyCbqLpMhbbMcaVIYNO45h5o,759
|
@@ -293,6 +300,7 @@ vellum/client/types/hkunlp_instructor_xl_vectorizer.py,sha256=0wDZyilAQD3SQYIOBx
|
|
293
300
|
vellum/client/types/hkunlp_instructor_xl_vectorizer_request.py,sha256=Mtg_hl-IIfa134LWBonkxOQ1dhjXkGkz7maDZ57o_d4,832
|
294
301
|
vellum/client/types/image_chat_message_content.py,sha256=1jHmNuLY2kuuSgJCqNmc4wUMw5aot6GLU6_hQ_99r2g,725
|
295
302
|
vellum/client/types/image_chat_message_content_request.py,sha256=b0K1NnY-NneG_V3JAnyr4H2jrPGOC1OQ-OcCmS1GCvE,754
|
303
|
+
vellum/client/types/image_prompt_block.py,sha256=JIcfWZAWYcOm04Y6XjmxPG58SaoXwIjuZwnVypEVahU,1008
|
296
304
|
vellum/client/types/image_variable_value.py,sha256=njfgKYFU5lTCeosINThWziVE_jpuBjcgntZ3xAALT58,750
|
297
305
|
vellum/client/types/image_vellum_value.py,sha256=69XnqE9m-bd3dOdMD73WtfDm_kDrVg-y3fi35akuqsk,748
|
298
306
|
vellum/client/types/image_vellum_value_request.py,sha256=-Q66T8M6fAf9K_v0LeRwZjB_6pkBUSyMUQc6plRRK5E,777
|
@@ -397,7 +405,7 @@ vellum/client/types/pdf_search_result_meta_source_request.py,sha256=nUhaD2Kw1paG
|
|
397
405
|
vellum/client/types/plain_text_prompt_block.py,sha256=cqEN-B4mcvMw_9lBN7FQG8pk9b5LBJ9xpM6PTgkGiqs,930
|
398
406
|
vellum/client/types/price.py,sha256=ewzXDBVLaleuXMVQ-gQ3G1Nl5J2OWOVEMEFfnQIpiTk,610
|
399
407
|
vellum/client/types/processing_failure_reason_enum.py,sha256=R_KIW7TcQejhc-vLhtNf9SdkYADgoZCn4ch4_RRIvsI,195
|
400
|
-
vellum/client/types/prompt_block.py,sha256=
|
408
|
+
vellum/client/types/prompt_block.py,sha256=PK3NMPLg0NSmrr7JpMQcbNzCo8DjTP9xvg6ENd2bJZk,747
|
401
409
|
vellum/client/types/prompt_block_state.py,sha256=BRAzTYARoSU36IVZGWMeeqhl5fgFMXCyhJ8rCbfB-f0,163
|
402
410
|
vellum/client/types/prompt_deployment_expand_meta_request.py,sha256=agsiAaHB6lDoZPlnfJ2nmhB4Ud4EiJJTX05YmduyCPo,1910
|
403
411
|
vellum/client/types/prompt_deployment_input_request.py,sha256=KrT4-Ew2VvTWXEkYQz2oyHn5EDOgrMW7FzRFaPH3ARg,353
|
@@ -611,7 +619,7 @@ vellum/client/types/workflow_output_search_results.py,sha256=r3RRGVVrH2H9NAuxA7q
|
|
611
619
|
vellum/client/types/workflow_output_string.py,sha256=_jclzbQ-Wlf-7FEVTWXhs9h5FWfj4xGpiODZBOzT43w,810
|
612
620
|
vellum/client/types/workflow_push_deployment_config_request.py,sha256=pG6bZtlw7S0TcXtNRQNa7y_2NodZe7dp5SchIrgRUVU,745
|
613
621
|
vellum/client/types/workflow_push_exec_config.py,sha256=6TaVMVqhSOz4DnY46l8axPDtytSioXDl9nHvFXSxH1g,94
|
614
|
-
vellum/client/types/workflow_push_response.py,sha256=
|
622
|
+
vellum/client/types/workflow_push_response.py,sha256=1vUSZmZ1GK1242dAkNwJnJI0rL3pBT3_0HOLLjdiutw,724
|
615
623
|
vellum/client/types/workflow_release_tag_read.py,sha256=S7ekl01oVDetL8R7MdBTb4cDhHN0W0iHGNJ1-ZpY3Tc,1155
|
616
624
|
vellum/client/types/workflow_release_tag_workflow_deployment_history_item.py,sha256=pjWobdk9mZD3Px86rwFHfs_PYJBGXDKQUkxsgNEe6EA,825
|
617
625
|
vellum/client/types/workflow_request_chat_history_input_request.py,sha256=WCZvwDuNS8ylWOOoKD3t7fHLSYB0h-fVCqeDRzqPoPA,898
|
@@ -663,7 +671,7 @@ vellum/plugins/utils.py,sha256=U9ZY9KdE3RRvbcG01hXxu9CvfJD6Fo7nJDgcHjQn0FI,606
|
|
663
671
|
vellum/plugins/vellum_mypy.py,sha256=VC15EzjTsXOb9uF1bky4rcxePP-0epMVmCsLB2z4Dh8,24816
|
664
672
|
vellum/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
665
673
|
vellum/prompts/blocks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
666
|
-
vellum/prompts/blocks/compilation.py,sha256=
|
674
|
+
vellum/prompts/blocks/compilation.py,sha256=ISuvDHaeVCPb1L7l4umORCECkDn0-rvE49hopz6c2gM,9222
|
667
675
|
vellum/prompts/blocks/exceptions.py,sha256=vmk5PV6Vyw9nKjZYQDUDW0LH8MfQNIgFvFb_mFWdIRI,50
|
668
676
|
vellum/prompts/blocks/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
669
677
|
vellum/prompts/blocks/tests/test_compilation.py,sha256=0DhMoc4huHR6YnNL-0aBLmWSyUfw2BpRq_gEdKsQmAc,3693
|
@@ -733,6 +741,7 @@ vellum/types/array_vellum_value.py,sha256=7_gccasRhEX_dekrfpiM6sqGVXxnT6f5sLB904
|
|
733
741
|
vellum/types/array_vellum_value_request.py,sha256=-tnyAoCArVJRaTQFPDqgTHuzec1UgWpXqjEbUbhZbyI,164
|
734
742
|
vellum/types/audio_chat_message_content.py,sha256=beZpZqUrJQHis0bkhiPnJO9qbl8c2DZyv74dd1OZf8o,164
|
735
743
|
vellum/types/audio_chat_message_content_request.py,sha256=ySZZ8IARXUocjczLZ27CHEmRX3uY2UhBfTzaOE8CeRo,172
|
744
|
+
vellum/types/audio_prompt_block.py,sha256=zpQcvY3Fic82mPlPyOLCjZBBq0dFyCyKuGRkYNDWQko,156
|
736
745
|
vellum/types/audio_variable_value.py,sha256=lDlablFV78mXIRI7IJU1Pyj4SsACLTnwnRBw0UJO3RU,158
|
737
746
|
vellum/types/audio_vellum_value.py,sha256=-9HkLXeBD-IMh_TwKdmQVfAD_F0et2gYKT2ykb_jaAM,156
|
738
747
|
vellum/types/audio_vellum_value_request.py,sha256=YuwrbVZK1EuUKkir5H9-ipeLTPfSF8h6Yy5lS_pAZg4,164
|
@@ -843,6 +852,7 @@ vellum/types/function_call_chat_message_content_request.py,sha256=Pe-BkV1-7hTxkY
|
|
843
852
|
vellum/types/function_call_chat_message_content_value.py,sha256=KETBajaPRZGjpNc4H09C0xauVhKkf-mDy6yPFmqKFn0,178
|
844
853
|
vellum/types/function_call_chat_message_content_value_request.py,sha256=nVlQJdvM5mo4z52l8GodiPvoFydUv6X35s83pEvI7Nk,186
|
845
854
|
vellum/types/function_call_input.py,sha256=Ec31jaPDp9ljRe_XBSH0HwtxdJUUNkbK3kBscOhI6UY,157
|
855
|
+
vellum/types/function_call_prompt_block.py,sha256=n4gHkUbUsihmlxN-bt_4B-CUpFZjl7Ammusqv_LB648,164
|
846
856
|
vellum/types/function_call_request.py,sha256=Dz9jMUgEjX0Bhv-amoRLKR_oPlq_dcWcr0VFGA0Yi70,159
|
847
857
|
vellum/types/function_call_variable_value.py,sha256=61qbXVPjRivofXeKmdP-3dLhH1tkzKAorxBQlBft_-U,166
|
848
858
|
vellum/types/function_call_vellum_value.py,sha256=IEFGHcyjmksr0fbttwF8URV75jGRbs8WCpg5Kw-PEW4,164
|
@@ -867,6 +877,7 @@ vellum/types/hkunlp_instructor_xl_vectorizer.py,sha256=JRH8sgsDEfVUF9H-83eoirSU4
|
|
867
877
|
vellum/types/hkunlp_instructor_xl_vectorizer_request.py,sha256=zb2L8_LUSxtOQOWjr9tDU_mK2a_azmKO8DqNQi52EQM,177
|
868
878
|
vellum/types/image_chat_message_content.py,sha256=hNVlrv_xoUm1-euBK5DkZDInoMfL0eXb4Klx3juCWYU,164
|
869
879
|
vellum/types/image_chat_message_content_request.py,sha256=-_twjYRyGrsbc79xyd0vZ2xkt3Z4rsjJb2Ts0xRX-dY,172
|
880
|
+
vellum/types/image_prompt_block.py,sha256=K5eXoltiu3ifZqeLtNUTz6DUKu-aqnK0hUyWNvPGByg,156
|
870
881
|
vellum/types/image_variable_value.py,sha256=AqrNSw5yXLkQ3c3rsxhnQEenUoxyx_NXfiN26lwBNBg,158
|
871
882
|
vellum/types/image_vellum_value.py,sha256=aCrL399s9TeVKI5dvF7_qus43IgGYoy1erUqOk_iHB8,156
|
872
883
|
vellum/types/image_vellum_value_request.py,sha256=dEXmHRhRYDhWuUMHJ0VjwUc5RLVBCEeoW-QSBKc8LEg,164
|
@@ -1283,9 +1294,9 @@ vellum/workflows/nodes/core/__init__.py,sha256=5zDMCmyt1v0HTJzlUBwq3U9L825yZGZhT
|
|
1283
1294
|
vellum/workflows/nodes/core/error_node/__init__.py,sha256=g7RRnlHhqu4qByfLjBwCunmgGA8dI5gNsjS3h6TwlSI,60
|
1284
1295
|
vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeNLWnhZD0f8r5dWvb5Y,1270
|
1285
1296
|
vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
|
1286
|
-
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=
|
1297
|
+
vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=XJLz7Kkk4OwrM-OcPjiLfF3XC49jDwsVKFPTNXkenvQ,3964
|
1287
1298
|
vellum/workflows/nodes/core/inline_subworkflow_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1288
|
-
vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=
|
1299
|
+
vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=n0-821Ov9ZfRFX_lbzLy5o2rX8fEw2qoxz0aFWCOxVg,1547
|
1289
1300
|
vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
|
1290
1301
|
vellum/workflows/nodes/core/map_node/node.py,sha256=DTMoGqtR8MyfZ8jy8apNoN-4KFFFHywo87pfpqyBVEw,7322
|
1291
1302
|
vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1404,8 +1415,8 @@ vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528
|
|
1404
1415
|
vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
|
1405
1416
|
vellum/workflows/workflows/base.py,sha256=qdZYQq-jjdr0fYT0FCfmFuI5ypE3pANupgYcOqqML0o,18884
|
1406
1417
|
vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
|
1407
|
-
vellum_ai-0.12.
|
1408
|
-
vellum_ai-0.12.
|
1409
|
-
vellum_ai-0.12.
|
1410
|
-
vellum_ai-0.12.
|
1411
|
-
vellum_ai-0.12.
|
1418
|
+
vellum_ai-0.12.16.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1419
|
+
vellum_ai-0.12.16.dist-info/METADATA,sha256=dSVFM4nOL_e1hiNJX-uVrRBdO4-1wDtqhA3MZKwMLTM,5328
|
1420
|
+
vellum_ai-0.12.16.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1421
|
+
vellum_ai-0.12.16.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1422
|
+
vellum_ai-0.12.16.dist-info/RECORD,,
|
vellum_cli/__init__.py
CHANGED
@@ -49,6 +49,11 @@ def workflows():
|
|
49
49
|
@click.option("--deployment-name", type=str, help="Unique name for the Deployment")
|
50
50
|
@click.option("--deployment-description", type=str, help="Description for the Deployment")
|
51
51
|
@click.option("--release-tag", type=list, help="Release Tag for the Deployment", multiple=True)
|
52
|
+
@click.option(
|
53
|
+
"--dry-run",
|
54
|
+
is_flag=True,
|
55
|
+
help="Check the Workflow for errors and expected changes, without updating its state in Vellum.",
|
56
|
+
)
|
52
57
|
def workflows_push(
|
53
58
|
module: Optional[str],
|
54
59
|
deploy: Optional[bool],
|
@@ -56,6 +61,7 @@ def workflows_push(
|
|
56
61
|
deployment_name: Optional[str],
|
57
62
|
deployment_description: Optional[str],
|
58
63
|
release_tag: Optional[List[str]],
|
64
|
+
dry_run: Optional[bool],
|
59
65
|
) -> None:
|
60
66
|
"""
|
61
67
|
Push Workflows to Vellum. If a module is provided, only the Workflow for that module will be pushed.
|
@@ -69,6 +75,7 @@ def workflows_push(
|
|
69
75
|
deployment_name=deployment_name,
|
70
76
|
deployment_description=deployment_description,
|
71
77
|
release_tags=release_tag,
|
78
|
+
dry_run=dry_run,
|
72
79
|
)
|
73
80
|
|
74
81
|
|
@@ -79,6 +86,11 @@ def workflows_push(
|
|
79
86
|
@click.option("--deployment-name", type=str, help="Unique name for the Deployment")
|
80
87
|
@click.option("--deployment-description", type=str, help="Description for the Deployment")
|
81
88
|
@click.option("--release-tag", type=list, help="Release Tag for the Deployment", multiple=True)
|
89
|
+
@click.option(
|
90
|
+
"--dry-run",
|
91
|
+
is_flag=True,
|
92
|
+
help="Check the Workflow for errors and expected changes, without updating its state in Vellum.",
|
93
|
+
)
|
82
94
|
def push_module(
|
83
95
|
ctx: click.Context,
|
84
96
|
deploy: Optional[bool],
|
@@ -86,6 +98,7 @@ def push_module(
|
|
86
98
|
deployment_name: Optional[str],
|
87
99
|
deployment_description: Optional[str],
|
88
100
|
release_tag: Optional[List[str]],
|
101
|
+
dry_run: Optional[bool],
|
89
102
|
) -> None:
|
90
103
|
"""Push a specific module to Vellum"""
|
91
104
|
|
@@ -97,6 +110,7 @@ def push_module(
|
|
97
110
|
deployment_name=deployment_name,
|
98
111
|
deployment_description=deployment_description,
|
99
112
|
release_tags=release_tag,
|
113
|
+
dry_run=dry_run,
|
100
114
|
)
|
101
115
|
|
102
116
|
|
vellum_cli/config.py
CHANGED
@@ -35,6 +35,8 @@ class WorkflowConfig(UniversalBaseModel):
|
|
35
35
|
workflow_sandbox_id: Optional[str] = None
|
36
36
|
ignore: Optional[Union[str, List[str]]] = None
|
37
37
|
deployments: List[WorkflowDeploymentConfig] = field(default_factory=list)
|
38
|
+
container_image_name: Optional[str] = None
|
39
|
+
container_image_tag: Optional[str] = None
|
38
40
|
|
39
41
|
def merge(self, other: "WorkflowConfig") -> "WorkflowConfig":
|
40
42
|
self_deployment_by_id = {
|
@@ -68,6 +70,8 @@ class WorkflowConfig(UniversalBaseModel):
|
|
68
70
|
workflow_sandbox_id=self.workflow_sandbox_id or other.workflow_sandbox_id,
|
69
71
|
ignore=self.ignore or other.ignore,
|
70
72
|
deployments=merged_deployments,
|
73
|
+
container_image_tag=self.container_image_tag or other.container_image_tag,
|
74
|
+
container_image_name=self.container_image_name or other.container_image_name,
|
71
75
|
)
|
72
76
|
|
73
77
|
|
vellum_cli/pull.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import io
|
2
|
+
import json
|
2
3
|
import os
|
3
4
|
from pathlib import Path
|
4
5
|
from uuid import UUID
|
@@ -14,6 +15,7 @@ from vellum_cli.config import VellumCliConfig, WorkflowConfig, load_vellum_cli_c
|
|
14
15
|
from vellum_cli.logger import load_cli_logger
|
15
16
|
|
16
17
|
ERROR_LOG_FILE_NAME = "error.log"
|
18
|
+
METADATA_FILE_NAME = "metadata.json"
|
17
19
|
|
18
20
|
|
19
21
|
def _is_valid_uuid(val: Union[str, UUID, None]) -> bool:
|
@@ -109,6 +111,7 @@ def pull_command(
|
|
109
111
|
logger.info(f"Pulling workflow into {workflow_config.module}")
|
110
112
|
client = create_vellum_client()
|
111
113
|
query_parameters = {}
|
114
|
+
|
112
115
|
if include_json:
|
113
116
|
query_parameters["include_json"] = include_json
|
114
117
|
if exclude_code:
|
@@ -128,6 +131,8 @@ def pull_command(
|
|
128
131
|
|
129
132
|
target_dir = os.path.join(os.getcwd(), *workflow_config.module.split("."))
|
130
133
|
error_content = ""
|
134
|
+
metadata_json: Optional[dict] = None
|
135
|
+
|
131
136
|
with zipfile.ZipFile(zip_buffer) as zip_file:
|
132
137
|
# Delete files in target_dir that aren't in the zip file
|
133
138
|
if os.path.exists(target_dir):
|
@@ -152,16 +157,26 @@ def pull_command(
|
|
152
157
|
os.remove(file_path)
|
153
158
|
|
154
159
|
for file_name in zip_file.namelist():
|
155
|
-
|
156
|
-
os.makedirs(os.path.dirname(target_file), exist_ok=True)
|
157
|
-
with zip_file.open(file_name) as source, open(target_file, "w") as target:
|
160
|
+
with zip_file.open(file_name) as source:
|
158
161
|
content = source.read().decode("utf-8")
|
159
162
|
if file_name == ERROR_LOG_FILE_NAME:
|
160
163
|
error_content = content
|
161
164
|
continue
|
165
|
+
if file_name == METADATA_FILE_NAME:
|
166
|
+
metadata_json = json.loads(content)
|
167
|
+
continue
|
162
168
|
|
163
|
-
|
164
|
-
|
169
|
+
target_file = os.path.join(target_dir, file_name)
|
170
|
+
os.makedirs(os.path.dirname(target_file), exist_ok=True)
|
171
|
+
with open(target_file, "w") as target:
|
172
|
+
logger.info(f"Writing to {target_file}...")
|
173
|
+
target.write(content)
|
174
|
+
|
175
|
+
if metadata_json:
|
176
|
+
workflow_config.container_image_name = metadata_json.get("runner_config", {}).get("container_image_name")
|
177
|
+
workflow_config.container_image_tag = metadata_json.get("runner_config", {}).get("container_image_tag")
|
178
|
+
if workflow_config.container_image_name and not workflow_config.container_image_tag:
|
179
|
+
workflow_config.container_image_tag = "latest"
|
165
180
|
|
166
181
|
if include_json:
|
167
182
|
logger.warning(
|
vellum_cli/push.py
CHANGED
@@ -27,6 +27,7 @@ def push_command(
|
|
27
27
|
deployment_name: Optional[str] = None,
|
28
28
|
deployment_description: Optional[str] = None,
|
29
29
|
release_tags: Optional[List[str]] = None,
|
30
|
+
dry_run: Optional[bool] = None,
|
30
31
|
) -> None:
|
31
32
|
load_dotenv()
|
32
33
|
logger = load_cli_logger()
|
@@ -49,10 +50,21 @@ def push_command(
|
|
49
50
|
# Remove this once we could serialize using the artifact in Vembda
|
50
51
|
# https://app.shortcut.com/vellum/story/5585
|
51
52
|
workflow = BaseWorkflow.load_from_module(workflow_config.module)
|
52
|
-
workflow_display = get_workflow_display(
|
53
|
+
workflow_display = get_workflow_display(
|
54
|
+
base_display_class=VellumWorkflowDisplay,
|
55
|
+
workflow_class=workflow,
|
56
|
+
dry_run=dry_run or False,
|
57
|
+
)
|
53
58
|
exec_config = workflow_display.serialize()
|
59
|
+
|
60
|
+
container_tag = workflow_config.container_image_tag
|
61
|
+
if workflow_config.container_image_name and not workflow_config.container_image_tag:
|
62
|
+
container_tag = "latest"
|
63
|
+
|
54
64
|
exec_config["runner_config"] = {
|
55
65
|
"sdk_version": metadata.version("vellum-ai"),
|
66
|
+
"container_image_tag": container_tag,
|
67
|
+
"container_image_name": workflow_config.container_image_name,
|
56
68
|
}
|
57
69
|
|
58
70
|
label = snake_to_title_case(workflow_config.module.split(".")[-1])
|
@@ -107,11 +119,28 @@ def push_command(
|
|
107
119
|
# We should check with fern if we could auto-serialize typed object fields for us
|
108
120
|
# https://app.shortcut.com/vellum/story/5568
|
109
121
|
deployment_config=deployment_config_serialized, # type: ignore[arg-type]
|
122
|
+
dry_run=dry_run,
|
110
123
|
)
|
111
|
-
|
112
|
-
|
124
|
+
|
125
|
+
if dry_run:
|
126
|
+
error_messages = [str(e) for e in workflow_display.errors]
|
127
|
+
error_message = "\n".join(error_messages) if error_messages else "No errors found."
|
128
|
+
logger.info(
|
129
|
+
f"""\
|
130
|
+
# Workflow Push Report
|
131
|
+
|
132
|
+
## Errors
|
133
|
+
{error_message}
|
134
|
+
|
135
|
+
## Proposed Diffs
|
136
|
+
{json.dumps(response.proposed_diffs, indent=2)}
|
137
|
+
"""
|
138
|
+
) # type: ignore[attr-defined]
|
139
|
+
else:
|
140
|
+
logger.info(
|
141
|
+
f"""Successfully pushed {label} to Vellum!
|
113
142
|
Visit at: https://app.vellum.ai/workflow-sandboxes/{response.workflow_sandbox_id}"""
|
114
|
-
|
143
|
+
)
|
115
144
|
|
116
145
|
requires_save = False
|
117
146
|
if not workflow_config.workflow_sandbox_id:
|
vellum_cli/tests/test_pull.py
CHANGED
@@ -130,6 +130,8 @@ def test_pull__sandbox_id_with_no_config(vellum_client):
|
|
130
130
|
"workflow_sandbox_id": "87654321-0000-0000-0000-000000000000",
|
131
131
|
"ignore": None,
|
132
132
|
"deployments": [],
|
133
|
+
"container_image_tag": None,
|
134
|
+
"container_image_name": None,
|
133
135
|
}
|
134
136
|
],
|
135
137
|
}
|
@@ -204,6 +206,8 @@ def test_pull__workflow_deployment_with_no_config(vellum_client):
|
|
204
206
|
"workflow_sandbox_id": None,
|
205
207
|
"ignore": None,
|
206
208
|
"deployments": [],
|
209
|
+
"container_image_tag": None,
|
210
|
+
"container_image_name": None,
|
207
211
|
}
|
208
212
|
],
|
209
213
|
}
|
@@ -407,7 +411,17 @@ def test_pull__sandbox_id_with_other_workflow_deployment_in_lock(vellum_client,
|
|
407
411
|
new_workflow_sandbox_id = "87654321-0000-0000-0000-000000000000"
|
408
412
|
|
409
413
|
# AND the workflow pull API call returns a zip file
|
410
|
-
vellum_client.workflows.pull.return_value = iter(
|
414
|
+
vellum_client.workflows.pull.return_value = iter(
|
415
|
+
[
|
416
|
+
_zip_file_map(
|
417
|
+
{
|
418
|
+
"workflow.py": "print('hello')",
|
419
|
+
"metadata.json": '{"runner_config": { "container_image_name": "test", '
|
420
|
+
'"container_image_tag": "1.0" } }',
|
421
|
+
}
|
422
|
+
)
|
423
|
+
]
|
424
|
+
)
|
411
425
|
|
412
426
|
# WHEN the user runs the pull command with the new workflow sandbox id
|
413
427
|
runner = CliRunner()
|
@@ -433,12 +447,16 @@ def test_pull__sandbox_id_with_other_workflow_deployment_in_lock(vellum_client,
|
|
433
447
|
"release_tags": None,
|
434
448
|
},
|
435
449
|
],
|
450
|
+
"container_image_name": None,
|
451
|
+
"container_image_tag": None,
|
436
452
|
},
|
437
453
|
{
|
438
454
|
"module": "workflow_87654321",
|
439
455
|
"workflow_sandbox_id": new_workflow_sandbox_id,
|
440
456
|
"ignore": None,
|
441
457
|
"deployments": [],
|
458
|
+
"container_image_name": "test",
|
459
|
+
"container_image_tag": "1.0",
|
442
460
|
},
|
443
461
|
]
|
444
462
|
|
vellum_cli/tests/test_push.py
CHANGED
@@ -171,3 +171,66 @@ class ExampleWorkflow(BaseWorkflow):
|
|
171
171
|
|
172
172
|
extracted_files = _extract_tar_gz(call_args["artifact"].read())
|
173
173
|
assert extracted_files["workflow.py"] == workflow_py_file_content
|
174
|
+
|
175
|
+
|
176
|
+
def test_push__dry_run_option_returns_report(mock_module, vellum_client):
|
177
|
+
# GIVEN a single workflow configured
|
178
|
+
temp_dir = mock_module.temp_dir
|
179
|
+
module = mock_module.module
|
180
|
+
|
181
|
+
# AND a workflow exists in the module successfully
|
182
|
+
base_dir = os.path.join(temp_dir, *module.split("."))
|
183
|
+
os.makedirs(base_dir, exist_ok=True)
|
184
|
+
workflow_py_file_content = """\
|
185
|
+
from typing import Dict
|
186
|
+
from vellum.workflows import BaseWorkflow
|
187
|
+
from vellum.workflows.nodes import BaseNode
|
188
|
+
from vellum_ee.workflows.display.nodes import BaseNodeDisplay
|
189
|
+
|
190
|
+
class NotSupportedNode(BaseNode):
|
191
|
+
pass
|
192
|
+
|
193
|
+
class NotSupportedNodeDisplay(BaseNodeDisplay[NotSupportedNode]):
|
194
|
+
def serialize(self, display_context, **kwargs) -> Dict:
|
195
|
+
raise NotImplementedError(f"Serialization is not supported.")
|
196
|
+
|
197
|
+
class ExampleWorkflow(BaseWorkflow):
|
198
|
+
graph = NotSupportedNode
|
199
|
+
"""
|
200
|
+
with open(os.path.join(temp_dir, *module.split("."), "workflow.py"), "w") as f:
|
201
|
+
f.write(workflow_py_file_content)
|
202
|
+
|
203
|
+
# AND the push API call returns successfully
|
204
|
+
vellum_client.workflows.push.return_value = WorkflowPushResponse(
|
205
|
+
workflow_sandbox_id=str(uuid4()),
|
206
|
+
proposed_diffs={
|
207
|
+
"iterable_item_added": {
|
208
|
+
"root['raw_data']['nodes'][0]": {
|
209
|
+
"id": str(uuid4()),
|
210
|
+
"type": "GENERIC",
|
211
|
+
"definition": None,
|
212
|
+
"display_data": None,
|
213
|
+
"trigger": {"id": str(uuid4()), "merge_behavior": "AWAIT_ATTRIBUTES"},
|
214
|
+
"ports": [{"id": str(uuid4()), "name": "default", "type": "DEFAULT"}],
|
215
|
+
},
|
216
|
+
},
|
217
|
+
},
|
218
|
+
)
|
219
|
+
|
220
|
+
# WHEN calling `vellum push`
|
221
|
+
runner = CliRunner(mix_stderr=True)
|
222
|
+
result = runner.invoke(cli_main, ["push", module, "--dry-run"])
|
223
|
+
|
224
|
+
# THEN it should succeed
|
225
|
+
assert result.exit_code == 0
|
226
|
+
|
227
|
+
# AND we should have called the push API with the dry-run option
|
228
|
+
vellum_client.workflows.push.assert_called_once()
|
229
|
+
call_args = vellum_client.workflows.push.call_args.kwargs
|
230
|
+
assert call_args["dry_run"] is True
|
231
|
+
|
232
|
+
# AND the report should be in the output
|
233
|
+
assert "## Errors" in result.output
|
234
|
+
# assert "Serialization is not supported." in result.output
|
235
|
+
assert "## Proposed Diffs" in result.output
|
236
|
+
assert "iterable_item_added" in result.output
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from .api_node import BaseAPINodeDisplay
|
2
|
+
from .base_node import BaseNodeDisplay
|
2
3
|
from .code_execution_node import BaseCodeExecutionNodeDisplay
|
3
4
|
from .conditional_node import BaseConditionalNodeDisplay
|
4
5
|
from .error_node import BaseErrorNodeDisplay
|
@@ -27,6 +28,7 @@ __all__ = [
|
|
27
28
|
"BaseInlineSubworkflowNodeDisplay",
|
28
29
|
"BaseMapNodeDisplay",
|
29
30
|
"BaseMergeNodeDisplay",
|
31
|
+
"BaseNodeDisplay",
|
30
32
|
"BaseNoteNodeDisplay",
|
31
33
|
"BasePromptDeploymentNodeDisplay",
|
32
34
|
"BaseSearchNodeDisplay",
|
@@ -161,9 +161,9 @@ class BaseAPINodeDisplay(BaseNodeVellumDisplay[_APINodeType], Generic[_APINodeTy
|
|
161
161
|
]
|
162
162
|
inputs.extend(additional_header_inputs)
|
163
163
|
|
164
|
-
_, text_output_display = display_context.
|
165
|
-
_, json_output_display = display_context.
|
166
|
-
_, status_code_output_display = display_context.
|
164
|
+
_, text_output_display = display_context.global_node_output_displays[cast(OutputReference, node.Outputs.text)]
|
165
|
+
_, json_output_display = display_context.global_node_output_displays[cast(OutputReference, node.Outputs.json)]
|
166
|
+
_, status_code_output_display = display_context.global_node_output_displays[
|
167
167
|
cast(OutputReference, node.Outputs.status_code)
|
168
168
|
]
|
169
169
|
|