vellum-ai 0.10.6__py3-none-any.whl → 0.10.7__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 (32) hide show
  1. vellum/__init__.py +2 -0
  2. vellum/client/README.md +7 -52
  3. vellum/client/__init__.py +16 -136
  4. vellum/client/core/client_wrapper.py +1 -1
  5. vellum/client/resources/ad_hoc/client.py +14 -104
  6. vellum/client/resources/metric_definitions/client.py +113 -0
  7. vellum/client/resources/test_suites/client.py +8 -16
  8. vellum/client/resources/workflows/client.py +0 -32
  9. vellum/client/types/__init__.py +2 -0
  10. vellum/client/types/metric_definition_history_item.py +39 -0
  11. vellum/types/metric_definition_history_item.py +3 -0
  12. vellum/workflows/events/node.py +36 -3
  13. vellum/workflows/events/tests/test_event.py +89 -9
  14. vellum/workflows/nodes/displayable/conditional_node/node.py +2 -2
  15. vellum/workflows/ports/node_ports.py +2 -2
  16. vellum/workflows/ports/port.py +14 -0
  17. vellum/workflows/references/__init__.py +2 -0
  18. vellum/workflows/runner/runner.py +6 -7
  19. vellum/workflows/runner/types.py +1 -3
  20. vellum/workflows/state/encoder.py +2 -1
  21. vellum/workflows/types/tests/test_utils.py +6 -3
  22. vellum/workflows/types/utils.py +3 -0
  23. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/METADATA +1 -1
  24. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/RECORD +32 -30
  25. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +4 -2
  26. vellum_ee/workflows/display/nodes/vellum/map_node.py +20 -48
  27. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +5 -16
  28. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +11 -8
  29. vellum_ee/workflows/display/utils/vellum.py +3 -2
  30. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/LICENSE +0 -0
  31. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/WHEEL +0 -0
  32. {vellum_ai-0.10.6.dist-info → vellum_ai-0.10.7.dist-info}/entry_points.txt +0 -0
@@ -26,11 +26,11 @@ vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=jQgm0dsQAlxZ0tYR_cv5
26
26
  vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=awjKut2m7HoEmqewRfdR1dw8ufA0Q5mVG8V8jhaHlKw,8572
27
27
  vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=bAtSJpcKyJW-VLvBEr92lKPpdPH1L_IA02qg78U1uFA,3403
28
28
  vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=v9g263oEtyL6ejp5ZfLrVfrcqU9gZwzuUI4yBuOScbI,12983
29
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=kR_z9ichhBtK_CLetqGjewmFmIFalfSiG2tQlM2T4yM,2772
29
+ vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=2HsghUtPBOQ-4sN-2jDOnbEuIwcsilDKO3f2o1WlYgw,2897
30
30
  vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=lr4d2uV3Lq8d22b5LCKbWMz_nU7Q0fvffcNQ7zx5Ygc,2163
31
31
  vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=0lX14iOxZhdKSXE6mzBAIw480nNJD_Sz4qo7WZAXYfQ,7391
32
32
  vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=rZmYQSCtm7bdiJ-ZYMyPpFnEwbNr85a45PXqESvLyus,4696
33
- vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=TvUSmq5s2kFqkex8Z5uB65HT2U2MUYmRteAuumR4ySY,4656
33
+ vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=rjsXrUt2PjD1HOS1xDVPn5ThTImsI048hVh_3A_G-14,3588
34
34
  vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=7YmVRNSI6RkK1rvg0b0zDeW2nnBIKir0ERzqqtT08I4,2218
35
35
  vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=gjYEp7DdTtdH-uJvVbMTOEoj8KokB5LQBR_JJulFHj4,1121
36
36
  vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=LbxpCKr4Ys9A-xtWU119Ry8IP7W3GGinPFWt9QAZAi8,3111
@@ -45,10 +45,10 @@ vellum_ee/workflows/display/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
45
45
  vellum_ee/workflows/display/tests/workflow_serialization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=bLdJ0VVwAPDRvwaJMiMf0fRCuIWvvuRjAxKzddGPFyA,16871
47
47
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=0McMPIPnIwE8iGh7fzFZL3dc6Q7NCQ_wUVFpl14YATo,22846
48
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=uGTR4g1epQOBKcS4RezFH1Py7-NWFvsuuRq52u2A2o4,54260
48
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=AOM1lN7_Y1wmorBpyF6Z2VVgrPUiFaePaGjauDluAsc,54187
49
49
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=IfO5Hmr1W41X2IVq-i6pG7BuevBPZU_s6ASTNVVVkdg,8298
50
50
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=c97A2tFWnNUXi3T4RLsvf3nZkUTPiGSC6XD_x1-ZK_U,22270
51
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=0560oLL81CJu2oowqlchloYrWz5MUF-Eih2WzDTFvvM,14981
51
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=Bx6tpFoW_7KrlsuzeEgXgQxa6CHJsQKwFZjilJsTivg,15451
52
52
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=NUe91w_AHNJmxDaP_51wLuQoaHKgwkq83OXy0fHNsK0,9997
53
53
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=hIpamI86C9tfL0aOPeCRgVGCklQ1WB4XjRb7esSmgas,9493
54
54
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=xK-3iQ05ZItncX6AQSzf4uUn0K2ObBm40wbtvGfgnkQ,12708
@@ -60,18 +60,18 @@ vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
60
60
  vellum_ee/workflows/display/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
