vellum-ai 1.2.1__py3-none-any.whl → 1.2.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.
Files changed (55) hide show
  1. vellum/client/core/client_wrapper.py +2 -2
  2. vellum/prompts/blocks/compilation.py +13 -11
  3. vellum/workflows/emitters/vellum_emitter.py +16 -69
  4. vellum/workflows/events/tests/test_event.py +1 -0
  5. vellum/workflows/events/workflow.py +3 -0
  6. vellum/workflows/nodes/bases/base.py +0 -1
  7. vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py +35 -0
  8. vellum/workflows/nodes/displayable/bases/utils.py +4 -2
  9. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +88 -2
  10. vellum/workflows/nodes/displayable/tool_calling_node/node.py +1 -0
  11. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py +85 -1
  12. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py +12 -0
  13. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +5 -2
  14. vellum/workflows/ports/port.py +1 -11
  15. vellum/workflows/state/context.py +14 -0
  16. vellum/workflows/types/definition.py +4 -4
  17. vellum/workflows/utils/vellum_variables.py +5 -3
  18. vellum/workflows/workflows/base.py +1 -0
  19. {vellum_ai-1.2.1.dist-info → vellum_ai-1.2.2.dist-info}/METADATA +1 -1
  20. {vellum_ai-1.2.1.dist-info → vellum_ai-1.2.2.dist-info}/RECORD +55 -55
  21. vellum_ee/workflows/display/nodes/base_node_display.py +19 -10
  22. vellum_ee/workflows/display/nodes/vellum/api_node.py +1 -4
  23. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +1 -4
  24. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +1 -4
  25. vellum_ee/workflows/display/nodes/vellum/error_node.py +6 -4
  26. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +6 -4
  27. vellum_ee/workflows/display/nodes/vellum/guardrail_node.py +1 -4
  28. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +1 -8
  29. vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +1 -4
  30. vellum_ee/workflows/display/nodes/vellum/map_node.py +1 -4
  31. vellum_ee/workflows/display/nodes/vellum/merge_node.py +1 -4
  32. vellum_ee/workflows/display/nodes/vellum/note_node.py +2 -4
  33. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +1 -4
  34. vellum_ee/workflows/display/nodes/vellum/search_node.py +1 -4
  35. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +1 -4
  36. vellum_ee/workflows/display/nodes/vellum/templating_node.py +1 -4
  37. vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +1 -0
  38. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +4 -0
  39. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +12 -0
  40. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +16 -0
  41. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +5 -0
  42. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +4 -0
  43. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +4 -0
  44. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +4 -0
  45. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +4 -0
  46. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +12 -0
  47. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +4 -0
  48. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +4 -0
  49. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +4 -0
  50. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +5 -0
  51. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py +1 -0
  52. vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +5 -0
  53. {vellum_ai-1.2.1.dist-info → vellum_ai-1.2.2.dist-info}/LICENSE +0 -0
  54. {vellum_ai-1.2.1.dist-info → vellum_ai-1.2.2.dist-info}/WHEEL +0 -0
  55. {vellum_ai-1.2.1.dist-info → vellum_ai-1.2.2.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vellum-ai
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary:
5
5
  License: MIT
6
6
  Requires-Python: >=3.9,<4.0
@@ -28,33 +28,33 @@ vellum_ee/workflows/display/editor/__init__.py,sha256=MSAgY91xCEg2neH5d8jXx5wRdR
28
28
  vellum_ee/workflows/display/editor/types.py,sha256=x-tOOCJ6CF4HmiKDfCmcc3bOVfc1EBlP5o6u5WEfLoY,567
29
29
  vellum_ee/workflows/display/exceptions.py,sha256=Oys39dHoW-s-1dnlRSZxTntMq8_macj-b2CT_6dqzJs,355
30
30
  vellum_ee/workflows/display/nodes/__init__.py,sha256=jI1aPBQf8DkmrYoZ4O-wR1duqZByOf5mDFmo_wFJPE4,307
31
- vellum_ee/workflows/display/nodes/base_node_display.py,sha256=chHNgngguwtjUAf3uJR6FF4TdcYAmkRHLBJRP4WfPW4,17961
31
+ vellum_ee/workflows/display/nodes/base_node_display.py,sha256=bxDJxtNqcyy1LwFltggm63W1ZHZPuwK1NyA6KPLHRQQ,18345
32
32
  vellum_ee/workflows/display/nodes/get_node_display_class.py,sha256=jI_kUi9LnNLDpY63QtlC4TfN8P571VN4LpzH0I1ZtLk,1149
33
33
  vellum_ee/workflows/display/nodes/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  vellum_ee/workflows/display/nodes/tests/test_base_node_display.py,sha256=wBoCqULS4XO3s9Vwhd9v4g10opfBFqeZgRqB8CoFz0c,3015
35
35
  vellum_ee/workflows/display/nodes/types.py,sha256=St1BB6no528OyELGiyRabWao0GGw6mLhstQAvEACbGk,247
36
36
  vellum_ee/workflows/display/nodes/utils.py,sha256=sloya5TpXsnot1HURc9L51INwflRqUzHxRVnCS9Cd-4,973
37
37
  vellum_ee/workflows/display/nodes/vellum/__init__.py,sha256=nUIgH2s0-7IbQRNrBhLPyRNe8YIrx3Yo9HeeW-aXXFk,1668
38
- vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=lGS-C9cd-nlYVZuaXmArJUJFdwPUMLNJwf1bpa7Ufys,9400
38
+ vellum_ee/workflows/display/nodes/vellum/api_node.py,sha256=TD23uXA4vhRvsfiq7B10XHpFnsS1CA9M7WH9jsOYNB0,9242
39
39
  vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py,sha256=FHhPoGmmny4Xcxi2pm12Sk3ZOREanWEVrOWcjRhncH4,6337
40
- vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=f1pMgg_Nus5F7MdzR4Czxc4fsvRk3WupkHuePsUuQxQ,4728
41
- vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=OEw8QRPliL4P8J6oEZdQH8Oc-0u7aFa_Jqx0RyL6F-M,11656
42
- vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=YhMsi2TG1zSR8E7IpxzzSncOyVLcvqTuGa3mr4RqHd8,2364
43
- vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=zo-nalsuayMqeb2GwR2OB9SFK3y2U5aG-rtwrsjdasQ,3089
44
- vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=IniO5KvO0Rw9zghFg3RFvbXBTv6Zi1iuQhaA1DLazqU,2331
45
- vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=Jzi65uRQ5Y4fpXz5An5Xt-E5MZkc_Uyceuy9zS4Jyuc,12272
46
- vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=f7MeoxgKrdyb1dSJsvdDtZPlp1J2Pa4njPvN3qHVktA,6028
47
- vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=uaZ2wcZR1J9C9iI0QWAsgNK9IlcuCz1808oxXmiYsLY,3908
48
- vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=RTP_raQWL8ZKoRKLpxLfpyXzw61TZeTCkTuM1uRLIkI,3274
49
- vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=6xf8MJ684KecKPJrGlCJuJYLPtYImXmqN85Y_6KPjW4,1141
50
- vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=cT5qT7Nd2v6rSsIErpSAWaxta7txGOSFOZz2AQYQmWE,3536
40
+ vellum_ee/workflows/display/nodes/vellum/code_execution_node.py,sha256=w8tO4EZj4Swy5e_2lIYTeoWzghj8ikMLnjML5OqevLg,4570
41
+ vellum_ee/workflows/display/nodes/vellum/conditional_node.py,sha256=dtO9A-rjbDEJrywwrOxwEXahqrW-S493OIDHOti9Sjs,11498
42
+ vellum_ee/workflows/display/nodes/vellum/error_node.py,sha256=6ZXpJVvpq5mJ6gVnv0qsjG312w4RHVltH3R4C39la6I,2424
43
+ vellum_ee/workflows/display/nodes/vellum/final_output_node.py,sha256=wmq-bEtDeBkLOJ6w9nAc0tT9LanGJXBVciX6PXTN8wM,3156
44
+ vellum_ee/workflows/display/nodes/vellum/guardrail_node.py,sha256=9_AslWjzj4RHH2sq3SIaq9FU0NCg7ex5TIWrNMybqXg,2173
45
+ vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py,sha256=20tahU75zKImm6sAwLIYA9VEC6aNATjZdwA2beNnCIk,11949
46
+ vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py,sha256=qy_EtBIAHIhju68PA-skm-WbFnaNEuDoxkSMWRl2SpQ,5870
47
+ vellum_ee/workflows/display/nodes/vellum/map_node.py,sha256=kwLqptup7bzYUDkGDbpcJPMMusMezsYrG5rSUYl5TlQ,3750
48
+ vellum_ee/workflows/display/nodes/vellum/merge_node.py,sha256=xMHaPfTSZWYprQenlHm2g47u0a5O9Me_dhAjfqo8nKQ,3116
49
+ vellum_ee/workflows/display/nodes/vellum/note_node.py,sha256=6PcAFA_EJn7vEMdqgoRjYTLHwnXCrJv80B10zuUx4jE,1026
50
+ vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py,sha256=uo4YZRV48iX4peGAA1xkGniSPrepywvW_gS7codt-VQ,3378
51
51
  vellum_ee/workflows/display/nodes/vellum/retry_node.py,sha256=3tkrZu7LczrD6KwdtU3g3xGOyVR3KKSbG5_H3Lbqvho,3274
52
- vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=bF07csUFSQlAeOayPPws5pz3tBTp1PdwgHb8WItgXmY,12319
53
- vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=wr2MaqoGFtkL1o7B-4GXgF1gEEOTWsUEiX8l_g7e1qs,2958
54
- vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=TdIJWh2l8p4tw7ejRexGOFQKnviirUqie3WYwsrVQ4g,3339
52
+ vellum_ee/workflows/display/nodes/vellum/search_node.py,sha256=RMBW2cKbwCBPXqrkEo8zAHlMltotZJz3S8QjWnBgiEg,12161
53
+ vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py,sha256=n6gaTWOkiycUExbO5Vk_ZYNXRW6_V4LNfXdxPDevWIs,2800
54
+ vellum_ee/workflows/display/nodes/vellum/templating_node.py,sha256=NwyFvpkk87nBI5KbncAVQZdyimvN2q4Ko7hDg7jmbnA,3181
55
55
  vellum_ee/workflows/display/nodes/vellum/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
56
  vellum_ee/workflows/display/nodes/vellum/tests/test_api_node.py,sha256=DQAtsabvn6BE6xWwKNHzMOppzoy1-1dssNnrwbHUdRU,1490
57
- vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=teZ1IXoF6t56xd7F9mDtyHeuG8nGptL5_1v0MigkNaI,10775
57
+ vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py,sha256=oEH9myRn-NAP_mRstV0LifX3ncbmAOjCvyIVCZhACk0,10885
58
58
  vellum_ee/workflows/display/nodes/vellum/tests/test_error_node.py,sha256=540FoWMpJ3EN_DPjHsr9ODJWCRVcUa5hZBn-5T2GiHU,1665
59
59
  vellum_ee/workflows/display/nodes/vellum/tests/test_inline_subworkflow_node.py,sha256=SKOYan-dxY4gsO0R4JyQUyWrABHBN8XImKw9Eeo4wGo,3535
60
60
  vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py,sha256=uiMB0cOxKZzos7YKnj4ef4DFa2bOvZJWIv-hfbUV6Go,1218
@@ -79,29 +79,29 @@ vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attr
79
79
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py,sha256=O1CIKMmRTaMaT3IhjwCAiMz1ZThPg9lAUbSiZkx_E8c,6321
80
80
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py,sha256=fPXcX-tWQ0UMuEyOFAylgi7pWiE7lZWk9vrShlTExik,40053
81
81
  vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py,sha256=FLvcD8eoABHUPv08oSpIp_P-65sw2gl4whMXEJJj4f8,6785
82
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=a05Uh47ZRyy7P2ffZC3yieplFGqmlnjx1sGwY80ZLVU,16189
83
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=moLDV23iXN7ngg6DRJqcttWE2v2UfziLIMUZ_2Amjp0,29709
84
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=oKO8KGlkl505TSW5v0retJF4FS8TfwxxuAzqY9Adr8k,53608
82
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py,sha256=ygNirKPjErhjTkDIgFZdaLrsvxDmUEionlmYFMJju3w,16338
83
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py,sha256=arl-tho6f0qstUM2ejONEO4ru_6TxCPbni3FS-UZouQ,30108
84
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py,sha256=-BiFVw3JUx_79isQNgAtZB2362oByRcuAuUVK9uzCJI,54204
85
85
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py,sha256=E1ww97BFoGbnRkxf84TScat5NQhP8nLVrdaOlpGnSKU,8615
86
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=w1BYEZXIMjWmcKGQXzhelHnKFlEAXmsgjkI9fcgqKXA,5850
86
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py,sha256=03Mk8OE3kWcoZW9lNBe7v4KThCYN-pXg5Rjbkfx-jOQ,6031
87
87
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py,sha256=-T0cd2jx1bC0ZNtAESF78fnYD_0nOqo8zMMLwRHUTRM,6227
88
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=PZ9Yec8D6e9wM2kh5eWtNvK5BghTf1RdvoSW5_pw3FM,7384
88
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py,sha256=LnZp1YXDn-AaaxiYgxrhCQeH-rLgmlu_r_lvM65EQ5w,7517
89
89
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py,sha256=zOv-CzFZs_9NqlINQ7hzJmd4o8ArDBKB7Eyr1Rfd-BU,25767
90
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=cCfOGFe1TL8X9-gorbHA0xND3_OuQtKUCGWkYukNQ14,21660
91
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=91u9FWLErrNGfUkZ22ifk6IazGtaYoDFbZYjhxEESgI,16579
92
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=rtkAQw5awOFX3pWh0qz3f766-tTnPhToGsXVSHO4M4U,8352
93
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=RgJw9lwI7ihqngEbdWbxfIsO1q0asi2JrBx1PRebndU,21076
94
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=_XL63ndls2S6-WnKT78BE67SezhO2FaeVlfozzpdku4,12946
95
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=XWrhHg_acLsRHwjstBAii9Pmes9oXFtAUWSAVF1oSBc,11225
96
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=V8b6gKghLlO7PJI8xeNdnfn8aII0W_IFQvSQBQM62UQ,7721
97
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=hDWtKXmGI1CKhTwTNqpu_d5RkE5n7SolMLtgd87KqTI,3856
98
- vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py,sha256=AUfULtIangNYkvLH3jd2Ar8X5ulW4tGmezeCfMmXFUU,3697
90
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py,sha256=yKmOyunzt5_0cUcqhvCmV2pu81TTkshVi_uN3yt76Wc,21816
91
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py,sha256=W4--Ldih7mRMnfyJ9G7kdyeoKkeebSu_5d33TJQzShU,16735
92
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py,sha256=UnfWTfKN8DrOLpjCfWMgENJBjgNLWcRVfexbwERKY-c,8501
93
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py,sha256=SGlBiwohTTuf7oXqO3R1lP6u7gPea8Elt1CpZU_W9Bk,21482
94
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py,sha256=JKfYNBCmy7n6v2fd6NyYGHI1_TJRlfDNWiZMvHrdCWU,13079
95
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py,sha256=yP1_oy6UpwlZ7UAn9AoUYbjIJ6Z0K8crM0Xdx8EcwYE,11358
96
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py,sha256=ddPa8gNBYH2tWk92ymngY7M8n74J-8CEre50HISP_-g,7877
97
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py,sha256=A7Ef8P1-Nyvsb97bumKT9W2R1LuZaY9IKFV-7iRueog,4010
98
+ vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py,sha256=oVXCjkU0G56QJmqnd_xIwF3D9bhJwALFibM2wmRhwUk,3739
99
99
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py,sha256=Sg82qV5NCzQDy-RD90hA6QaHgFHOq6ESNkbWXygsnNw,26367
100
100
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_mcp_serialization.py,sha256=9ORex-okcpwbbkxEDJyyRlbPid6zLSDduK0fBfrp8kk,2415
101
101
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py,sha256=-7NvpYUZEl2T15AS9MPt_scyhKmUmS3wEPa320sgWOI,10085
102
102
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py,sha256=XIZZr5POo2NLn2uEWm9EC3rejeBMoO4X-JtzTH6mvp4,4074
103
103
  vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py,sha256=pLCyMScV88DTBXRH7jXaXOEA1GBq8NIipCUFwIAWnwI,2771
104
- vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=J4ouI8KxbMfxQP2Zq_9cWMGYgbjCWmKzjCJEtnSJb0I,5829
104
+ vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py,sha256=exT7U-axwtYgFylagScflSQLJEND51qIAx2UATju6JM,6023
105
105
  vellum_ee/workflows/display/tests/workflow_serialization/test_workflow_input_parameterization_error.py,sha256=vAdmn3YTBDpo55znbydQxsgg9ASqHcvsUPwiBR_7wfo,1461
106
106
  vellum_ee/workflows/display/types.py,sha256=cyZruu4sXAdHjwuFc7dydM4DcFNf-pp_CmulXItxac4,3679
107
107
  vellum_ee/workflows/display/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -148,7 +148,7 @@ vellum/client/README.md,sha256=gxc7JlJRBrBZpN5LHa2ORxYTRHFLPnWmnIugN8pmQh4,5600
148
148
  vellum/client/__init__.py,sha256=LOu_TklkJG01SgXIpPWDhOX2QvKDyd2ZbQyr5H0m31I,72349
149
149
  vellum/client/core/__init__.py,sha256=lTcqUPXcx4112yLDd70RAPeqq6tu3eFMe1pKOqkW9JQ,1562
150
150
  vellum/client/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
151
- vellum/client/core/client_wrapper.py,sha256=-4PVopevd_kf5mXOiE5dkGXhtyTxM5HwZwEAB6ux010,2840
151
+ vellum/client/core/client_wrapper.py,sha256=h3gOxYd7zfNLLRswckUQCf1CLWZjbx1I0pokwO-Ci-0,2840
152
152
  vellum/client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
153
153
  vellum/client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
154
154
  vellum/client/core/force_multipart.py,sha256=awxh5MtcRYe74ehY8U76jzv6fYM_w_D3Rur7KQQzSDk,429
@@ -895,7 +895,7 @@ vellum/plugins/utils.py,sha256=cPmxE9R2CK1bki2jKE8rB-G9zMf2pzHjSPDHFPXwd3Q,878
895
895
  vellum/plugins/vellum_mypy.py,sha256=hfjC2rIxNdQuJa6fIN4PDgODnQ3YaUszyaV2eNbLJlE,27952
896
896
  vellum/prompts/__init__.py,sha256=kn-btvQOMNnnBuyQiUpie48_VBJAk7tFFU-ul5dwK60,107
897
897
  vellum/prompts/blocks/__init__.py,sha256=Zwvncjd8sUCPmT-8pFpgLYsKJl0xB6td1GTQzjV9hYA,108
898
- vellum/prompts/blocks/compilation.py,sha256=t3UjhbIQYWBbXF3a94ZB-ef9_8H76Enu0HfAMIcG4QU,10651
898
+ vellum/prompts/blocks/compilation.py,sha256=mCGfqJXcKMkv565Ye5y9MsPdVAmkCGOnqQBRa3nJVg8,10754
899
899
  vellum/prompts/blocks/exceptions.py,sha256=vmk5PV6Vyw9nKjZYQDUDW0LH8MfQNIgFvFb_mFWdIRI,50
900
900
  vellum/prompts/blocks/helpers.py,sha256=7G1Qi6N3V1K73iqTypMTcl6Rum7wk449yHStkakLy-U,961
901
901
  vellum/prompts/blocks/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1615,7 +1615,7 @@ vellum/workflows/edges/__init__.py,sha256=wSkmAnz9xyi4vZwtDbKxwlplt2skD7n3NsxkvR
1615
1615
  vellum/workflows/edges/edge.py,sha256=N0SnY3gKVuxImPAdCbPMPlHJIXbkQ3fwq_LbJRvVMFc,677
1616
1616
  vellum/workflows/emitters/__init__.py,sha256=d9QFOI3eVg6rzpSFLvrjkDYXWikf1tcp3ruTRa2Boyc,143
1617
1617
  vellum/workflows/emitters/base.py,sha256=Tcp13VMB-GMwEJdl-6XTPckspdOdwpMgBx22-PcQxds,892
1618
- vellum/workflows/emitters/vellum_emitter.py,sha256=c84BNgXkpOZDZglRz26IhmQtLFwk3DnRHwqOmf4GHIY,5223
1618
+ vellum/workflows/emitters/vellum_emitter.py,sha256=hhMX8uXZFH2ZYHJP77uA6U4ECisacwdTBKI7papU79Y,2899
1619
1619
  vellum/workflows/environment/__init__.py,sha256=TJz0m9dwIs6YOwCTeuN0HHsU-ecyjc1OJXx4AFy83EQ,121
1620
1620
  vellum/workflows/environment/environment.py,sha256=Ck3RPKXJvtMGx_toqYQQQF-ZwXm5ijVwJpEPTeIJ4_Q,471
1621
1621
  vellum/workflows/errors/__init__.py,sha256=tWGPu5xyAU8gRb8_bl0fL7OfU3wxQ9UH6qVwy4X4P_Q,113
@@ -1625,9 +1625,9 @@ vellum/workflows/events/context.py,sha256=81367zwg23PUBsrDJyF0rbcswNOIMTwWveAjmq
1625
1625
  vellum/workflows/events/node.py,sha256=ldHK3sZtCiDwvSr935zRRY_d2KNDfS7siOfpilLr1MI,5770
1626
1626
  vellum/workflows/events/stream.py,sha256=xhXJTZirFi0xad5neAQNogrIQ4h47fpnKbVC3vCM5Js,889
1627
1627
  vellum/workflows/events/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1628
- vellum/workflows/events/tests/test_event.py,sha256=o2Z2ApRAOTEPMEIiA2y8JK3McDsnf6-9eQzQ5jo2DE8,18074
1628
+ vellum/workflows/events/tests/test_event.py,sha256=355RjK5F4qzDEGa4OlO5sZlCwY8Y1Z313nSAIVJpt4k,18132
1629
1629
  vellum/workflows/events/types.py,sha256=3cv2r3e57yto7M4Nlobtyz9GO4bXubj4TMHSFvdECP8,4840
1630
- vellum/workflows/events/workflow.py,sha256=2jwkEUNWIbn8Ti7CWD0LSIpJy_gAoM9ob8x_BSUqfo0,8087
1630
+ vellum/workflows/events/workflow.py,sha256=kLYl9uF2pNmNMdbnQr5TUdWsxjUUOtyzleO3YO71DKw,8228
1631
1631
  vellum/workflows/exceptions.py,sha256=NiBiR3ggfmPxBVqD-H1SqmjI-7mIn0EStSN1BqApvCM,1213
1632
1632
  vellum/workflows/expressions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1633
1633
  vellum/workflows/expressions/accessor.py,sha256=3lu1-_-dBfZdJvtX-q66jbmRAZtqIfdsh_3_JNuzg1E,4462
@@ -1686,7 +1686,7 @@ vellum/workflows/integrations/mcp_service.py,sha256=SaOLg76JBAiBDAMUn04mxVWmf2Bt
1686
1686
  vellum/workflows/logging.py,sha256=_a217XogktV4Ncz6xKFz7WfYmZAzkfVRVuC0rWob8ls,437
1687
1687
  vellum/workflows/nodes/__init__.py,sha256=aVdQVv7Y3Ro3JlqXGpxwaU2zrI06plDHD2aumH5WUIs,1157
1688
1688
  vellum/workflows/nodes/bases/__init__.py,sha256=cniHuz_RXdJ4TQgD8CBzoiKDiPxg62ErdVpCbWICX64,58
1689
- vellum/workflows/nodes/bases/base.py,sha256=r5UBUe97dxpsEnpJzGDOt3WAtmiYTEi6vY2XDv54t7Q,20780
1689
+ vellum/workflows/nodes/bases/base.py,sha256=9vOPHP6K6oK36bEby1KFRXpMevMwq6slwuSRhC-bWFc,20752
1690
1690
  vellum/workflows/nodes/bases/base_adornment_node.py,sha256=hrgzuTetM4ynPd9YGHoK8Vwwn4XITi3aZZ_OCnQrq4Y,3433
1691
1691
  vellum/workflows/nodes/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1692
1692
  vellum/workflows/nodes/bases/tests/test_base_adornment_node.py,sha256=fXZI9KqpS4XMBrBnIEkK3foHaBVvyHwYcQWWDKay7ic,1148
@@ -1697,7 +1697,7 @@ vellum/workflows/nodes/core/error_node/node.py,sha256=MFHU5vITYSK-L9CuMZ49In2ZeN
1697
1697
  vellum/workflows/nodes/core/inline_subworkflow_node/__init__.py,sha256=nKNEH1QTl-1PcvmYoqSWEl0-t6gAur8GLTXHzklRQfM,84
1698
1698
  vellum/workflows/nodes/core/inline_subworkflow_node/node.py,sha256=TCmO0wPbt7kc89K1iGqeeoZy-yn1z0iioYSSN6mErdY,6997
1699
1699
  vellum/workflows/nodes/core/inline_subworkflow_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1700
- vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=kUqwcRMMxjTHALbwGUXCJT_aJBrHS1bkg49oL8R0JO8,4337
1700
+ vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py,sha256=RK2g1h2ib-ruQZ9A2_2L-B9WBdHV44WZj75rkDNL0cE,5766
1701
1701
  vellum/workflows/nodes/core/map_node/__init__.py,sha256=MXpZYmGfhsMJHqqlpd64WiJRtbAtAMQz-_3fCU_cLV0,56
1702
1702
  vellum/workflows/nodes/core/map_node/node.py,sha256=rbF7fLAU0vUDEpgtWqeQTZFlhWOhJw38tgxWJ6exud8,9313
1703
1703
  vellum/workflows/nodes/core/map_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1734,7 +1734,7 @@ vellum/workflows/nodes/displayable/bases/search_node.py,sha256=9TtFn6oNpEkpCL59Q
1734
1734
  vellum/workflows/nodes/displayable/bases/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1735
1735
  vellum/workflows/nodes/displayable/bases/tests/test_utils.py,sha256=eqdqbKNRWVMDPevgwLg1i6YK0g4L4bCy-7xCBN5yYZI,3156
1736
1736
  vellum/workflows/nodes/displayable/bases/types.py,sha256=C37B2Qh2YP7s7pUjd-EYKc2Zl1TbnCgI_mENuUSb8bo,1706
1737
- vellum/workflows/nodes/displayable/bases/utils.py,sha256=N80UHgpiMOoPwpO-lMAiF0OzWT-crZ-RygMaBv7gLvQ,5553
1737
+ vellum/workflows/nodes/displayable/bases/utils.py,sha256=lHlb_76bzC3FI6C3ZS3pq6LFhX8AuP6I5pIma_4FEfc,5700
1738
1738
  vellum/workflows/nodes/displayable/code_execution_node/__init__.py,sha256=0FLWMMktpzSnmBMizQglBpcPrP80fzVsoJwJgf822Cg,76
1739
1739
  vellum/workflows/nodes/displayable/code_execution_node/node.py,sha256=cCpZPna1Exw060KlI8j3oMCfru1GCzUFJz9ucWdcZVM,10311
1740
1740
  vellum/workflows/nodes/displayable/code_execution_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1771,7 +1771,7 @@ vellum/workflows/nodes/displayable/search_node/node.py,sha256=1dGCB1kb7MvX3fUJ5z
1771
1771
  vellum/workflows/nodes/displayable/search_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1772
1772
  vellum/workflows/nodes/displayable/search_node/tests/test_node.py,sha256=WVZR3BI_CvxBG9hulv0-tcAc_gW5ozs0nH4uVNRJa2U,8863
1773
1773
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/__init__.py,sha256=9yYM6001YZeqI1VOk1QuEM_yrffk_EdsO7qaPzINKds,92
1774
- vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=965eN_w54Q9xirRXrz5CUcg5sFA6AcrSs_IgUXVBCvk,10033
1774
+ vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py,sha256=1wgjZiuRjcSgyMOrZTEuvUu1K3sVp0BuvHV72XPeit8,13785
1775
1775
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1776
1776
  vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py,sha256=c98nMPogZ6iN_pTvVUMTB3J72Hj--H-XVgvvRXhdSQE,19085
1777
1777
  vellum/workflows/nodes/displayable/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1780,13 +1780,13 @@ vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py,sha2
1780
1780
  vellum/workflows/nodes/displayable/tests/test_search_node_wth_text_output.py,sha256=VepO5z1277c1y5N6LLIC31nnWD1aak2m5oPFplfJHHs,6935
1781
1781
  vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py,sha256=Bjv-wZyFgNaVZb9KEMMZd9lFoLzbPEPjEMpANizMZw4,2413
1782
1782
  vellum/workflows/nodes/displayable/tool_calling_node/__init__.py,sha256=3n0-ysmFKsr40CVxPthc0rfJgqVJeZuUEsCmYudLVRg,117
1783
- vellum/workflows/nodes/displayable/tool_calling_node/node.py,sha256=89Vkaink4E6skDEVnPFWXHHcRjirhrhMCYOXGqkNOHc,7806
1783
+ vellum/workflows/nodes/displayable/tool_calling_node/node.py,sha256=diAm1hJ4ZywdRmwZAYhBq_TjmCsUt_qc6ew7tywV1rs,7840
1784
1784
  vellum/workflows/nodes/displayable/tool_calling_node/state.py,sha256=CcBVb_YtwfSSka4ze678k6-qwmzMSfjfVP8_Y95feSo,302
1785
1785
  vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1786
1786
  vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py,sha256=in1fbEz5x1tx3uKv9YXdvOncsHucNL8Ro6Go7lBuuOQ,8962
1787
- vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py,sha256=dMonAUfgAG3HxNoxQQjRcfT9qpOZb2LE-bgLrjMO4aw,8707
1788
- vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py,sha256=eB4o5tXJJMjuXS4ik4MyzQaHn0iKWknlUP4DZkLc1ZI,8361
1789
- vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=Sq6OX1TYBAs36buc9fPwHgNOEE7OWFBd7AYpuTrumeo,22667
1787
+ vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py,sha256=GZoeybB9uM7ai8sBLAtUMHrMVgh-WrJDWrKZci6feDs,11892
1788
+ vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py,sha256=SIu5GCj4tIE4fz-cAcdULtQfqZIhrcc3Doo6TWLXBws,8804
1789
+ vellum/workflows/nodes/displayable/tool_calling_node/utils.py,sha256=7pM6MH3Z7r0k7Kpr3d-26QXUo_4GrxLflKwFTxRPREY,22844
1790
1790
  vellum/workflows/nodes/experimental/README.md,sha256=eF6DfIL8t-HbF9-mcofOMymKrraiBHDLKTlnBa51ZiE,284
1791
1791
  vellum/workflows/nodes/experimental/__init__.py,sha256=jCQgvZEknXKfuNhGSOou4XPfrPqZ1_XBj5F0n0fgiWM,106
1792
1792
  vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py,sha256=lsyD9laR9p7kx5-BXGH2gUTM242UhKy8SMV0SR6S2iE,90
@@ -1800,7 +1800,7 @@ vellum/workflows/outputs/__init__.py,sha256=AyZ4pRh_ACQIGvkf0byJO46EDnSix1ZCAXfv
1800
1800
  vellum/workflows/outputs/base.py,sha256=PUn0zhGzYCSZL34JXtXg9zALlXS_cqxZldLilPxDzb8,9614
1801
1801
  vellum/workflows/ports/__init__.py,sha256=bZuMt-R7z5bKwpu4uPW7LlJeePOQWmCcDSXe5frUY5g,101
1802
1802
  vellum/workflows/ports/node_ports.py,sha256=2Uo9gwNVCuH86J-GXcpc95QSDh5I-XVvhHJCMSWe-S8,2825
1803
- vellum/workflows/ports/port.py,sha256=j_qiZlpx-a1cK5E7sxXwPcb_9NS-KUM-JoP8mgqg32k,4073
1803
+ vellum/workflows/ports/port.py,sha256=-ogEg96yK38D9eRJ-JBwgSS7tOIhtVWGHlNBqYolwkw,3659
1804
1804
  vellum/workflows/ports/utils.py,sha256=gD8iijX8D3tjx1Tj2FW8-QIubCphTqW_gqROt6w6MOM,3790
1805
1805
  vellum/workflows/references/__init__.py,sha256=glHFC1VfXmcbNvH5VzFbkT03d8_D7MMcvEcsUBrzLIs,591
1806
1806
  vellum/workflows/references/constant.py,sha256=6yUT4q1sMj1hkI_tzzQ9AYcmeeDYFUNCqUq_W2DN0S8,540
@@ -1822,7 +1822,7 @@ vellum/workflows/runner/runner.py,sha256=sADrp593ia4auJ8fIP6jc5na3b5WaTvvBdjpkTt
1822
1822
  vellum/workflows/sandbox.py,sha256=jwlFFQjHDwmbVoBah_Q3i8K_BrzOt-F6TXFauiyVyIk,3021
1823
1823
  vellum/workflows/state/__init__.py,sha256=yUUdR-_Vl7UiixNDYQZ-GEM_kJI9dnOia75TtuNEsnE,60
1824
1824
  vellum/workflows/state/base.py,sha256=m9fCqbZn21GshCVCjJTD1dPZEQjFrsMXqlg7tM9fIwM,24283
1825
- vellum/workflows/state/context.py,sha256=i9tQKTB2b2SBpNObtb8skTv63lQcwUDW1ZQ0qDTnGJA,5181
1825
+ vellum/workflows/state/context.py,sha256=6ToLxjwz106U5UFXtFXR9-mjvzZun0UaMkbSm8wwZ-c,5670
1826
1826
  vellum/workflows/state/delta.py,sha256=7h8wR10lRCm15SykaPj-gSEvvsMjCwYLPsOx3nsvBQg,440
1827
1827
  vellum/workflows/state/encoder.py,sha256=HdNlabmBOcFSeY_dgn4LNtQEugyzsw3p4mvn2ChC1Io,3380
1828
1828
  vellum/workflows/state/store.py,sha256=uVe-oN73KwGV6M6YLhwZMMUQhzTQomsVfVnb8V91gVo,1147
@@ -1834,7 +1834,7 @@ vellum/workflows/tests/test_undefined.py,sha256=zMCVliCXVNLrlC6hEGyOWDnQADJ2g83y
1834
1834
  vellum/workflows/types/__init__.py,sha256=KxUTMBGzuRCfiMqzzsykOeVvrrkaZmTTo1a7SLu8gRM,68
1835
1835
  vellum/workflows/types/code_execution_node_wrappers.py,sha256=3MNIoFZKzVzNS5qFLVuDwMV17QJw72zo7NRf52yMq5A,3074
1836
1836
  vellum/workflows/types/core.py,sha256=TggDVs2lVya33xvu374EDhMC1b7RRlAAs0zWLaF46BA,1385
1837
- vellum/workflows/types/definition.py,sha256=PjHTAfBGcy_I4x_YdySP4OTmIbjGR5rU0plCnZlLsrQ,4900
1837
+ vellum/workflows/types/definition.py,sha256=AiiA1tg7RUpcX3d4xy6GhOET65ZPDq7ushM8T1B06Fo,4909
1838
1838
  vellum/workflows/types/generics.py,sha256=8jptbEx1fnJV0Lhj0MpCJOT6yNiEWeTOYOwrEAb5CRU,1576
1839
1839
  vellum/workflows/types/stack.py,sha256=h7NE0vXR7l9DevFBIzIAk1Zh59K-kECQtDTKOUunwMY,1314
1840
1840
  vellum/workflows/types/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -1852,16 +1852,16 @@ vellum/workflows/utils/tests/test_names.py,sha256=aOqpyvMsOEK_9mg_-yaNxQDW7QQfwq
1852
1852
  vellum/workflows/utils/tests/test_uuids.py,sha256=i77ABQ0M3S-aFLzDXHJq_yr5FPkJEWCMBn1HJ3DObrE,437
1853
1853
  vellum/workflows/utils/tests/test_vellum_variables.py,sha256=vbnKgm41aB5OXlO-ZIPbhQ6xDiZkT8KMxCLqz4zocWY,1791
1854
1854
  vellum/workflows/utils/uuids.py,sha256=DFzPv9RCvsKhvdTEIQyfSek2A31D6S_QcmeLPbgrgTY,739
1855
- vellum/workflows/utils/vellum_variables.py,sha256=vg7PLTqBoPLWXrcFR2vOfJpKkzvDC85cL2sSUqDWXWU,5503
1855
+ vellum/workflows/utils/vellum_variables.py,sha256=-CohqD3AeyCYzqwyrPZ7mt_lt7ibWLyx0MuS484feJk,5503
1856
1856
  vellum/workflows/vellum_client.py,sha256=xkfoucodxNK5JR2-lbRqZx3xzDgExWkP6kySrpi_Ubc,1079
1857
1857
  vellum/workflows/workflows/__init__.py,sha256=KY45TqvavCCvXIkyCFMEc0dc6jTMOUci93U2DUrlZYc,66
1858
- vellum/workflows/workflows/base.py,sha256=C17t-YpaBishP5PNThPgmMtYQsint55AcPIweBTVi7I,27354
1858
+ vellum/workflows/workflows/base.py,sha256=TPsdIj8bcMZikytxIJd-wyS7TGSf1FkAQnfVkf6zSrI,27393
1859
1859
  vellum/workflows/workflows/event_filters.py,sha256=GSxIgwrX26a1Smfd-6yss2abGCnadGsrSZGa7t7LpJA,2008
1860
1860
  vellum/workflows/workflows/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1861
1861
  vellum/workflows/workflows/tests/test_base_workflow.py,sha256=ptMntHzVyy8ZuzNgeTuk7hREgKQ5UBdgq8VJFSGaW4Y,20832
1862
1862
  vellum/workflows/workflows/tests/test_context.py,sha256=VJBUcyWVtMa_lE5KxdhgMu0WYNYnUQUDvTF7qm89hJ0,2333
1863
- vellum_ai-1.2.1.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1864
- vellum_ai-1.2.1.dist-info/METADATA,sha256=nEUNGhBu1caPk6Y7wL35iN4uruK97jR6QHLI-LRB5cw,5547
1865
- vellum_ai-1.2.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1866
- vellum_ai-1.2.1.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1867
- vellum_ai-1.2.1.dist-info/RECORD,,
1863
+ vellum_ai-1.2.2.dist-info/LICENSE,sha256=hOypcdt481qGNISA784bnAGWAE6tyIf9gc2E78mYC3E,1574
1864
+ vellum_ai-1.2.2.dist-info/METADATA,sha256=7WZjTaQIebzPDryrIbPmVwD4iETt2g-r_GLQQzXkkhI,5547
1865
+ vellum_ai-1.2.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1866
+ vellum_ai-1.2.2.dist-info/entry_points.txt,sha256=HCH4yc_V3J_nDv3qJzZ_nYS8llCHZViCDP1ejgCc5Ak,42
1867
+ vellum_ai-1.2.2.dist-info/RECORD,,
@@ -183,8 +183,6 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
183
183
  existing_adornments = adornments if adornments is not None else []
184
184
  return display_class().serialize(display_context, adornments=existing_adornments + [adornment])
185
185
 
186
- ports = self.serialize_ports(display_context)
187
-
188
186
  outputs: JsonArray = []
189
187
  for output in node.Outputs:
190
188
  type = primitive_type_to_vellum_variable_type(output)
@@ -207,14 +205,7 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
207
205
  "id": str(node_id),
208
206
  "label": self.label,
209
207
  "type": "GENERIC",
210
- "display_data": self.get_display_data().dict(),
211
- "base": self.get_base().dict(),
212
- "definition": self.get_definition().dict(),
213
- "trigger": {
214
- "id": str(self.get_target_handle_id()),
215
- "merge_behavior": node.Trigger.merge_behavior.value,
216
- },
217
- "ports": ports,
208
+ **self.serialize_generic_fields(display_context),
218
209
  "adornments": adornments,
219
210
  "attributes": attributes,
220
211
  "outputs": outputs,
@@ -247,6 +238,14 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
247
238
 
248
239
  return ports
249
240
 
241
+ def serialize_trigger(self) -> JsonObject:
242
+ """Serialize the trigger of the node."""
243
+ node = self._node
244
+ return {
245
+ "id": str(self.get_target_handle_id()),
246
+ "merge_behavior": node.Trigger.merge_behavior.value,
247
+ }
248
+
250
249
  def _serialize_attributes(self, display_context: "WorkflowDisplayContext") -> JsonArray:
251
250
  """Serialize node attributes, skipping unserializable ones."""
252
251
  attributes: JsonArray = []
@@ -271,6 +270,16 @@ class BaseNodeDisplay(Generic[NodeType], metaclass=BaseNodeDisplayMeta):
271
270
 
272
271
  return attributes
273
272
 
273
+ def serialize_generic_fields(self, display_context: "WorkflowDisplayContext") -> JsonObject:
274
+ """Serialize generic fields that are common to all nodes."""
275
+ return {
276
+ "display_data": self.get_display_data().dict(),
277
+ "base": self.get_base().dict(),
278
+ "definition": self.get_definition().dict(),
279
+ "trigger": self.serialize_trigger(),
280
+ "ports": self.serialize_ports(display_context),
281
+ }
282
+
274
283
  def get_base(self) -> CodeResourceDefinition:
275
284
  node = self._node
276
285
 
@@ -213,10 +213,7 @@ class BaseAPINodeDisplay(BaseNodeDisplay[_APINodeType], Generic[_APINodeType]):
213
213
  "json_output_id": str(json_output_display.id),
214
214
  "status_code_output_id": str(status_code_output_display.id),
215
215
  },
