vellum-ai 0.14.0__py3-none-any.whl → 0.14.2__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.
- vellum/client/core/client_wrapper.py +1 -1
- vellum/prompts/blocks/compilation.py +23 -16
- vellum/prompts/blocks/tests/test_compilation.py +29 -0
- vellum/utils/templating/constants.py +6 -2
- vellum/utils/templating/custom_filters.py +22 -1
- vellum/utils/templating/render.py +5 -2
- vellum/utils/templating/tests/__init__.py +0 -0
- vellum/utils/templating/tests/test_custom_filters.py +19 -0
- vellum/workflows/errors/types.py +3 -0
- vellum/workflows/nodes/core/templating_node/node.py +3 -3
- vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py +66 -1
- vellum/workflows/nodes/displayable/code_execution_node/node.py +5 -4
- vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py +51 -0
- vellum/workflows/nodes/displayable/code_execution_node/utils.py +13 -11
- vellum/workflows/nodes/utils.py +9 -1
- vellum/workflows/state/base.py +21 -1
- {vellum_ai-0.14.0.dist-info → vellum_ai-0.14.2.dist-info}/METADATA +1 -1
- {vellum_ai-0.14.0.dist-info → vellum_ai-0.14.2.dist-info}/RECORD +51 -46
- vellum_cli/pull.py +3 -11
- vellum_ee/workflows/display/base.py +14 -0
- vellum_ee/workflows/display/nodes/base_node_display.py +11 -22
- vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +52 -0
- vellum_ee/workflows/display/tests/test_vellum_workflow_display.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +4 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +3 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +4 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +243 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +1 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +1 -1
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +1 -0
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +1 -0
- vellum_ee/workflows/display/types.py +5 -1
- vellum_ee/workflows/display/utils/expressions.py +26 -0
- vellum_ee/workflows/display/utils/vellum.py +5 -0
- vellum_ee/workflows/display/vellum.py +15 -1
- vellum_ee/workflows/display/workflows/base_workflow_display.py +30 -1
- vellum_ee/workflows/display/workflows/vellum_workflow_display.py +54 -6
- vellum_ee/workflows/tests/local_workflow/display/workflow.py +0 -2
- {vellum_ai-0.14.0.dist-info → vellum_ai-0.14.2.dist-info}/LICENSE +0 -0
- {vellum_ai-0.14.0.dist-info → vellum_ai-0.14.2.dist-info}/WHEEL +0 -0
- {vellum_ai-0.14.0.dist-info → vellum_ai-0.14.2.dist-info}/entry_points.txt +0 -0
@@ -6,7 +6,7 @@ vellum_cli/config.py,sha256=Bsb3mnvKvv3oOTcCuxpgC7lWPMqt6eJhgRA6VEE-vL4,9266
|
|
6
6
|
vellum_cli/image_push.py,sha256=SJwhwWJsLjwGNezNVd_oCVpFMfPsAB3dfLWmriZZUtw,4419
|
7
7
|
vellum_cli/logger.py,sha256=PuRFa0WCh4sAGFS5aqWB0QIYpS6nBWwPJrIXpWxugV4,1022
|
8
8
|
vellum_cli/ping.py,sha256=lWyJw6sziXjyTopTYRdFF5hV-sYPVDdX0yVbG5fzcY4,585
|
9
|
-
vellum_cli/pull.py,sha256=
|
9
|
+
vellum_cli/pull.py,sha256=SA2EOHXbLO_jGKhzUHNrLyxEwaPbeLiU3TeRY5oeX_Y,8877
|
10
10
|
vellum_cli/push.py,sha256=xjTNbLwOVFNU3kpBrm56Bk5QkSRrJ9z86qceghCzfIA,9655
|
11
11
|
vellum_cli/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
vellum_cli/tests/conftest.py,sha256=AFYZryKA2qnUuCPBxBKmHLFoPiE0WhBFFej9tNwSHdc,1526
|
@@ -19,9 +19,9 @@ vellum_ee/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
19
|
vellum_ee/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
20
|
vellum_ee/workflows/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
21
|
vellum_ee/workflows/display/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
vellum_ee/workflows/display/base.py,sha256=
|
22
|
+
vellum_ee/workflows/display/base.py,sha256=i8o7Ex0S9BVub_91s6D2a8kHGcv3ro5XGEwSzeVSz-Y,2083
|
23
23
|
vellum_ee/workflows/display/nodes/__init__.py,sha256=5XOcZJXYUgaLS55QgRJzyQ_W1tpeprjnYAeYVezqoGw,160
|
24
|
-
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=
|
24
|
+
vellum_ee/workflows/display/nodes/base_node_display.py,sha256=En8Ir2e1mpExkAi1T8ExOEpZbv5gu6OetaNq35-_WSY,16317
|
25
25
|
vellum_ee/workflows/display/nodes/base_node_vellum_display.py,sha256=pLO0dORfRu--Ne9NgoyFT_CNjfpr5fGCsgbsMkUF5GM,2845
|
26
26
|
vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=0S6ksPp53WXWh1RQVH71nj2bkCWBj4ZaFYhTxW3N2F4,1230
|
27
27
|
vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -47,46 +47,49 @@ vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=6
|
|
47
47
|
vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=JVIMPR3WpveOCWZubHKZkE04mavnTdb_9QY_r3XliRg,3424
|
48
48
|
vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
49
49
|
vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=ulrpoYUW-5kIxfG4Lf5F2p0k_EoYKhmahEbF3P_eruM,1648
|
50
|
+
vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py,sha256=bg9INsXiWfyK047u8TD1oEOFYrqDq8GC7Hvgz69n7BE,1988
|
50
51
|
vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py,sha256=mtzB8LJlFCHVFM4H5AanLp29gQfaVmnN4A4iaRGJHoI,2427
|
51
52
|
vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py,sha256=3uT7Gbc0f_mQ3u8uZuCWd0mJ4GtWbz2gbUMySYaVlNE,3774
|
52
53
|
vellum_ee/workflows/display/nodes/vellum/try_node.py,sha256=EoU1J7HfcszAZr7ROy_xsNhaDBRiI95-wTK-OzgBwvg,5861
|
53
54
|
vellum_ee/workflows/display/nodes/vellum/utils.py,sha256=OEGHjQSbuUgJexXI1aubYW33z2F_YdkhQ8REahfz864,4320
|
54
55
|
vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
55
|
-
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=
|
56
|
+
vellum_ee/workflows/display/tests/test_vellum_workflow_display.py,sha256=1EEvkKQRfOKlnpLxE9-hKSsVLLaelM39LY7007LM5dg,4983
|
56
57
|
vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
58
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
|
-
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=
|
59
|
+
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py,sha256=A1-tIpC5KIKG9JA_rkd1nLS8zUG3Kb4QiVdvb3boFxE,2509
|
59
60
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py,sha256=KYdohS5pRgHM0DcUaK0tHa40f0gSvDKi2K5On0zNEU8,8305
|
60
61
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py,sha256=1cszL6N6FNGVm61MOa7AEiHnF0QjZWqDQuPOp4yiG94,18277
|
61
62
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=-12ZkZb3f5gyoNASV2yeQtMo5HmNsVEo8nXwL6IC-I8,6261
|
62
63
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=6th6kCwzql6lddjkTQx4Jbvvs4ChqtJwctW-B4QuBhI,37352
|
63
64
|
vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=EbVgg_3_ipTt3MOop4RARX0fmNjwqZtkhIXzx9nGw7Y,4487
|
64
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=
|
65
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=
|
66
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=
|
67
|
-
vellum_ee/workflows/display/tests/workflow_serialization/
|
68
|
-
vellum_ee/workflows/display/tests/workflow_serialization/
|
69
|
-
vellum_ee/workflows/display/tests/workflow_serialization/
|
65
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=IRazH2QR6F8RGqNemEnHueyj5DtEa6rFTYhT16S4jI8,15917
|
66
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=PiHqgj-vLhlaOHoQFVVEW2YydYWLI0mX6nq_sbzZiy4,29233
|
67
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=R8DW1DUb0DOSLtnF2E1HaCTmtpG-ski0LfcM2WeLVNo,47672
|
68
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py,sha256=z9FSufJeV-003R87wi_Lx4mZewdeeOeTPCGNc9vg8vY,8819
|
69
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=wgedEa2IVP2ssH_FLghoEmLgpJR41AY-iNIw1SESeqA,6106
|
70
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=yIq5UexHAk7Afh_6sMlXNAUeKdckBUvCBVIEDLEnhFs,5773
|
71
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=0N7lqB2WMvSItUY78EWpF-g4fXvhkc4NCY-Ws57OYsQ,7446
|
70
72
|
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=XRtXTWtNXHe1g8E_mNcAhYZVjc0UcGlJRjq34_sd0jo,787
|
71
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=
|
72
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=
|
73
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=
|
74
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256
|
75
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=
|
76
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=
|
77
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=
|
78
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=
|
79
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=
|
80
|
-
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=
|
81
|
-
vellum_ee/workflows/display/types.py,sha256=
|
73
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=cKM87WUrBZwVauP7VD4rQdObd2jllHJJRHWDGL1tgMI,20605
|
74
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=PbIezAnkGubhY_e5dpOaaaVZ9VeoYJKqvCKbIbjucfU,16172
|
75
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=ObCnoIVJM434jJBC3_kOTKbY4sCDHlknwMTFWRGiOtU,8449
|
76
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=-bGp82C5_XgcVxeM80zWL9viogxvE4DGk7-5H__wwxA,8649
|
77
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=elc4ak2OyI4y5P6GPnK2RwuZLcx4FL6hHlmhY3ARk6k,13008
|
78
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=BzFNl9ECeGh0krm-CUjbBQQq0g7krANsp0Sh-j5dAkc,11322
|
79
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=xXtW915v9yxxKlyu5ObzKHyJYMvobvev3ermX61SGx4,7818
|
80
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=NdhE3lm7RMQ8DqkraPSq24IbOxNla9unbs4tsMWRzm4,3781
|
81
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=gHKU8Vg960ooV3uXqM2LMnVS-mGbv3aagGozQuTVTjI,2455
|
82
|
+
vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=huKAOeMJ2MKmp6XtbvMJTUadqynoV40Ypoz9jsBEBEQ,7431
|
83
|
+
vellum_ee/workflows/display/types.py,sha256=bm355ZcZ-7WaesBvIB8RbWDD7qiFmazfcNb6tEZWx3M,2940
|
82
84
|
vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
|
-
vellum_ee/workflows/display/utils/
|
84
|
-
vellum_ee/workflows/display/vellum.py,sha256=
|
85
|
+
vellum_ee/workflows/display/utils/expressions.py,sha256=9FpOslDI-RCR5m4TgAu9KCHh4aTVnh7CHR2ykyMUDw0,1151
|
86
|
+
vellum_ee/workflows/display/utils/vellum.py,sha256=UjK_RxnSEmlIu9klGCPWU5RAQBmgZ7cRbRdgxaTbubE,8081
|
87
|
+
vellum_ee/workflows/display/vellum.py,sha256=iiBzMIHTnRb-Xb4Q9-26vOxPpK_rDPKBlky3dBew8Gg,8480
|
85
88
|
vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
|
86
|
-
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=
|
89
|
+
vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=Amow11LhE-GL3j8bNZ8rK1iYKjkNOhH1ECMQ-dvyLAU,17204
|
87
90
|
vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=kp0u8LN_2IwshLrhMImhpZx1hRyAcD5gXY-kDuuaGMQ,1269
|
88
91
|
vellum_ee/workflows/display/workflows/tests/test_workflow_display.py,sha256=yl1ytpl9_lijOGeDPWSypWYRJ7aOEVA7NgUg81jTuCs,2229
|
89
|
-
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=
|
92
|
+
vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=8roVFJ4SWrMRNpptwwneVcE6kJmoVtJPN-fmkfDNb7Q,19102
|
90
93
|
vellum_ee/workflows/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
91
94
|
vellum_ee/workflows/server/virtual_file_loader.py,sha256=X_DdNK7MfyOjKWekk6YQpOSCT6klKcdjT6nVJcBH1sM,1481
|
92
95
|
vellum_ee/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -101,7 +104,7 @@ vellum_ee/workflows/tests/local_workflow/display/__init__.py,sha256=xo75Uqb4aErO
|
|
101
104
|
vellum_ee/workflows/tests/local_workflow/display/nodes/__init__.py,sha256=szW_mgOUriyZ6v1vlnevBgkzNi8g83-ihS98UOLHVcE,155
|
102
105
|
vellum_ee/workflows/tests/local_workflow/display/nodes/final_output.py,sha256=Kv92TCREiZsB9531KZYaBIq83uHn7e_ECw_yAbD1qfk,1017
|
103
106
|
vellum_ee/workflows/tests/local_workflow/display/nodes/templating_node.py,sha256=5cankEe1rDZlXKgILFSPbmN0tUZhIdmcFgz_AguXTJc,1229
|
104
|
-
vellum_ee/workflows/tests/local_workflow/display/workflow.py,sha256=
|
107
|
+
vellum_ee/workflows/tests/local_workflow/display/workflow.py,sha256=XJCmx64TCsD2Zt55Q5SISdXSr1NO7n5xenkOtCk0WXI,2151
|
105
108
|
vellum_ee/workflows/tests/local_workflow/inputs.py,sha256=4cgsZBoUbIY0Rs8gknC9yqxQ-sSoULclx_SAm1FT2RA,96
|
106
109
|
vellum_ee/workflows/tests/local_workflow/metadata.json,sha256=rdu3h5qkFZiqhCAMxoyoWyMI0O8QALC5-URvSIW6F00,24
|
107
110
|
vellum_ee/workflows/tests/local_workflow/nodes/__init__.py,sha256=1F6jxUpSKfPXPj4ZZKSbnX6Mg-VwF3euLJSZfGn6xkM,127
|
@@ -116,7 +119,7 @@ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
|
|
116
119
|
vellum/client/__init__.py,sha256=j6zi0NZ4BMC6JrwckvzMWuG5x8KoOvO4KqsLhvVCa68,117624
|
117
120
|
vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
|
118
121
|
vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
119
|
-
vellum/client/core/client_wrapper.py,sha256=
|
122
|
+
vellum/client/core/client_wrapper.py,sha256=r8ZNshVLkA2wiH4k5knCrjqc-qjeEZ06Cpf5iE7nQ-g,1868
|
120
123
|
vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
121
124
|
vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
|
122
125
|
vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
|
@@ -706,10 +709,10 @@ vellum/plugins/utils.py,sha256=U9ZY9KdE3RRvbcG01hXxu9CvfJD6Fo7nJDgcHjQn0FI,606
|
|
706
709
|
vellum/plugins/vellum_mypy.py,sha256=QTuMSq6PiZW1dyTUZ5Bf1d4XkgFj0TKAgZLP8f4UgL4,27914
|
707
710
|
vellum/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
708
711
|
vellum/prompts/blocks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
709
|
-
vellum/prompts/blocks/compilation.py,sha256=
|
712
|
+
vellum/prompts/blocks/compilation.py,sha256=P2gdL4bRR1j0IbvQFzS13cJzGpnaDZFhdV3x5COVvs0,9481
|
710
713
|
vellum/prompts/blocks/exceptions.py,sha256=vmk5PV6Vyw9nKjZYQDUDW0LH8MfQNIgFvFb_mFWdIRI,50
|
711
714
|
vellum/prompts/blocks/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
712
|
-
vellum/prompts/blocks/tests/test_compilation.py,sha256=
|
715
|
+
vellum/prompts/blocks/tests/test_compilation.py,sha256=WhR8L7AzxssZiizItAbbtQMXZ3An5RMUws0kfCwJBgw,4841
|
713
716
|
vellum/prompts/blocks/types.py,sha256=6aSJQco-5kKeadfKVVXF_SrQPlIJgMYVNc-C7so1sY8,975
|
714
717
|
vellum/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
715
718
|
vellum/resources/__init__.py,sha256=sQWK7g_Z4EM7pa7fy6vy3d_DMdTJ4wVcozBn3Lx4Qpo,141
|
@@ -1256,10 +1259,12 @@ vellum/types/workspace_read.py,sha256=9CvgvK8Li8vL6qC5KX7f3-nEHslJ4lw2w07bvXcrjA
|
|
1256
1259
|
vellum/types/workspace_secret_read.py,sha256=Z6QNXHxVHRdrLXSI31KxngePRwJTVoJYMXVbtPQwrxs,159
|
1257
1260
|
vellum/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1258
1261
|
vellum/utils/templating/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1259
|
-
vellum/utils/templating/constants.py,sha256=
|
1260
|
-
vellum/utils/templating/custom_filters.py,sha256=
|
1262
|
+
vellum/utils/templating/constants.py,sha256=8OHMO6WFAEimbIaiHc5gy6s91D7_KvW-vTlEMWwvl_M,711
|
1263
|
+
vellum/utils/templating/custom_filters.py,sha256=XVHriwazejRZmxB_eg4xHgCxl7AiQQ2sx-hRLMmylfU,885
|
1261
1264
|
vellum/utils/templating/exceptions.py,sha256=cDp140PP4OnInW4qAvg3KqiSiF70C71UyEAKRBR1Abo,46
|
1262
|
-
vellum/utils/templating/render.py,sha256=
|
1265
|
+
vellum/utils/templating/render.py,sha256=ooQxCiBMAizPVfwJsIPS2feSBUuoalR1UeJMO0Df-3s,2029
|
1266
|
+
vellum/utils/templating/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1267
|
+
vellum/utils/templating/tests/test_custom_filters.py,sha256=mkJwc7t1gE13SKgPxhF-lN_m2XGCkphCB9Te81dGekI,532
|
1263
1268
|
vellum/utils/typing.py,sha256=wx_daFqD69cYkuJTVnvNrpjhqC3uuhbnyJ9_bIwC9OU,327
|
1264
1269
|
vellum/utils/uuid.py,sha256=Ch6wWRgwICxLxJCTl5iE3EdRlZj2zADR-zUMUtjcMWM,214
|
1265
1270
|
vellum/version.py,sha256=jq-1PlAYxN9AXuaZqbYk9ak27SgE2lw9Ia5gx1b1gVI,76
|
@@ -1279,7 +1284,7 @@ vellum/workflows/emitters/base.py,sha256=D5SADKIvnbgKwIBgYm77jaqvpo1o0rz4MmuX_mu
|
|
1279
1284
|
vellum/workflows/environment/__init__.py,sha256=wGHslgSEZ7Octe4C-hNtl84EFelNimgmWQoi7px4-uw,71
|
1280
1285
|
vellum/workflows/environment/environment.py,sha256=0XhJPBs8YASWmvPx8bkSdCvcbDmzpe9stfs2kgtNDRU,296
|
1281
1286
|
vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
|
1282
|
-
vellum/workflows/errors/types.py,sha256=
|
1287
|
+
vellum/workflows/errors/types.py,sha256=tVW7Il9zalnwWzdoDLqYPIvRTOhXIv6FPORZAbU7n5Q,3640
|
1283
1288
|
vellum/workflows/events/__init__.py,sha256=6pxxceJo2dcaRkWtkDAYlUQZ-PHBQSZytIoyuUK48Qw,759
|
1284
1289
|
vellum/workflows/events/node.py,sha256=uHT6If0esgZ3nLjrjmUPTKf3qbjGhoV_x5YKpjDBDcU,5280
|
1285
1290
|
vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1345,8 +1350,8 @@ vellum/workflows/nodes/core/retry_node/node.py,sha256=loIZJUcCsN0y3mr4pw7f23l4eD
|
|
1345
1350
|
vellum/workflows/nodes/core/retry_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1346
1351
|
vellum/workflows/nodes/core/retry_node/tests/test_node.py,sha256=RM_OHwxrHwyxvlQQBJPqVBxpedFuWQ9h2-Xa3kP75sc,4399
|
1347
1352
|
vellum/workflows/nodes/core/templating_node/__init__.py,sha256=GmyuYo81_A1_Bz6id69ozVFS6FKiuDsZTiA3I6MaL2U,70
|
1348
|
-
vellum/workflows/nodes/core/templating_node/node.py,sha256=
|
1349
|
-
vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256
|
1353
|
+
vellum/workflows/nodes/core/templating_node/node.py,sha256=Vqlg4L-5XNuIdbZKQe-GEYqTIV7iXNjLO7QIRgz4ujc,3722
|
1354
|
+
vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py,sha256=-53Vh0YOnk8sAcmZ7drdKgBcSCj68DYts5-jFNNsPRE,6755
|
1350
1355
|
vellum/workflows/nodes/core/try_node/__init__.py,sha256=JVD4DrldTIqFQQFrubs9KtWCCc0YCAc7Fzol5ZWIWeM,56
|
1351
1356
|
vellum/workflows/nodes/core/try_node/node.py,sha256=bk2uhYUl10yaPJlOBWxiL7igTUrL_7mM9S2nvsdWB68,4242
|
1352
1357
|
vellum/workflows/nodes/core/try_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1371,12 +1376,12 @@ vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=eqdqbKNRWVMD
|
|
1371
1376
|
vellum/workflows/nodes/displayable/bases/types.py,sha256=C37B2Qh2YP7s7pUjd-EYKc2Zl1TbnCgI_mENuUSb8bo,1706
|
1372
1377
|
vellum/workflows/nodes/displayable/bases/utils.py,sha256=ckMUenSsNkiYmSw6FmjSMHYaCk8Y8_sUjL6lkFFEqts,5412
|
1373
1378
|
vellum/workflows/nodes/displayable/code_execution_node/__init__.py,sha256=0FLWMMktpzSnmBMizQglBpcPrP80fzVsoJwJgf822Cg,76
|
1374
|
-
vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=
|
1379
|
+
vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=_yrQn_uLwy8zVW1RjFMoeomDEsbpbbKK7ifMGEBfNlk,9120
|
1375
1380
|
vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1376
1381
|
vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1377
1382
|
vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sha256=5QsbmkzSlSbcbWTG_JmIqcP-JNJzOPTKxGzdHos19W4,79
|
1378
|
-
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=
|
1379
|
-
vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=
|
1383
|
+
vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=5WHsW_uEKDn1ukM9_O2FsGCYELfONz-2h_kYnNRNYHE,18333
|
1384
|
+
vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=rdWD1wtxPKHbdHRHEdTeRMSJi9sgAm2t0FqeAWuQHlQ,4534
|
1380
1385
|
vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
|
1381
1386
|
vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=Qjfl33gZ3JEgxBA1EgzSUebboGvsARthIxxcQyvx5Gg,1152
|
1382
1387
|
vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
|
@@ -1412,7 +1417,7 @@ vellum/workflows/nodes/experimental/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
|
|
1412
1417
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
|
1413
1418
|
vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py,sha256=1EGeiaT-Zoo6pttQFKKBcdf3dmhAbjKGaErYD5FFwlc,10185
|
1414
1419
|
vellum/workflows/nodes/mocks.py,sha256=gvM2tyoe-V84jFbFdhQsyGAPyQBzmjn_CkhT_yxccgY,499
|
1415
|
-
vellum/workflows/nodes/utils.py,sha256=
|
1420
|
+
vellum/workflows/nodes/utils.py,sha256=YRj3qIz6--N6CuDiKalsWpBmUR6z7WcRhqtLxoenDZE,4354
|
1416
1421
|
vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
|
1417
1422
|
vellum/workflows/outputs/base.py,sha256=RPlkKwVml6Ln8-K7kcpRl8-T-0OmB6css_UaKJdjAA8,8581
|
1418
1423
|
vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
|
@@ -1437,7 +1442,7 @@ vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8v
|
|
1437
1442
|
vellum/workflows/runner/runner.py,sha256=eY4axSyxotT_NHB3CYFA1hDSoM-eY4k3Gq5NEe7dpQw,29208
|
1438
1443
|
vellum/workflows/sandbox.py,sha256=GVJzVjMuYzOBnSrboB0_6MMRZWBluAyQ2o7syeaeBd0,2235
|
1439
1444
|
vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
|
1440
|
-
vellum/workflows/state/base.py,sha256=
|
1445
|
+
vellum/workflows/state/base.py,sha256=Vkhneko3VlQrPsMLU1PYSzXU_W1u7_AraJsghiv5O-4,15512
|
1441
1446
|
vellum/workflows/state/context.py,sha256=80b7j11AuG6engdur-AH0dUPnbwu8QyzF_-crWmvUvI,2588
|
1442
1447
|
vellum/workflows/state/encoder.py,sha256=WdUidpOaBDx5lilJl8V8McFDHQYiCLCJR9dmktdzdZY,1836
|
1443
1448
|
vellum/workflows/state/store.py,sha256=VYGBQgN1bpd1as5eGiouV_7scg8QsRs4_1aqZAGIsRQ,793
|
@@ -1468,8 +1473,8 @@ vellum/workflows/workflows/base.py,sha256=tBivLLLPtMyMi2Bd5WjbwQ2_zZFpG8rNfEidfQ
|
|
1468
1473
|
vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
|
1469
1474
|
vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1470
1475
|
vellum/workflows/workflows/tests/test_base_workflow.py,sha256=dz5F3DuGOk9qUMjmNd-GdEE3320G5ko5nJ6J0QJyVcY,2659
|
1471
|
-
vellum_ai-0.14.
|
1472
|
-
vellum_ai-0.14.
|
1473
|
-
vellum_ai-0.14.
|
1474
|
-
vellum_ai-0.14.
|
1475
|
-
vellum_ai-0.14.
|
1476
|
+
vellum_ai-0.14.2.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
|
1477
|
+
vellum_ai-0.14.2.dist-info/METADATA,sha256=w083H2Gds-z_b4DPwlYGdnCjD-UXv1q_3CqQAZtSLvI,5407
|
1478
|
+
vellum_ai-0.14.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
1479
|
+
vellum_ai-0.14.2.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
|
1480
|
+
vellum_ai-0.14.2.dist-info/RECORD,,
|
vellum_cli/pull.py
CHANGED
@@ -2,14 +2,14 @@ import io
|
|
2
2
|
import json
|
3
3
|
import os
|
4
4
|
from pathlib import Path
|
5
|
-
from uuid import UUID
|
6
5
|
import zipfile
|
7
|
-
from typing import Optional
|
6
|
+
from typing import Optional
|
8
7
|
|
9
8
|
from dotenv import load_dotenv
|
10
9
|
from pydash import snake_case
|
11
10
|
|
12
11
|
from vellum.client.core.pydantic_utilities import UniversalBaseModel
|
12
|
+
from vellum.utils.uuid import is_valid_uuid
|
13
13
|
from vellum.workflows.vellum_client import create_vellum_client
|
14
14
|
from vellum_cli.config import VellumCliConfig, WorkflowConfig, load_vellum_cli_config
|
15
15
|
from vellum_cli.logger import load_cli_logger
|
@@ -18,14 +18,6 @@ ERROR_LOG_FILE_NAME = "error.log"
|
|
18
18
|
METADATA_FILE_NAME = "metadata.json"
|
19
19
|
|
20
20
|
|
21
|
-
def _is_valid_uuid(val: Union[str, UUID, None]) -> bool:
|
22
|
-
try:
|
23
|
-
UUID(str(val))
|
24
|
-
return True
|
25
|
-
except (ValueError, TypeError):
|
26
|
-
return False
|
27
|
-
|
28
|
-
|
29
21
|
class WorkflowConfigResolutionResult(UniversalBaseModel):
|
30
22
|
workflow_config: Optional[WorkflowConfig] = None
|
31
23
|
pk: Optional[str] = None
|
@@ -88,7 +80,7 @@ def _resolve_workflow_config(
|
|
88
80
|
elif workflow_deployment:
|
89
81
|
module = (
|
90
82
|
f"workflow_{workflow_deployment.split('-')[0]}"
|
91
|
-
if
|
83
|
+
if is_valid_uuid(workflow_deployment)
|
92
84
|
else snake_case(workflow_deployment)
|
93
85
|
)
|
94
86
|
workflow_config = WorkflowConfig(
|
@@ -31,6 +31,20 @@ WorkflowInputsDisplayType = TypeVar("WorkflowInputsDisplayType", bound=WorkflowI
|
|
31
31
|
WorkflowInputsDisplayOverridesType = TypeVar("WorkflowInputsDisplayOverridesType", bound=WorkflowInputsDisplayOverrides)
|
32
32
|
|
33
33
|
|
34
|
+
@dataclass
|
35
|
+
class StateValueDisplayOverrides:
|
36
|
+
id: UUID
|
37
|
+
|
38
|
+
|
39
|
+
@dataclass
|
40
|
+
class StateValueDisplay(StateValueDisplayOverrides):
|
41
|
+
pass
|
42
|
+
|
43
|
+
|
44
|
+
StateValueDisplayType = TypeVar("StateValueDisplayType", bound=StateValueDisplay)
|
45
|
+
StateValueDisplayOverridesType = TypeVar("StateValueDisplayOverridesType", bound=StateValueDisplayOverrides)
|
46
|
+
|
47
|
+
|
34
48
|
@dataclass
|
35
49
|
class EdgeDisplayOverrides:
|
36
50
|
id: UUID
|
@@ -34,6 +34,7 @@ from vellum.workflows.references import OutputReference
|
|
34
34
|
from vellum.workflows.references.constant import ConstantValueReference
|
35
35
|
from vellum.workflows.references.execution_count import ExecutionCountReference
|
36
36
|
from vellum.workflows.references.lazy import LazyReference
|
37
|
+
from vellum.workflows.references.state_value import StateValueReference
|
37
38
|
from vellum.workflows.references.vellum_secret import VellumSecretReference
|
38
39
|
from vellum.workflows.references.workflow_input import WorkflowInputReference
|
39
40
|
from vellum.workflows.types.core import JsonArray, JsonObject
|
@@ -44,6 +45,7 @@ from vellum.workflows.utils.uuids import uuid4_from_hash
|
|
44
45
|
from vellum.workflows.utils.vellum_variables import primitive_type_to_vellum_variable_type
|
45
46
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
46
47
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay, PortDisplay, PortDisplayOverrides
|
48
|
+
from vellum_ee.workflows.display.utils.expressions import get_child_descriptor
|
47
49
|
from vellum_ee.workflows.display.utils.vellum import convert_descriptor_to_operator, primitive_to_vellum_value
|
48
50
|
from vellum_ee.workflows.display.vellum import CodeResourceDefinition, GenericNodeDisplayData
|
49
51
|
|
@@ -343,28 +345,8 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
343
345
|
return self.serialize_value(display_context, value._value)
|
344
346
|
|
345
347
|
if isinstance(value, LazyReference):
|
346
|
-
|
347
|
-
|
348
|
-
if len(reference_parts) < 3:
|
349
|
-
raise Exception(
|
350
|
-
f"Failed to parse lazy reference: {value._get}. Only Node Output references are supported."
|
351
|
-
)
|
352
|
-
|
353
|
-
output_name = reference_parts[-1]
|
354
|
-
nested_class_name = reference_parts[-2]
|
355
|
-
if nested_class_name != "Outputs":
|
356
|
-
raise Exception(
|
357
|
-
f"Failed to parse lazy reference: {value._get}. Outputs are the only node reference supported."
|
358
|
-
)
|
359
|
-
|
360
|
-
node_class_name = ".".join(reference_parts[:-2])
|
361
|
-
for node in display_context.node_displays.keys():
|
362
|
-
if node.__name__ == node_class_name:
|
363
|
-
return self.serialize_value(display_context, getattr(node.Outputs, output_name))
|
364
|
-
|
365
|
-
raise NotImplementedError(f"Failed to find a LazyReference for: {value._get}")
|
366
|
-
|
367
|
-
return self.serialize_value(display_context, value._get())
|
348
|
+
child_descriptor = get_child_descriptor(value, display_context)
|
349
|
+
return self.serialize_value(display_context, child_descriptor)
|
368
350
|
|
369
351
|
if isinstance(value, WorkflowInputReference):
|
370
352
|
workflow_input_display = display_context.global_workflow_input_displays[value]
|
@@ -373,6 +355,13 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
|
|
373
355
|
"input_variable_id": str(workflow_input_display.id),
|
374
356
|
}
|
375
357
|
|
358
|
+
if isinstance(value, StateValueReference):
|
359
|
+
state_value_display = display_context.global_state_value_displays[value]
|
360
|
+
return {
|
361
|
+
"type": "STATE_VALUE",
|
362
|
+
"state_variable_id": str(state_value_display.id),
|
363
|
+
}
|
364
|
+
|
376
365
|
if isinstance(value, OutputReference):
|
377
366
|
upstream_node, output_display = display_context.global_node_output_displays[value]
|
378
367
|
upstream_node_display = display_context.global_node_displays[upstream_node]
|
@@ -0,0 +1,52 @@
|
|
1
|
+
from vellum.workflows import BaseWorkflow
|
2
|
+
from vellum.workflows.nodes import BaseNode
|
3
|
+
from vellum.workflows.nodes.displayable.inline_prompt_node.node import InlinePromptNode
|
4
|
+
from vellum.workflows.references.lazy import LazyReference
|
5
|
+
from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
|
6
|
+
from vellum_ee.workflows.display.workflows.vellum_workflow_display import VellumWorkflowDisplay
|
7
|
+
|
8
|
+
|
9
|
+
def test_serialize_node__lazy_reference_in_prompt_inputs():
|
10
|
+
# GIVEN a prompt node with a lazy reference in the prompt inputs
|
11
|
+
class LazyReferencePromptNode(InlinePromptNode):
|
12
|
+
prompt_inputs = {"attr": LazyReference[str]("OtherNode.Outputs.result")}
|
13
|
+
blocks = []
|
14
|
+
ml_model = "gpt-4o"
|
15
|
+
|
16
|
+
class OtherNode(BaseNode):
|
17
|
+
class Outputs:
|
18
|
+
result: str
|
19
|
+
|
20
|
+
# AND a workflow with both nodes
|
21
|
+
class Workflow(BaseWorkflow):
|
22
|
+
graph = LazyReferencePromptNode >> OtherNode
|
23
|
+
|
24
|
+
# WHEN the workflow is serialized
|
25
|
+
workflow_display = get_workflow_display(base_display_class=VellumWorkflowDisplay, workflow_class=Workflow)
|
26
|
+
serialized_workflow: dict = workflow_display.serialize()
|
27
|
+
|
28
|
+
# THEN the node should properly serialize the attribute reference
|
29
|
+
lazy_reference_node = next(
|
30
|
+
node
|
31
|
+
for node in serialized_workflow["workflow_raw_data"]["nodes"]
|
32
|
+
if node["id"] == str(LazyReferencePromptNode.__id__)
|
33
|
+
)
|
34
|
+
|
35
|
+
assert lazy_reference_node["inputs"] == [
|
36
|
+
{
|
37
|
+
"id": "fba6a4d5-835a-4e99-afb7-f6a4aed15110",
|
38
|
+
"key": "attr",
|
39
|
+
"value": {
|
40
|
+
"combinator": "OR",
|
41
|
+
"rules": [
|
42
|
+
{
|
43
|
+
"type": "NODE_OUTPUT",
|
44
|
+
"data": {
|
45
|
+
"node_id": str(OtherNode.__id__),
|
46
|
+
"output_id": "7f377cb8-4eca-4f1c-9239-9925f9495d84",
|
47
|
+
},
|
48
|
+
}
|
49
|
+
],
|
50
|
+
},
|
51
|
+
}
|
52
|
+
]
|
@@ -4,10 +4,11 @@ from typing import Any, Dict, Tuple, Type
|
|
4
4
|
|
5
5
|
from vellum.workflows.nodes.bases.base import BaseNode
|
6
6
|
from vellum.workflows.references.output import OutputReference
|
7
|
+
from vellum.workflows.references.state_value import StateValueReference
|
7
8
|
from vellum.workflows.references.workflow_input import WorkflowInputReference
|
8
9
|
from vellum.workflows.types.core import JsonObject
|
9
10
|
from vellum.workflows.types.generics import NodeType
|
10
|
-
from vellum_ee.workflows.display.base import WorkflowInputsDisplayType
|
11
|
+
from vellum_ee.workflows.display.base import StateValueDisplayType, WorkflowInputsDisplayType
|
11
12
|
from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
|
12
13
|
from vellum_ee.workflows.display.nodes.get_node_display_class import get_node_display_class
|
13
14
|
from vellum_ee.workflows.display.nodes.types import NodeOutputDisplay
|
@@ -22,6 +23,7 @@ def serialize_node():
|
|
22
23
|
node_class: Type[NodeType],
|
23
24
|
base_class: type[BaseNodeDisplay[Any]] = BaseNodeDisplay,
|
24
25
|
global_workflow_input_displays: Dict[WorkflowInputReference, WorkflowInputsDisplayType] = {},
|
26
|
+
global_state_value_displays: Dict[StateValueReference, StateValueDisplayType] = {},
|
25
27
|
global_node_displays: Dict[Type[BaseNode], NodeDisplayType] = {},
|
26
28
|
global_node_output_displays: Dict[OutputReference, Tuple[Type[BaseNode], NodeOutputDisplay]] = {},
|
27
29
|
) -> JsonObject:
|
@@ -37,6 +39,7 @@ def serialize_node():
|
|
37
39
|
),
|
38
40
|
node_displays={node_class: node_display},
|
39
41
|
global_workflow_input_displays=global_workflow_input_displays,
|
42
|
+
global_state_value_displays=global_state_value_displays,
|
40
43
|
global_node_displays=global_node_displays,
|
41
44
|
global_node_output_displays=global_node_output_displays,
|
42
45
|
)
|
@@ -21,6 +21,7 @@ def test_serialize_workflow_with_filepath():
|
|
21
21
|
assert serialized_workflow.keys() == {
|
22
22
|
"workflow_raw_data",
|
23
23
|
"input_variables",
|
24
|
+
"state_variables",
|
24
25
|
"output_variables",
|
25
26
|
}
|
26
27
|
|
@@ -261,6 +262,7 @@ def test_serialize_workflow_with_code():
|
|
261
262
|
assert serialized_workflow.keys() == {
|
262
263
|
"workflow_raw_data",
|
263
264
|
"input_variables",
|
265
|
+
"state_variables",
|
264
266
|
"output_variables",
|
265
267
|
}
|
266
268
|
|
@@ -489,6 +491,7 @@ def test_serialize_workflow__try_wrapped():
|
|
489
491
|
assert serialized_workflow.keys() == {
|
490
492
|
"workflow_raw_data",
|
491
493
|
"input_variables",
|
494
|
+
"state_variables",
|
492
495
|
"output_variables",
|
493
496
|
}
|
494
497
|
|
@@ -37,6 +37,7 @@ def test_serialize_workflow():
|
|
37
37
|
assert serialized_workflow.keys() == {
|
38
38
|
"workflow_raw_data",
|
39
39
|
"input_variables",
|
40
|
+
"state_variables",
|
40
41
|
"output_variables",
|
41
42
|
}
|
42
43
|
|
@@ -785,6 +786,7 @@ def test_conditional_node_serialize_all_operators_with_lhs_and_rhs(descriptor, o
|
|
785
786
|
assert serialized_workflow.keys() == {
|
786
787
|
"workflow_raw_data",
|
787
788
|
"input_variables",
|
789
|
+
"state_variables",
|
788
790
|
"output_variables",
|
789
791
|
}
|
790
792
|
|
@@ -890,6 +892,7 @@ def test_conditional_node_serialize_all_operators_with_expression(descriptor, op
|
|
890
892
|
assert serialized_workflow.keys() == {
|
891
893
|
"workflow_raw_data",
|
892
894
|
"input_variables",
|
895
|
+
"state_variables",
|
893
896
|
"output_variables",
|
894
897
|
}
|
895
898
|
|
@@ -982,6 +985,7 @@ def test_conditional_node_serialize_all_operators_with_value_and_start_and_end(d
|
|
982
985
|
assert serialized_workflow.keys() == {
|
983
986
|
"workflow_raw_data",
|
984
987
|
"input_variables",
|
988
|
+
"state_variables",
|
985
989
|
"output_variables",
|
986
990
|
}
|
987
991
|
|