61
  vellum_ee/workflows/display/utils/tests/test_uuids.py,sha256=ItjROhaPns8_mlvD17LIBwZKvhe2l0dXEd5oL-JiY64,448
62
62
  vellum_ee/workflows/display/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
63
- vellum_ee/workflows/display/utils/vellum.py,sha256=NbjS_dKEgrwjV71xgxgsVnAn-PTZ67SBPgXMMnTbvfg,5133
63
+ vellum_ee/workflows/display/utils/vellum.py,sha256=PYxIFv0H_8byUZkrs4jWPpQ6ACElImOBU7FHZjKKXsI,5278
64
64
  vellum_ee/workflows/display/vellum.py,sha256=_-lLRZsEitt8fdUID62aiXptWa8rJhyqgL4uy1gDmc4,8783
65
65
  vellum_ee/workflows/display/workflows/__init__.py,sha256=kapXsC67VJcgSuiBMa86FdePG5A9kMB5Pi4Uy1O2ob4,207
66
66
  vellum_ee/workflows/display/workflows/base_workflow_display.py,sha256=HkakkrNgVFoHlUP7yHlQjHOvii3CZ90iyU1062PfoW4,12819
67
67
  vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py,sha256=EN6gXo_uNRrQZtPjenSZHOge2ztz5J9k5tpsmfGulVY,1160
68
68
  vellum_ee/workflows/display/workflows/vellum_workflow_display.py,sha256=RxSnupMr7lEAAjiyTC1BGJzH4OtgSi63_-LwE7bil3o,16843
69
- vellum/__init__.py,sha256=xiYriEQZVk6SzItzQNOMpGoeO2yFTBGrEJZNHJesm8E,34416
70
- vellum/client/README.md,sha256=8cKUE1kSuhz-U87n3-clA7o9_zlP0Avr4qKbvRbdT2k,5984
71
- vellum/client/__init__.py,sha256=Fu-wzw_MiTtqAQOFhcFcrLKAPkEfUhf6K4ZuFspfKUw,115305
69
+ vellum/__init__.py,sha256=67DJaPyfV8hWJkx4pBssBAnlPm3jQMl8VqIn5TtBP3Q,34484
70
+ vellum/client/README.md,sha256=JkCJjmMZl4jrPj46pkmL9dpK4gSzQQmP5I7z4aME4LY,4749
71
+ vellum/client/__init__.py,sha256=o4m7iRZWEV8rP3GkdaztHAjNmjxjWERlarviFoHzuKI,110927
72
72
  vellum/client/core/__init__.py,sha256=SQ85PF84B9MuKnBwHNHWemSGuy-g_515gFYNFhvEE0I,1438
73
73
  vellum/client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
74
- vellum/client/core/client_wrapper.py,sha256=_3h16IFZNO44Mk4A5auvJ9iLW940O2VFwfgnE-j4910,1890
74
+ vellum/client/core/client_wrapper.py,sha256=c9d8t0gg4sHCfhz528mHO5hti3rrAmFRPArvRV33Lkk,1890
75
75
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
76
76
  vellum/client/core/file.py,sha256=X9IbmkZmB2bB_DpmZAO3crWdXagOakAyn6UCOCImCPg,2322
77
77
  vellum/client/core/http_client.py,sha256=R0pQpCppnEtxccGvXl4uJ76s7ro_65Fo_erlNNLp_AI,19228
@@ -89,7 +89,7 @@ vellum/client/errors/internal_server_error.py,sha256=8USCagXyJJ1MOm9snpcXIUt6eNX
89
89
  vellum/client/errors/not_found_error.py,sha256=tBVCeBC8n3C811WHRj_n-hs3h8MqwR5gp0vLiobk7W8,262
90
90
  vellum/client/resources/__init__.py,sha256=2B6Oim7PG4IxSUNSzDY1EruQHsaZ7konj3j_WSTydCs,1378
91
91
  vellum/client/resources/ad_hoc/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
92
- vellum/client/resources/ad_hoc/client.py,sha256=6rsCw-oaq35-DVrb7NTyptc2WU9L6Eka99H3fNB0jA8,17749
92
+ vellum/client/resources/ad_hoc/client.py,sha256=HR5NwH12JPlaKBKKXtO9eiEe9_KTH11El3dbpG9nLuU,14403
93
93
  vellum/client/resources/container_images/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
94
94
  vellum/client/resources/container_images/client.py,sha256=jK1n-NFsdBKCeEKh-EIqvw7R8AG9PP4GxxcoH9F0GYs,15463
95
95
  vellum/client/resources/deployments/__init__.py,sha256=m64MNuPx3qVazOnTNwOY8oEeDrAkNwMJvUEe5xoMDvs,239
@@ -108,7 +108,7 @@ vellum/client/resources/folder_entities/client.py,sha256=ep5dnfJmEuEyrOSUftEVwKa
108
108
  vellum/client/resources/folder_entities/types/__init__.py,sha256=cHabrupjC-HL3kj-UZ9WdVzqHoQHCu6QsLFB3wlOs7k,212
109
109
  vellum/client/resources/folder_entities/types/folder_entities_list_request_entity_status.py,sha256=nK9b9fRSeCfjn2V2Hifl1IbhFeVsNkoeXJ8rCAPADFg,183
110
110
  vellum/client/resources/metric_definitions/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