216
- "display_data": self.get_display_data().dict(),
217
- "base": self.get_base().dict(),
218
- "definition": self.get_definition().dict(),
219
- "ports": self.serialize_ports(display_context),
216
+ **self.serialize_generic_fields(display_context),
220
217
  }
221
218
 
222
219
  attributes = self._serialize_attributes(display_context)
@@ -103,8 +103,5 @@ class BaseCodeExecutionNodeDisplay(BaseNodeDisplay[_CodeExecutionNodeType], Gene
103
103
  "output_id": str(self.output_id) if self.output_id else str(output_display.id),
104
104
  "log_output_id": str(self.log_output_id) if self.log_output_id else str(log_output_display.id),
105
105
  },
106
- "display_data": self.get_display_data().dict(),
107
- "base": self.get_base().dict(),
108
- "definition": self.get_definition().dict(),
109
- "ports": self.serialize_ports(display_context),
106
+ **self.serialize_generic_fields(display_context),
110
107
  }
@@ -217,10 +217,7 @@ but the defined conditions have length {len(condition_ids)}"""
217
217
  "conditions": conditions, # type: ignore
218
218
  "version": "2",
219
219
  },
220
- "display_data": self.get_display_data().dict(),
221
- "base": self.get_base().dict(),
222
- "definition": self.get_definition().dict(),
223
- "ports": self.serialize_ports(display_context),
220
+ **self.serialize_generic_fields(display_context),
224
221
  }
225
222
 
226
223
  def get_nested_rule_details_by_path(
@@ -2,7 +2,7 @@ from uuid import UUID
2
2
  from typing import Any, ClassVar, Generic, Optional, TypeVar
3
3
 
4
4
  from vellum.workflows.nodes import ErrorNode
5
- from vellum.workflows.types.core import JsonObject
5
+ from vellum.workflows.types.core import JsonArray, JsonObject
6
6
  from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
7
7
  from vellum_ee.workflows.display.nodes.utils import raise_if_descriptor
8
8
  from vellum_ee.workflows.display.nodes.vellum.utils import create_node_input
@@ -20,6 +20,10 @@ class BaseErrorNodeDisplay(BaseNodeDisplay[_ErrorNodeType], Generic[_ErrorNodeTy
20
20
 
21
21
  __serializable_inputs__ = {ErrorNode.error}
22
22
 
23
+ def serialize_ports(self, display_context: "WorkflowDisplayContext") -> JsonArray:
24
+ """Error nodes have no ports."""
25
+ return []
26
+
23
27
  def serialize(self, display_context: WorkflowDisplayContext, **_kwargs) -> JsonObject:
24
28
  node_id = self.node_id
25
29
  error_source_input_id = self.node_input_ids_by_name.get(
@@ -47,9 +51,7 @@ class BaseErrorNodeDisplay(BaseNodeDisplay[_ErrorNodeType], Generic[_ErrorNodeTy
47
51
  "target_handle_id": str(self.get_target_handle_id()),
48
52
  "error_source_input_id": str(error_source_input_id),
49
53
  },
50
- "display_data": self.get_display_data().dict(),
51
- "base": self.get_base().dict(),
52
- "definition": self.get_definition().dict(),
54
+ **self.serialize_generic_fields(display_context),
53
55
  }
54
56
 
55
57
  if self.name:
@@ -2,7 +2,7 @@ from uuid import UUID
2
2
  from typing import ClassVar, Generic, Optional, TypeVar
3
3
 
4
4
  from vellum.workflows.nodes.displayable.final_output_node import FinalOutputNode
5
- from vellum.workflows.types.core import JsonObject
5
+ from vellum.workflows.types.core import JsonArray, JsonObject
6
6
  from vellum.workflows.utils.uuids import uuid4_from_hash
7
7
  from vellum_ee.workflows.display.nodes.base_node_display import BaseNodeDisplay
8
8
  from vellum_ee.workflows.display.nodes.utils import to_kebab_case
@@ -19,6 +19,10 @@ NODE_INPUT_KEY = "node_input"
19
19
  class BaseFinalOutputNodeDisplay(BaseNodeDisplay[_FinalOutputNodeType], Generic[_FinalOutputNodeType]):
20
20
  output_name: ClassVar[Optional[str]] = None
21
21
 
22
+ def serialize_ports(self, display_context: "WorkflowDisplayContext") -> JsonArray:
23
+ """Final output nodes have no ports."""
24
+ return []
25
+
22
26
  def serialize(self, display_context: WorkflowDisplayContext, **_kwargs) -> JsonObject:
23
27
  node = self._node
24
28
  node_id = self.node_id
@@ -45,9 +49,7 @@ class BaseFinalOutputNodeDisplay(BaseNodeDisplay[_FinalOutputNodeType], Generic[
45
49
  "node_input_id": str(node_input.id),
46
50
  },
47
51
  "inputs": [node_input.dict()],
48
- "display_data": self.get_display_data().dict(),
49
- "base": self.get_base().dict(),
50
- "definition": self.get_definition().dict(),
52
+ **self.serialize_generic_fields(display_context),
51
53
  "outputs": [
52
54
  {
53
55
  "id": str(self._get_output_id()),
@@ -45,8 +45,5 @@ class BaseGuardrailNodeDisplay(BaseNodeDisplay[_GuardrailNodeType], Generic[_Gua
45
45
  "metric_definition_id": str(raise_if_descriptor(node.metric_definition)),
46
46
  "release_tag": raise_if_descriptor(node.release_tag),
47
47
  },
48
- "display_data": self.get_display_data().dict(),
49
- "base": self.get_base().dict(),
50
- "definition": self.get_definition().dict(),
51
- "ports": self.serialize_ports(display_context),
48
+ **self.serialize_generic_fields(display_context),
52
49
  }
@@ -109,19 +109,12 @@ class BaseInlinePromptNodeDisplay(BaseNodeDisplay[_InlinePromptNodeType], Generi
109
109
  },
110
110
  "ml_model_name": ml_model,
111
111
  },
112
- "display_data": self.get_display_data().dict(),
113
- "base": self.get_base().dict(),
114
- "definition": self.get_definition().dict(),
115
- "trigger": {
116
- "id": str(self.get_target_handle_id()),
117
- "merge_behavior": node.Trigger.merge_behavior.value,
118
- },
112
+ **self.serialize_generic_fields(display_context),
119
113
  "outputs": [
120
114
  {"id": str(json_display.id), "name": "json", "type": "JSON", "value": None},
121
115
  {"id": str(output_display.id), "name": "text", "type": "STRING", "value": None},
122
116
  {"id": str(array_display.id), "name": "results", "type": "ARRAY", "value": None},
123
117
  ],
124
- "ports": self.serialize_ports(display_context),
125
118
  }
126
119
  attributes = self._serialize_attributes(display_context)
127
120
  if attributes:
@@ -55,10 +55,7 @@ class BaseInlineSubworkflowNodeDisplay(
55
55
  "input_variables": [workflow_input.dict() for workflow_input in workflow_inputs],
56
56
  "output_variables": [workflow_output.dict() for workflow_output in workflow_outputs],
57
57
  },
58
- "display_data": self.get_display_data().dict(),
59
- "base": self.get_base().dict(),
60
- "definition": self.get_definition().dict(),
61
- "ports": self.serialize_ports(display_context),
58
+ **self.serialize_generic_fields(display_context),
62
59
  }
63
60
 
64
61
  def _generate_node_and_workflow_inputs(
@@ -79,8 +79,5 @@ class BaseMapNodeDisplay(BaseAdornmentNodeDisplay[_MapNodeType], Generic[_MapNod
79
79
  "item_input_id": item_workflow_input_id,
80
80
  "index_input_id": index_workflow_input_id,
81
81
  },
82
- "display_data": self.get_display_data().dict(),
83
- "base": self.get_base().dict(),
84
- "definition": self.get_definition().dict(),
85
- "ports": self.serialize_ports(display_context),
82
+ **self.serialize_generic_fields(display_context),
86
83
  }
@@ -47,10 +47,7 @@ class BaseMergeNodeDisplay(BaseNodeDisplay[_MergeNodeType], Generic[_MergeNodeTy
47
47
  "target_handles": [{"id": str(target_handle_id)} for target_handle_id in target_handle_ids],
48
48
  "source_handle_id": str(self.get_source_handle_id(display_context.port_displays)),
49
49
  },
50
- "display_data": self.get_display_data().dict(),
51
- "base": self.get_base().dict(),
52
- "definition": self.get_definition().dict(),
53
- "ports": self.serialize_ports(display_context),
50
+ **self.serialize_generic_fields(display_context),
54
51
  }
55
52
 
56
53
  def get_target_handle_ids(self) -> Optional[List[UUID]]:
@@ -13,7 +13,7 @@ class BaseNoteNodeDisplay(BaseNodeDisplay[_NoteNodeType], Generic[_NoteNodeType]
13
13
  style: ClassVar[Union[Dict[str, Any], None]] = None
14
14
 
15
15
  def serialize(self, display_context: WorkflowDisplayContext, **kwargs: Any) -> JsonObject:
16
- del display_context, kwargs # Unused parameters
16
+ del kwargs # Unused parameters
17
17
  node_id = self.node_id
18
18
 
19
19
  return {
@@ -25,7 +25,5 @@ class BaseNoteNodeDisplay(BaseNodeDisplay[_NoteNodeType], Generic[_NoteNodeType]
25
25
  "text": self.text,
26
26
  "style": self.style,
27
27
  },
28
- "display_data": self.get_display_data().dict(),
29
- "base": self.get_base().dict(),
30
- "definition": self.get_definition().dict(),
28
+ **self.serialize_generic_fields(display_context),
31
29
  }
@@ -64,10 +64,7 @@ class BasePromptDeploymentNodeDisplay(BaseNodeDisplay[_PromptDeploymentNodeType]
64
64
  "release_tag": raise_if_descriptor(node.release_tag),
65
65
  "ml_model_fallbacks": list(ml_model_fallbacks) if ml_model_fallbacks else None,
66
66
  },
67
- "display_data": self.get_display_data().dict(),
68
- "base": self.get_base().dict(),
69
- "definition": self.get_definition().dict(),
70
- "ports": self.serialize_ports(display_context),
67
+ **self.serialize_generic_fields(display_context),
71
68
  "outputs": [
72
69
  {"id": str(json_display.id), "name": "json", "type": "JSON", "value": None},
73
70
  {"id": str(output_display.id), "name": "text", "type": "STRING", "value": None},
@@ -74,10 +74,7 @@ class BaseSearchNodeDisplay(BaseNodeDisplay[_SearchNodeType], Generic[_SearchNod
74
74
  "external_id_filters_node_input_id": str(node_inputs["external_id_filters"].id),
75
75
  "metadata_filters_node_input_id": str(node_inputs["metadata_filters"].id),
76
76
  },
77
- "display_data": self.get_display_data().dict(),
78
- "base": self.get_base().dict(),
79
- "definition": self.get_definition().dict(),
80
- "ports": self.serialize_ports(display_context),
77
+ **self.serialize_generic_fields(display_context),
81
78
  }
82
79
 
83
80
  def _generate_search_node_inputs(
@@ -61,8 +61,5 @@ class BaseSubworkflowDeploymentNodeDisplay(
61
61
  "workflow_deployment_id": str(deployment.id),
62
62
  "release_tag": raise_if_descriptor(node.release_tag),
63
63
  },
64
- "display_data": self.get_display_data().dict(),
65
- "base": self.get_base().dict(),
66
- "definition": self.get_definition().dict(),
67
- "ports": self.serialize_ports(display_context),
64
+ **self.serialize_generic_fields(display_context),
68
65
  }
@@ -66,8 +66,5 @@ class BaseTemplatingNodeDisplay(BaseNodeDisplay[_TemplatingNodeType], Generic[_T
66
66
  "template_node_input_id": str(template_node_input.id),
67
67
  "output_type": inferred_output_type,
68
68
  },
69
- "display_data": self.get_display_data().dict(),
70
- "base": self.get_base().dict(),
71
- "definition": self.get_definition().dict(),
72
- "ports": self.serialize_ports(display_context),
69
+ **self.serialize_generic_fields(display_context),
73
70
  }
@@ -251,6 +251,7 @@ def test_serialize_node__with_non_exist_code_input_path_with_dry_run():
251
251
  ],
252
252
  },
253
253
  "ports": [{"id": "7afa3858-f50c-4116-936a-a401e3b2c60f", "name": "default", "type": "DEFAULT"}],
254
+ "trigger": {"id": "3a39ea63-9f86-4891-a902-0216a7190720", "merge_behavior": "AWAIT_ANY"},
254
255
  },
255
256
  ],
256
257
  "edges": [
@@ -203,6 +203,10 @@ def test_serialize_workflow(vellum_client):
203
203
  "name": "SimpleAPINode",
204
204
  "module": ["tests", "workflows", "basic_api_node", "workflow"],
205
205
  },
206
+ "trigger": {
207
+ "id": "14b538a5-aedb-41f3-b579-039956b7c7ed",
208
+ "merge_behavior": "AWAIT_ANY",
209
+ },
206
210
  "ports": [{"id": "7c33b4d3-9204-4bd5-9371-80ee34f83073", "name": "default", "type": "DEFAULT"}],
207
211
  },
208
212
  api_node,