111
- vellum/client/resources/metric_definitions/client.py,sha256=w-2IQ-ILDNqws6bWjZj6V9G86qw5zCVLXKq4j3Nebzw,5924
111
+ vellum/client/resources/metric_definitions/client.py,sha256=T3pS0tn2M1e-kdURLemdftGlVGfmxSozcV-SpJN5zvE,10100
112
112
  vellum/client/resources/ml_models/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
113
113
  vellum/client/resources/ml_models/client.py,sha256=XIYapTEY6GRNr7V0Kjy5bEeKmrhv9ul8qlQY2A5LFqQ,3872
114
114
  vellum/client/resources/sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
@@ -116,7 +116,7 @@ vellum/client/resources/sandboxes/client.py,sha256=i-6DHap5k6gFcYS-kWI8ayJFVZxb-
116
116
  vellum/client/resources/test_suite_runs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
117
117
  vellum/client/resources/test_suite_runs/client.py,sha256=gCF1ewlUrCsZhnXYOYqdUuD2twTrQ-u95xOgvRy7WAw,15130
118
118
  vellum/client/resources/test_suites/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
119
- vellum/client/resources/test_suites/client.py,sha256=XOSXVzgcnyescVX02aKdRzLSxY32xS0ULXbwc9XFAE8,25063
119
+ vellum/client/resources/test_suites/client.py,sha256=UDlFSHLdUFbZrjSq-uk6LA5O9SqgvAsQyrP8PpCeEBI,24659
120
120
  vellum/client/resources/workflow_deployments/__init__.py,sha256=_duH6m1CDWcfqX6DTBNjO3ar4Xrl-f5PozMaTcT4Kow,251
121
121
  vellum/client/resources/workflow_deployments/client.py,sha256=H9MhGYZVx1WLHE5j83Sl5HmX-CF6aJFCwQAGDG1n2oI,27149
122
122
  vellum/client/resources/workflow_deployments/types/__init__.py,sha256=W7DKJ1nduwhRckYLvH7wHLdaGH9MXHTZkxwG7FdTngY,340
@@ -125,12 +125,12 @@ vellum/client/resources/workflow_deployments/types/workflow_deployments_list_req
125
125
  vellum/client/resources/workflow_sandboxes/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
126
126
  vellum/client/resources/workflow_sandboxes/client.py,sha256=3wVQxkjrJ5bIS8fB5FpKXCP2dX38299ghWrJ8YmXxwQ,7435
127
127
  vellum/client/resources/workflows/__init__.py,sha256=Z4xi8Nxd9U4t35FQSepTt1p-ns0X1xtdNs168kUcuBk,153
128
- vellum/client/resources/workflows/client.py,sha256=SYPMtcDF9aVhrbzmlnGLqdx8l7Hau2QpZTTE-R8TwKQ,10853
128
+ vellum/client/resources/workflows/client.py,sha256=5wqDiO1xYnYxNmbaEE1OTnUn3YXKpruYqF3taCjLRDI,10263
129
129
  vellum/client/resources/workflows/types/__init__.py,sha256=-uFca4ypncAOvfsg6sjD-5C9zWdA5qNvU6m675GphVg,177
130
130
  vellum/client/resources/workflows/types/workflows_pull_request_format.py,sha256=dOWE_jnDnniIJLoeseeCms23aklghyBkoPmBFzcqqZk,165
131
131
  vellum/client/resources/workspace_secrets/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
132
132
  vellum/client/resources/workspace_secrets/client.py,sha256=h7UzXLyTttPq1t-JZGMg1BWxypxJvBGUdqg7KGT7MK4,8027
133
- vellum/client/types/__init__.py,sha256=fY4a4kaOhRGIChnfHFKrEAO-XCEF6m4zfTZNYnH8d24,51959
133
+ vellum/client/types/__init__.py,sha256=l-m0JRpHj7tm8Kzsr7HOIK_O9XnGOVWfQanEOE4Z_yo,52066
134
134
  vellum/client/types/ad_hoc_execute_prompt_event.py,sha256=bCjujA2XsOgyF3bRZbcEqV2rOIymRgsLoIRtZpB14xg,607
135
135
  vellum/client/types/ad_hoc_expand_meta.py,sha256=1gv-NCsy_6xBYupLvZH979yf2VMdxAU-l0y0ynMKZaw,1331
136
136
  vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py,sha256=Bfvf1d_dkmshxRACVM5vcxbH_7AQY23RmrrnPc0ytYY,939
@@ -316,6 +316,7 @@ vellum/client/types/metadata_filter_rule_combinator.py,sha256=3Vpp1Mnv3As7efkxWT
316
316
  vellum/client/types/metadata_filter_rule_request.py,sha256=Pcs0TsU7CRnsEUoH0DWb-c9DTP2UW67lJKXlsTLXV48,1135
317
317
  vellum/client/types/metadata_filters_request.py,sha256=Yaiu7rkcrV2bCFk6HrZSjuF6V-6JYjZTpzxv7_MFe70,345
318
318
  vellum/client/types/metric_definition_execution.py,sha256=xwr5VJTo32k77isUtz2uzHGmtRm6K_VyOlTCbJr0JNU,672
319
+ vellum/client/types/metric_definition_history_item.py,sha256=oR0m0PG_NGpEBSwJ3n-CFi6TJo3o5Y4D_wfaqpk2VxI,1183
319
320
  vellum/client/types/metric_definition_input.py,sha256=4nmwpPqbeNQYCzLkXCkc-FGV5K2Zfa22xqSUe_L6o5s,331
320
321
  vellum/client/types/metric_node_result.py,sha256=YdKq1DZiBD1RBtjyMejImylv3BqrwY8B_UF4Ij-6_64,660
321
322
  vellum/client/types/ml_model_read.py,sha256=Vr5KjaS2Tca0GXsltfSYQpuyGYpgIahPEFfS6HfFGSo,706
@@ -875,6 +876,7 @@ vellum/types/metadata_filter_rule_combinator.py,sha256=bHx8PgGv5n_3cC-blXV20DKek
875
876
  vellum/types/metadata_filter_rule_request.py,sha256=LULGRo2_1WXc8GbFQioEzB1BfAfcOONwSgrRpwXlQig,166
876
877
  vellum/types/metadata_filters_request.py,sha256=Czs4HD9ibSdtX026v3NMur6L6wKOYYkvd5Em1-UVI2o,162
877
878
  vellum/types/metric_definition_execution.py,sha256=Yx5b1CygziiPLjlZDQF0lVVI7ubRLVJn16vT3N7zmHQ,165
879
+ vellum/types/metric_definition_history_item.py,sha256=OUGYJ9yHc60QiYh_C8-YuA1zHeQ9v5lShdaJ5KEl-1c,168
878
880
  vellum/types/metric_definition_input.py,sha256=TwMwjC_MNiLdodsvT52D7aa_wRY-0kT047flY3sFxII,161
879
881
  vellum/types/metric_node_result.py,sha256=Q_bUgbdRnSP26nEcJ-vZD7k2oLIcThN3JjW9hXTRfZo,156
880
882
  vellum/types/ml_model_read.py,sha256=d_CPwZ3bhXtC8c5jwXkuNVvobDqPI-I_byZ6WnVla1Q,151
@@ -1189,9 +1191,9 @@ vellum/workflows/environment/environment.py,sha256=IwcVSwA51jW1JTN_MAN22UbeAtZhi
1189
1191
  vellum/workflows/errors/__init__.py,sha256=BRyo4hKP2ElS4k1YDu8VdY2VhUZjILtHn2sPFf_d7U0,105
1190
1192
  vellum/workflows/errors/types.py,sha256=YQy6na_iBkqxl9GHKOcin44m8DMRG5KP9oLV1Lpal1M,541
1191
1193
  vellum/workflows/events/__init__.py,sha256=vLwQuykMmbv0izdUvsamouRQKbmKX_r9Poo77jd404w,821
1192
- vellum/workflows/events/node.py,sha256=w5A2MCWD8J-qvdmxBRP4r_c_qz6SK4YLjlsoswrYHc0,3697
1194
+ vellum/workflows/events/node.py,sha256=YQVWrE8LD5IxRTz_e0-0bXMhk3RZ75ZKTvAJZqH8dP0,5270
1193
1195
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1194
- vellum/workflows/events/tests/test_event.py,sha256=UdBfjJFGUh1b0T3x-3IuN1Rg97Be5MViXaMY5tjnTL8,9614
1196
+ vellum/workflows/events/tests/test_event.py,sha256=BbAeTohMdfAdpBea9fbi5nDXX6UQ7xASMv9jNuwOmDU,12704
1195
1197
  vellum/workflows/events/types.py,sha256=2MDqlhBMwFWKso423IGH9ZdsPnmBWGGOIBceW568pnk,2865
1196
1198
  vellum/workflows/events/utils.py,sha256=OwtE8dHOCX01jvLyoS1l18tYQ4ob0YJcUhUorKWLJh0,232
1197
1199
  vellum/workflows/events/workflow.py,sha256=kPjZTh5hzCsSrVKLkXQNwzxhnUp3X4GkFA5veGatGlQ,4353
@@ -1281,7 +1283,7 @@ vellum/workflows/nodes/displayable/code_execution_node/tests/fixtures/main.py,sh
1281
1283
  vellum/workflows/nodes/displayable/code_execution_node/tests/test_code_execution_node.py,sha256=pvkvMOIL94vDP3KUrQh0OF1lELjEFJ6HIDEz5kUqbzo,3377
1282
1284
  vellum/workflows/nodes/displayable/code_execution_node/utils.py,sha256=R0gVJVwn2g3caDr25LBj_mj9JUIbORSS-88MQkvSWQU,215
1283
1285
  vellum/workflows/nodes/displayable/conditional_node/__init__.py,sha256=AS_EIqFdU1F9t8aLmbZU-rLh9ry6LCJ0uj0D8F0L5Uw,72
1284
- vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=0IrCyzLksmYYxDwXQb9_E7E5y1rmxgtmXavfeCzSy04,1026
1286
+ vellum/workflows/nodes/displayable/conditional_node/node.py,sha256=SWfsEQ7G_y3yEnxzMhjtjHF4xZvFdFTds77LrFZHGUU,1020
1285
1287
  vellum/workflows/nodes/displayable/final_output_node/__init__.py,sha256=G7VXM4OWpubvSJtVkGmMNeqgb9GkM7qZT838eL18XU4,72
1286
1288
  vellum/workflows/nodes/displayable/final_output_node/node.py,sha256=iH3ZPOstPku_rg4h97Xz5FMaHWVRCjypaamAFzoJzJ0,1854
1287
1289
  vellum/workflows/nodes/displayable/guardrail_node/__init__.py,sha256=Ab5eXmOoBhyV4dMWdzh32HLUmnPIBEK_zFCT38C4Fng,68
@@ -1306,10 +1308,10 @@ vellum/workflows/nodes/utils.py,sha256=zY0b5WjJtGwVPPLY3ffHUdRREPvyoNwmJDigz5jQR
1306
1308
  vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfvh-ms1QE,94
1307
1309
  vellum/workflows/outputs/base.py,sha256=aOll71CH_g1RaVO1wl038BqpWH70cD3XXSRxzH0YoRA,8002
1308
1310
  vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
1309
- vellum/workflows/ports/node_ports.py,sha256=OMbbwsy6h8wCCycWlll6nfDlEedVjBS7aaYUUYrN1DQ,2763
1310
- vellum/workflows/ports/port.py,sha256=4Y3heJglodE5svzq7om7e-5gqANqnbiqKD3ffQMGLVQ,2463
1311
+ vellum/workflows/ports/node_ports.py,sha256=GCsCejo2THT6Zxx_slegLbd5CvV6iPy9IOZOFjHkCXY,2753
1312
+ vellum/workflows/ports/port.py,sha256=iLYzjIoFk5HWpNyhySf8E1uIuJ3MbAeJGD3yOnnLY70,2843
1311
1313
  vellum/workflows/ports/utils.py,sha256=pEjVNJKw9LhD_cFN-o0MWBOW2ejno7jv26qqzjLxwS4,1662
1312
- vellum/workflows/references/__init__.py,sha256=tKHT1lePWOmDoPkrS7I2kPml_me9-WQwZmCoQzhU6k8,513
1314
+ vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
1313
1315
  vellum/workflows/references/environment_variable.py,sha256=7FFtiKfc4eyVkkfUbhc666OBNDqvFlMoNQEYmGpEVVE,661
1314
1316
  vellum/workflows/references/execution_count.py,sha256=JILHqt8ELdc9ct-WsVCA5X-rKiP1rmJODw-XTf4kpHI,722
1315
1317
  vellum/workflows/references/external_input.py,sha256=ZSnRIjrTwpWuBcInZMvQQzcDgkeZ1r7-C7I4sRpDNy4,1658
@@ -1323,12 +1325,12 @@ vellum/workflows/references/workflow_input.py,sha256=epspVRZ9n_nxoTxI5Am3GDd2fpU
1323
1325
  vellum/workflows/resolvers/__init__.py,sha256=eH6hTvZO4IciDaf_cf7aM2vs-DkBDyJPycOQevJxQnI,82
1324
1326
  vellum/workflows/resolvers/base.py,sha256=WHra9LRtlTuB1jmuNqkfVE2JUgB61Cyntn8f0b0WZg4,411
1325
1327
  vellum/workflows/runner/__init__.py,sha256=i1iG5sAhtpdsrlvwgH6B-m49JsINkiWyPWs8vyT-bqM,72
1326
- vellum/workflows/runner/runner.py,sha256=hjE5n5IKr0mCyiNxtOMpe1mPV13kwhlHtJdMh_yBxBQ,24514
1327
- vellum/workflows/runner/types.py,sha256=mGTTmPjL0-vOVRAnazVuXUTsNoD-X7bFHdhfE1orRBE,583
1328
+ vellum/workflows/runner/runner.py,sha256=MavIvMsEJkFxgZb4sd0-vLFWnVBfZIn4AsfVJcqn1rY,24504
1329
+ vellum/workflows/runner/types.py,sha256=UQIGqOuCDgxEQpoJr4ut3wAnAjp4scDWhNhEhYFyLrw,466
1328
1330
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
1329
1331
  vellum/workflows/state/base.py,sha256=gm4pun9BzYaZbW8I1j7EriUIlAzqQkKT3IBbXPh3FkA,12663
1330
1332
  vellum/workflows/state/context.py,sha256=tpJoOgmx7bmeNrQeOtavOfqTwBbtJCNDqjJ6ssh4gh8,464
1331
- vellum/workflows/state/encoder.py,sha256=jYwC_47gHyMuPRvshWBNJ1SxVXQ1SBCfxvq7iuHjV_g,1688
1333
+ vellum/workflows/state/encoder.py,sha256=kRrqwD0vFCiSRZR3rg8Sjkh8sDEerQQhlvmdSYQAOl8,1741
1332
1334
  vellum/workflows/state/store.py,sha256=VYGBQgN1bpd1as5eGiouV_7scg8QsRs4_1aqZAGIsRQ,793
1333
1335
  vellum/workflows/state/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1334
1336
  vellum/workflows/state/tests/test_state.py,sha256=BQjcdREIK1MPuGhivRUgpynVJLftjEpH9RG3cRKxQEY,3310
@@ -1337,8 +1339,8 @@ vellum/workflows/types/core.py,sha256=llsHFE3XKnVEk_pYoK0s9WUdeninSU5Kmoi7dU4GX0
1337
1339
  vellum/workflows/types/generics.py,sha256=ZkfoRhWs042i5IjA99v2wIhmh1u-Wieo3LzosgGWJVk,600
1338
1340
  vellum/workflows/types/stack.py,sha256=RDSGLkcV612ge8UuAH9TZiEGXxJt0Av2-H5rfzrTVVI,1014
1339
1341
  vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1340
- vellum/workflows/types/tests/test_utils.py,sha256=PhpaFwhrX-TJX409MINh9Y4IEfkDX1OCkSqz6QSXQ9Q,2339
1341
- vellum/workflows/types/utils.py,sha256=vxMGvd-Ay-Nq3w1lmJKcGsiORDk3hu6Fg8dpCKZxEa8,5496
1342
+ vellum/workflows/types/tests/test_utils.py,sha256=hlCGh0GW_fY16oMSgu-Lih14TSZXcknWNFqMYCCkdeo,2433
1343
+ vellum/workflows/types/utils.py,sha256=rPQdiMkYgWp_6Iv6pRK0qjmxPrgf11FvaUS8z9i2Opw,5598
1342
1344
  vellum/workflows/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1343
1345
  vellum/workflows/utils/names.py,sha256=QLUqfJ1tmSEeUwBKTTiv_Qk3QGbInC2RSmlXfGXc8Wo,380
1344
1346
  vellum/workflows/utils/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1348,8 +1350,8 @@ vellum/workflows/utils/vellum_variables.py,sha256=wbYejKwjy23ITDRfdGW4d181buvCbZ
1348
1350
  vellum/workflows/vellum_client.py,sha256=ODrq_TSl-drX2aezXegf7pizpWDVJuTXH-j6528t75s,683
1349
1351
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1350
1352
  vellum/workflows/workflows/base.py,sha256=QxIm0zCic8P-y0NNLdqgC1YKTu-3TmMJ-wH1nUylguA,13689
1351
- vellum_ai-0.10.6.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1352
- vellum_ai-0.10.6.dist-info/METADATA,sha256=bYIQ3gBUlMApjanIg9j2P6B47ZUHUlzKZrBXmZlG_Xo,5128
1353
- vellum_ai-0.10.6.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
1354
- vellum_ai-0.10.6.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1355
- vellum_ai-0.10.6.dist-info/RECORD,,
1353
+ vellum_ai-0.10.7.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1354
+ vellum_ai-0.10.7.dist-info/METADATA,sha256=ORDcBMHiWjSs9HCgB8N2aas_2KPUBSDX96vbojp8F6w,5128
1355
+ vellum_ai-0.10.7.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
1356
+ vellum_ai-0.10.7.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1357
+ vellum_ai-0.10.7.dist-info/RECORD,,
@@ -1,14 +1,16 @@
1
1
  from uuid import UUID
2
2
  from typing import Any, ClassVar, Generic, Optional, TypeVar
3
3
 
4
+ from vellum.workflows.nodes.core.map_node.node import MapNode
5
+ from vellum.workflows.nodes.displayable.final_output_node import FinalOutputNode
6
+ from vellum.workflows.references.output import OutputReference
7
+ from vellum.workflows.types.core import JsonObject
4
8
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
5
9
  from vellum_ee.workflows.display.nodes.utils import to_kebab_case
6
10
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
7
11
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
8
12
  from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
9
13
  from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type
10
- from vellum.workflows.nodes.displayable.final_output_node import FinalOutputNode
11
- from vellum.workflows.types.core import JsonObject
12
14
 
13
15
  _FinalOutputNodeType = TypeVar("_FinalOutputNodeType", bound=FinalOutputNode)
14
16
 
@@ -1,59 +1,32 @@
1
1
  from uuid import UUID
2
- from typing import Any, ClassVar, Dict, Generic, List, Optional, Type, TypeVar
2
+ from typing import Collection, Dict, Generic, List, Optional, TypeVar, cast
3
3
 
4
- from vellum import VellumVariable
5
4
  from vellum.workflows.nodes import MapNode
6
5
  from vellum.workflows.types.core import JsonObject
7
6
  from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
8
7
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
9
8
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
10
9
  from vellum_ee.workflows.display.types import WorkflowDisplayContext
11
- from vellum_ee.workflows.display.utils.uuids import uuid4_from_hash
12
- from vellum_ee.workflows.display.utils.vellum import infer_vellum_variable_type
13
10
  from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
14
11
 
15
12
  _MapNodeType = TypeVar("_MapNodeType", bound=MapNode)
16
13
 
17
14
 
18
15
  class BaseMapNodeDisplay(BaseNodeVellumDisplay[_MapNodeType], Generic[_MapNodeType]):
19
- workflow_input_ids_by_name: ClassVar[Dict[str, UUID]] = {}
20
-
21
16
  def serialize(
22
17
  self, display_context: WorkflowDisplayContext, error_output_id: Optional[UUID] = None, **kwargs
23
18
  ) -> JsonObject:
24
19
  node = self._node
25
20
  node_id = self.node_id
26
21
 
27
- workflow_inputs: List[VellumVariable] = []
28
22
  subworkflow = raise_if_descriptor(node.subworkflow)
29
- for descriptor in subworkflow.get_inputs_class():
30
- # In WaC it's always 'all_items'
31
- # In Vellum it's always 'items'
32
- variable_name = descriptor.name if descriptor.name != "all_items" else "items"
33
- variable_id = str(
34
- self.workflow_input_ids_by_name.get(variable_name)
35
- or uuid4_from_hash(f"{self.node_id}|{variable_name}")
36
- )
37
- workflow_inputs.append(
38
- VellumVariable(
39
- id=variable_id,
40
- key=variable_name,
41
- type=infer_vellum_variable_type(descriptor),
42
- )
43
- )
44
-
45
- items_workflow_input = next(input for input in workflow_inputs if input.key == "items")
46
- item_workflow_input = next(input for input in workflow_inputs if input.key == "item")
47
- index_workflow_input = next(input for input in workflow_inputs if input.key == "index")
48
-
49
- workflow_outputs = self._generate_workflow_outputs(node)
50
23
 
51
24
  items_node_input = create_node_input(
52
25
  node_id=node_id,
53
26
  input_name="items",
54
27
  value=node.items,
55
28
  display_context=display_context,
56
- input_id=UUID(items_workflow_input.id),
29
+ input_id=self.node_input_ids_by_name.get("items"),
57
30
  )
58
31
  node_inputs = [items_node_input]
59
32
 
@@ -63,6 +36,19 @@ class BaseMapNodeDisplay(BaseNodeVellumDisplay[_MapNodeType], Generic[_MapNodeTy
63
36
  )
64
37
  serialized_subworkflow = subworkflow_display.serialize()
65
38
 
39
+ renamed_input_variables = []
40
+ for input_variable in cast(List[Dict[str, str]], serialized_subworkflow["input_variables"]):
41
+ if input_variable["key"] == "all_items":
42
+ renamed_item = { **input_variable, "key": "items" }
43
+ renamed_input_variables.append(renamed_item)
44
+ else:
45
+ renamed_input_variables.append(input_variable)
46
+
47
+ # Note: This must match the items input ID for the map node's node input
48
+ items_workflow_input_id = next(input_variable["id"] for input_variable in renamed_input_variables if input_variable["key"] == "items")
49
+ item_workflow_input_id = next(input_variable["id"] for input_variable in renamed_input_variables if input_variable["key"] == "item")
50
+ index_workflow_input_id = next(input_variable["id"] for input_variable in renamed_input_variables if input_variable["key"] == "index")
51
+
66
52
  return {
67
53
  "id": str(node_id),
68
54
  "type": "MAP",
@@ -74,27 +60,13 @@ class BaseMapNodeDisplay(BaseNodeVellumDisplay[_MapNodeType], Generic[_MapNodeTy
74
60
  "target_handle_id": str(self.get_target_handle_id()),
75
61
  "variant": "INLINE",
76
62
  "workflow_raw_data": serialized_subworkflow["workflow_raw_data"],
77
- "input_variables": [workflow_input.dict() for workflow_input in workflow_inputs],
78
- "output_variables": [workflow_output.dict() for workflow_output in workflow_outputs],
63
+ "input_variables": cast(JsonObject, renamed_input_variables),
64
+ "output_variables": serialized_subworkflow["output_variables"],
79
65
  "concurrency": raise_if_descriptor(node.concurrency),
80
- "items_input_id": str(items_workflow_input.id),
81
- "item_input_id": str(item_workflow_input.id),
82
- "index_input_id": str(index_workflow_input.id),
66
+ "items_input_id": items_workflow_input_id,
67
+ "item_input_id": item_workflow_input_id,
68
+ "index_input_id": index_workflow_input_id,
83
69
  },
84
70
  "display_data": self.get_display_data().dict(),
85
71
  "definition": self.get_definition().dict(),
86
72
  }
87
-
88
- def _generate_workflow_outputs(
89
- self,
90
- node: Type[MapNode],
91
- ) -> List[VellumVariable]:
92
- workflow_outputs: List[VellumVariable] = []
93
- for output_descriptor in raise_if_descriptor(node.subworkflow).Outputs: # type: ignore[union-attr]
94
- node_output_display = self.get_node_output_display(output_descriptor)
95
- output_type = infer_vellum_variable_type(output_descriptor)
96
- workflow_outputs.append(
97
- VellumVariable(id=str(node_output_display.id), key=node_output_display.name, type=output_type)
98
- )
99
-
100
- return workflow_outputs
@@ -13,30 +13,20 @@ from vellum.workflows.expressions.does_not_equal import DoesNotEqualExpression
13
13
  from vellum.workflows.expressions.ends_with import EndsWithExpression
14
14
  from vellum.workflows.expressions.equals import EqualsExpression
15
15
  from vellum.workflows.expressions.greater_than import GreaterThanExpression
16
- from vellum.workflows.expressions.greater_than_or_equal_to import (
17
- GreaterThanOrEqualToExpression,
18
- )
16
+ from vellum.workflows.expressions.greater_than_or_equal_to import GreaterThanOrEqualToExpression
19
17
  from vellum.workflows.expressions.in_ import InExpression
20
18
  from vellum.workflows.expressions.is_not_null import IsNotNullExpression
21
19
  from vellum.workflows.expressions.is_null import IsNullExpression
22
20
  from vellum.workflows.expressions.less_than import LessThanExpression
23
- from vellum.workflows.expressions.less_than_or_equal_to import (
24
- LessThanOrEqualToExpression,
25
- )
21
+ from vellum.workflows.expressions.less_than_or_equal_to import LessThanOrEqualToExpression
26
22
  from vellum.workflows.expressions.not_between import NotBetweenExpression
27
23
  from vellum.workflows.expressions.not_in import NotInExpression
28
- from vellum_ee.workflows.display.nodes.base_node_vellum_display import (
29
- BaseNodeVellumDisplay,
30
- )
24
+ from vellum_ee.workflows.display.nodes.base_node_vellum_display import BaseNodeVellumDisplay
31
25
  from vellum_ee.workflows.display.workflows import VellumWorkflowDisplay
32
- from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import (
33
- get_workflow_display,
34
- )
26
+ from vellum_ee.workflows.display.workflows.get_vellum_workflow_display_class import get_workflow_display
35
27
 
36
28
  from tests.workflows.basic_conditional_node.workflow import CategoryWorkflow
37
- from tests.workflows.basic_conditional_node.workflow_with_only_one_conditional_node import (
38
- create_simple_workflow,
39
- )
29
+ from tests.workflows.basic_conditional_node.workflow_with_only_one_conditional_node import create_simple_workflow
40
30
 
41
31
 
42
32
  def test_serialize_workflow():
@@ -965,7 +955,6 @@ def test_conditional_node_serialize_all_operators_with_lhs_and_rhs(
965
955
 
966
956
  # AND the conditional node should be what we expect
967
957
  conditional_node = workflow_raw_data["nodes"][1]
968
- print(conditional_node)
969
958
  assert not DeepDiff(
970
959
  {
971
960
  "id": "a9143814-6bb0-4cb3-a817-4fc076417121",
@@ -228,15 +228,15 @@ def test_serialize_workflow():
228
228
  },
229
229
  },
230
230
  "input_variables": [
231
- {"id": "0fe9dff5-7595-4ff3-a420-416f3fc6f809", "key": "item", "type": "JSON"},
232
- {"id": "27dfe8ba-8be7-4de9-a930-2ec3e375b149", "key": "index", "type": "NUMBER"},
233
- {"id": "4c0a109f-599e-4d04-a396-a51474fc2996", "key": "items", "type": "JSON"},
231
+ {"id": "b29bb546-9bc8-4136-857d-8c7a464ba9d4", "key": "item", "type": "JSON", "required": True, "default": None, "extensions": {"color": None}},
232
+ {"id": "17e7ca49-668f-450d-a792-e1f97d13db67", "key": "index", "type": "NUMBER", "required": True, "default": None, "extensions": {"color": None}},
233
+ {"id": "d6fc6c7a-235f-4b98-86f3-e258d1198f93", "key": "items", "type": "JSON", "required": True, "default": None, "extensions": {"color": None}},
234
234
  ],
235
- "output_variables": [{"id": "56b34d4a-d3a6-4bdb-80a4-dbf644791274", "key": "count", "type": "NUMBER"}],
235
+ "output_variables": [{"id": "2a957315-fae0-4366-8a35-f0b315c5eade", "key": "count", "type": "NUMBER"}],
236
236
  "concurrency": None,
237
- "items_input_id": "4c0a109f-599e-4d04-a396-a51474fc2996",
238
- "item_input_id": "0fe9dff5-7595-4ff3-a420-416f3fc6f809",
239
- "index_input_id": "27dfe8ba-8be7-4de9-a930-2ec3e375b149",
237
+ "items_input_id": "d6fc6c7a-235f-4b98-86f3-e258d1198f93",
238
+ "item_input_id": "b29bb546-9bc8-4136-857d-8c7a464ba9d4",
239
+ "index_input_id": "17e7ca49-668f-450d-a792-e1f97d13db67",
240
240
  },
241
241
  "display_data": {"position": {"x": 0.0, "y": 0.0}},
242
242
  "definition": {
@@ -288,7 +288,7 @@ def test_serialize_workflow():
288
288
  "type": "NODE_OUTPUT",
289
289
  "data": {
290
290
  "node_id": "bf83099a-40df-4445-b90d-1f6f1067ebe3",
291
- "output_id": "56b34d4a-d3a6-4bdb-80a4-dbf644791274",
291
+ "output_id": "2a957315-fae0-4366-8a35-f0b315c5eade",
292
292
  },
293
293
  }
294
294
  ],
@@ -323,6 +323,9 @@ def test_serialize_workflow():
323
323
  },
324
324
  },
325
325
  workflow_raw_data["nodes"][2],
326
+ # TODO: Fix output ID not referencing map node workflow output
327
+ # https://app.shortcut.com/vellum/story/5667/fix-output-display-reference-on-map-nodes
328
+ exclude_regex_paths=r"root\['inputs'\]\[0\]\['value'\]\['rules'\]\[0\]\['data'\]\['output_id'\]",
326
329
  )
327
330
 
328
331
  # AND each edge should be serialized correctly
@@ -4,7 +4,9 @@ import typing
4
4
  from typing import Any, List, Union, cast
5
5
 
6
6
  from vellum import ChatMessage, SearchResult, SearchResultRequest, VellumVariableType
7
+ from vellum.client.types.array_vellum_value import ArrayVellumValue
7
8
  from vellum.workflows.descriptors.base import BaseDescriptor
9
+ from vellum.workflows.nodes.core.map_node.node import MapNodeItemType
8
10
  from vellum.workflows.references import OutputReference, WorkflowInputReference
9
11
  from vellum.workflows.references.execution_count import ExecutionCountReference
10
12
  from vellum.workflows.references.node import NodeReference
@@ -45,9 +47,8 @@ def infer_vellum_variable_type(value: Any) -> VellumVariableType:
45
47
  raise ValueError(
46
48
  f"Expected NodeReference {descriptor.name} to have an instance pointing to a descriptor"
47
49
  )
48
-
49
50
  descriptor = descriptor.instance
50
-
51
+
51
52
  inferred_type = primitive_type_to_vellum_variable_type(descriptor)
52
53
  else:
53
54
  vellum_variable_value = primitive_to_vellum_value(value)