vellum-ai 0.14.63__py3-none-any.whl → 1.13.5__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.

Potentially problematic release.


This version of vellum-ai might be problematic. Click here for more details.

Files changed (1362) hide show
  1. vellum/__init__.py +287 -4
  2. vellum/client/README.md +69 -16
  3. vellum/client/__init__.py +598 -1437
  4. vellum/client/core/__init__.py +5 -0
  5. vellum/client/core/api_error.py +13 -5
  6. vellum/client/core/client_wrapper.py +30 -4
  7. vellum/client/core/force_multipart.py +18 -0
  8. vellum/client/core/http_client.py +70 -26
  9. vellum/client/core/http_response.py +55 -0
  10. vellum/client/core/jsonable_encoder.py +0 -1
  11. vellum/client/core/pydantic_utilities.py +90 -117
  12. vellum/client/core/serialization.py +7 -3
  13. vellum/client/errors/__init__.py +14 -1
  14. vellum/client/errors/bad_request_error.py +4 -3
  15. vellum/client/errors/forbidden_error.py +4 -3
  16. vellum/client/errors/internal_server_error.py +4 -3
  17. vellum/client/errors/misdirected_request_error.py +11 -0
  18. vellum/client/errors/not_found_error.py +4 -3
  19. vellum/client/errors/too_many_requests_error.py +10 -0
  20. vellum/client/errors/unauthorized_error.py +11 -0
  21. vellum/client/raw_client.py +2725 -0
  22. vellum/client/reference.md +3160 -1217
  23. vellum/client/resources/__init__.py +16 -2
  24. vellum/client/resources/ad_hoc/__init__.py +2 -0
  25. vellum/client/resources/ad_hoc/client.py +173 -377
  26. vellum/client/resources/ad_hoc/raw_client.py +569 -0
  27. vellum/client/resources/container_images/__init__.py +2 -0
  28. vellum/client/resources/container_images/client.py +365 -185
  29. vellum/client/resources/container_images/raw_client.py +693 -0
  30. vellum/client/resources/deployments/__init__.py +2 -0
  31. vellum/client/resources/deployments/client.py +119 -463
  32. vellum/client/resources/deployments/raw_client.py +1002 -0
  33. vellum/client/resources/deployments/types/__init__.py +2 -0
  34. vellum/client/resources/document_indexes/__init__.py +2 -0
  35. vellum/client/resources/document_indexes/client.py +131 -383
  36. vellum/client/resources/document_indexes/raw_client.py +866 -0
  37. vellum/client/resources/document_indexes/types/__init__.py +2 -0
  38. vellum/client/resources/documents/__init__.py +2 -0
  39. vellum/client/resources/documents/client.py +111 -333
  40. vellum/client/resources/documents/raw_client.py +672 -0
  41. vellum/client/resources/{release_reviews → environments}/__init__.py +2 -0
  42. vellum/client/resources/environments/client.py +106 -0
  43. vellum/client/resources/environments/raw_client.py +95 -0
  44. vellum/client/resources/events/__init__.py +4 -0
  45. vellum/client/resources/events/client.py +201 -0
  46. vellum/client/resources/events/raw_client.py +211 -0
  47. vellum/client/resources/folder_entities/__init__.py +2 -0
  48. vellum/client/resources/folder_entities/client.py +56 -95
  49. vellum/client/resources/folder_entities/raw_client.py +276 -0
  50. vellum/client/resources/folder_entities/types/__init__.py +2 -0
  51. vellum/client/resources/integration_auth_configs/__init__.py +4 -0
  52. vellum/client/resources/integration_auth_configs/client.py +188 -0
  53. vellum/client/resources/integration_auth_configs/raw_client.py +173 -0
  54. vellum/client/resources/integration_providers/__init__.py +4 -0
  55. vellum/client/resources/integration_providers/client.py +325 -0
  56. vellum/client/resources/integration_providers/raw_client.py +299 -0
  57. vellum/client/resources/integrations/__init__.py +4 -0
  58. vellum/client/resources/integrations/client.py +514 -0
  59. vellum/client/resources/integrations/raw_client.py +618 -0
  60. vellum/client/resources/metric_definitions/__init__.py +2 -0
  61. vellum/client/resources/metric_definitions/client.py +60 -106
  62. vellum/client/resources/metric_definitions/raw_client.py +224 -0
  63. vellum/client/resources/ml_models/__init__.py +2 -0
  64. vellum/client/resources/ml_models/client.py +37 -46
  65. vellum/client/resources/ml_models/raw_client.py +102 -0
  66. vellum/client/resources/organizations/__init__.py +2 -0
  67. vellum/client/resources/organizations/client.py +37 -45
  68. vellum/client/resources/organizations/raw_client.py +95 -0
  69. vellum/client/resources/prompts/__init__.py +2 -0
  70. vellum/client/resources/prompts/client.py +84 -202
  71. vellum/client/resources/prompts/raw_client.py +353 -0
  72. vellum/client/resources/sandboxes/__init__.py +2 -0
  73. vellum/client/resources/sandboxes/client.py +69 -159
  74. vellum/client/resources/sandboxes/raw_client.py +392 -0
  75. vellum/client/resources/test_suite_runs/__init__.py +2 -0
  76. vellum/client/resources/test_suite_runs/client.py +65 -157
  77. vellum/client/resources/test_suite_runs/raw_client.py +354 -0
  78. vellum/client/resources/test_suites/__init__.py +2 -0
  79. vellum/client/resources/test_suites/client.py +162 -266
  80. vellum/client/resources/test_suites/raw_client.py +530 -0
  81. vellum/client/resources/uploaded_files/__init__.py +4 -0
  82. vellum/client/resources/uploaded_files/client.py +230 -0
  83. vellum/client/resources/uploaded_files/raw_client.py +316 -0
  84. vellum/client/resources/workflow_deployments/__init__.py +2 -0
  85. vellum/client/resources/workflow_deployments/client.py +456 -351
  86. vellum/client/resources/workflow_deployments/raw_client.py +1393 -0
  87. vellum/client/resources/workflow_deployments/types/__init__.py +2 -0
  88. vellum/client/resources/workflow_executions/__init__.py +4 -0
  89. vellum/client/resources/workflow_executions/client.py +140 -0
  90. vellum/client/resources/workflow_executions/raw_client.py +173 -0
  91. vellum/client/resources/workflow_sandboxes/__init__.py +2 -0
  92. vellum/client/resources/workflow_sandboxes/client.py +58 -123
  93. vellum/client/resources/workflow_sandboxes/raw_client.py +291 -0
  94. vellum/client/resources/workflow_sandboxes/types/__init__.py +2 -0
  95. vellum/client/resources/workflows/__init__.py +2 -0
  96. vellum/client/resources/workflows/client.py +464 -145
  97. vellum/client/resources/workflows/raw_client.py +884 -0
  98. vellum/client/resources/workspace_secrets/__init__.py +2 -0
  99. vellum/client/resources/workspace_secrets/client.py +43 -100
  100. vellum/client/resources/workspace_secrets/raw_client.py +219 -0
  101. vellum/client/resources/workspaces/__init__.py +2 -0
  102. vellum/client/resources/workspaces/client.py +37 -45
  103. vellum/client/resources/workspaces/raw_client.py +95 -0
  104. vellum/client/tests/__init__.py +0 -0
  105. vellum/client/tests/test_utils.py +34 -0
  106. vellum/client/types/__init__.py +260 -0
  107. vellum/client/types/ad_hoc_execute_prompt_event.py +3 -2
  108. vellum/client/types/ad_hoc_expand_meta.py +2 -2
  109. vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py +3 -3
  110. vellum/client/types/ad_hoc_initiated_prompt_execution_meta.py +2 -2
  111. vellum/client/types/ad_hoc_rejected_prompt_execution_meta.py +3 -3
  112. vellum/client/types/ad_hoc_streaming_prompt_execution_meta.py +2 -2
  113. vellum/client/types/api_actor_type_enum.py +7 -0
  114. vellum/client/types/api_node_result.py +3 -3
  115. vellum/client/types/api_node_result_data.py +4 -4
  116. vellum/client/types/api_request_parent_context.py +17 -10
  117. vellum/client/types/api_version_enum.py +1 -1
  118. vellum/client/types/array_chat_message_content.py +3 -3
  119. vellum/client/types/array_chat_message_content_item.py +7 -4
  120. vellum/client/types/array_chat_message_content_item_request.py +7 -4
  121. vellum/client/types/array_chat_message_content_request.py +3 -3
  122. vellum/client/types/array_input.py +12 -6
  123. vellum/client/types/array_vellum_value.py +4 -4
  124. vellum/client/types/array_vellum_value_request.py +4 -4
  125. vellum/client/types/audio_chat_message_content.py +3 -3
  126. vellum/client/types/audio_chat_message_content_request.py +3 -3
  127. vellum/client/types/audio_input.py +30 -0
  128. vellum/client/types/audio_input_request.py +30 -0
  129. vellum/client/types/audio_prompt_block.py +4 -4
  130. vellum/client/types/audio_vellum_value.py +3 -3
  131. vellum/client/types/audio_vellum_value_request.py +3 -3
  132. vellum/client/types/auth_type_enum.py +5 -0
  133. vellum/client/types/base_output.py +4 -4
  134. vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large.py +2 -2
  135. vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large_request.py +2 -2
  136. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1.py +2 -2
  137. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1_request.py +2 -2
  138. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1.py +2 -2
  139. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1_request.py +2 -2
  140. vellum/client/types/build_status_enum.py +5 -0
  141. vellum/client/types/chat_history_input.py +3 -3
  142. vellum/client/types/chat_history_input_request.py +3 -3
  143. vellum/client/types/chat_history_vellum_value.py +3 -3
  144. vellum/client/types/chat_history_vellum_value_request.py +3 -3
  145. vellum/client/types/chat_message.py +4 -4
  146. vellum/client/types/chat_message_content.py +7 -4
  147. vellum/client/types/chat_message_content_request.py +7 -4
  148. vellum/client/types/chat_message_prompt_block.py +7 -7
  149. vellum/client/types/chat_message_request.py +4 -4
  150. vellum/client/types/check_workflow_execution_status_error.py +21 -0
  151. vellum/client/types/check_workflow_execution_status_response.py +29 -0
  152. vellum/client/types/code_execution_node_array_result.py +11 -5
  153. vellum/client/types/code_execution_node_chat_history_result.py +3 -3
  154. vellum/client/types/code_execution_node_error_result.py +3 -3
  155. vellum/client/types/code_execution_node_function_call_result.py +3 -3
  156. vellum/client/types/code_execution_node_json_result.py +2 -2
  157. vellum/client/types/code_execution_node_number_result.py +2 -2
  158. vellum/client/types/code_execution_node_result.py +10 -4
  159. vellum/client/types/code_execution_node_result_data.py +10 -4
  160. vellum/client/types/code_execution_node_result_output.py +6 -5
  161. vellum/client/types/code_execution_node_search_results_result.py +3 -3
  162. vellum/client/types/code_execution_node_string_result.py +2 -2
  163. vellum/client/types/code_execution_package.py +3 -2
  164. vellum/client/types/code_execution_package_request.py +21 -0
  165. vellum/client/types/code_executor_input.py +15 -6
  166. vellum/client/types/code_executor_response.py +11 -5
  167. vellum/client/types/code_executor_secret_input.py +3 -3
  168. vellum/client/types/code_resource_definition.py +3 -3
  169. vellum/client/types/compile_prompt_deployment_expand_meta_request.py +2 -2
  170. vellum/client/types/compile_prompt_meta.py +2 -2
  171. vellum/client/types/components_schemas_composio_execute_tool_request.py +5 -0
  172. vellum/client/types/components_schemas_composio_execute_tool_response.py +5 -0
  173. vellum/client/types/components_schemas_composio_integration_exec_config.py +5 -0
  174. vellum/client/types/components_schemas_composio_tool_definition.py +5 -0
  175. vellum/client/types/components_schemas_slim_composio_tool_definition.py +5 -0
  176. vellum/client/types/composio_execute_tool_request.py +29 -0
  177. vellum/client/types/composio_execute_tool_response.py +24 -0
  178. vellum/client/types/composio_integration_exec_config.py +21 -0
  179. vellum/client/types/composio_tool_definition.py +31 -0
  180. vellum/client/types/conditional_node_result.py +3 -3
  181. vellum/client/types/conditional_node_result_data.py +2 -2
  182. vellum/client/types/container_image_build_config.py +22 -0
  183. vellum/client/types/container_image_container_image_tag.py +3 -2
  184. vellum/client/types/container_image_read.py +8 -4
  185. vellum/client/types/create_test_suite_test_case_request.py +9 -3
  186. vellum/client/types/create_workflow_event_request.py +7 -0
  187. vellum/client/types/dataset_row_push_request.py +23 -0
  188. vellum/client/types/delimiter_chunker_config.py +20 -0
  189. vellum/client/types/delimiter_chunker_config_request.py +20 -0
  190. vellum/client/types/delimiter_chunking.py +21 -0
  191. vellum/client/types/delimiter_chunking_request.py +21 -0
  192. vellum/client/types/deployment_history_item.py +10 -4
  193. vellum/client/types/deployment_provider_payload_response.py +4 -4
  194. vellum/client/types/deployment_read.py +15 -9
  195. vellum/client/types/deployment_release_tag_deployment_history_item.py +2 -2
  196. vellum/client/types/deployment_release_tag_read.py +4 -4
  197. vellum/client/types/deprecated_prompt_request_input.py +8 -0
  198. vellum/client/types/docker_service_token.py +2 -2
  199. vellum/client/types/document_chat_message_content.py +3 -3
  200. vellum/client/types/document_chat_message_content_request.py +3 -3
  201. vellum/client/types/document_document_to_document_index.py +5 -4
  202. vellum/client/types/document_index_chunking.py +5 -1
  203. vellum/client/types/document_index_chunking_request.py +3 -1
  204. vellum/client/types/document_index_indexing_config.py +4 -4
  205. vellum/client/types/document_index_indexing_config_request.py +4 -4
  206. vellum/client/types/document_index_read.py +4 -4
  207. vellum/client/types/document_input.py +30 -0
  208. vellum/client/types/document_input_request.py +30 -0
  209. vellum/client/types/document_prompt_block.py +4 -4
  210. vellum/client/types/document_read.py +9 -5
  211. vellum/client/types/document_vellum_value.py +3 -3
  212. vellum/client/types/document_vellum_value_request.py +3 -3
  213. vellum/client/types/enriched_normalized_completion.py +3 -3
  214. vellum/client/types/environment_display_config.py +19 -0
  215. vellum/client/types/environment_read.py +23 -0
  216. vellum/client/types/ephemeral_prompt_cache_config.py +3 -3
  217. vellum/client/types/error_detail_response.py +22 -0
  218. vellum/client/types/error_input.py +3 -3
  219. vellum/client/types/error_vellum_value.py +3 -3
  220. vellum/client/types/error_vellum_value_request.py +3 -3
  221. vellum/client/types/event_create_response.py +31 -0
  222. vellum/client/types/execute_api_request_bearer_token.py +1 -0
  223. vellum/client/types/execute_api_request_headers_value.py +1 -0
  224. vellum/client/types/execute_api_response.py +6 -6
  225. vellum/client/types/execute_prompt_event.py +3 -2
  226. vellum/client/types/execute_prompt_response.py +1 -0
  227. vellum/client/types/execute_workflow_async_response.py +26 -0
  228. vellum/client/types/execute_workflow_response.py +10 -4
  229. vellum/client/types/execute_workflow_workflow_result_event.py +1 -0
  230. vellum/client/types/execution_array_vellum_value.py +12 -6
  231. vellum/client/types/execution_audio_vellum_value.py +31 -0
  232. vellum/client/types/execution_chat_history_vellum_value.py +3 -3
  233. vellum/client/types/execution_document_vellum_value.py +31 -0
  234. vellum/client/types/execution_error_vellum_value.py +3 -3
  235. vellum/client/types/execution_function_call_vellum_value.py +3 -3
  236. vellum/client/types/execution_image_vellum_value.py +31 -0
  237. vellum/client/types/execution_json_vellum_value.py +3 -3
  238. vellum/client/types/execution_number_vellum_value.py +3 -3
  239. vellum/client/types/execution_search_results_vellum_value.py +3 -3
  240. vellum/client/types/execution_string_vellum_value.py +3 -3
  241. vellum/client/types/execution_thinking_vellum_value.py +31 -0
  242. vellum/client/types/execution_vellum_value.py +16 -5
  243. vellum/client/types/execution_video_vellum_value.py +31 -0
  244. vellum/client/types/external_input_descriptor.py +3 -3
  245. vellum/client/types/external_parent_context.py +38 -0
  246. vellum/client/types/external_test_case_execution.py +10 -4
  247. vellum/client/types/external_test_case_execution_request.py +10 -4
  248. vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +23 -0
  249. vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +23 -0
  250. vellum/client/types/folder_entity.py +5 -2
  251. vellum/client/types/folder_entity_dataset.py +26 -0
  252. vellum/client/types/folder_entity_dataset_data.py +25 -0
  253. vellum/client/types/folder_entity_document_index.py +3 -3
  254. vellum/client/types/folder_entity_document_index_data.py +5 -3
  255. vellum/client/types/folder_entity_folder.py +3 -3
  256. vellum/client/types/folder_entity_folder_data.py +2 -2
  257. vellum/client/types/folder_entity_prompt_sandbox.py +3 -3
  258. vellum/client/types/folder_entity_prompt_sandbox_data.py +4 -3
  259. vellum/client/types/folder_entity_test_suite.py +3 -3
  260. vellum/client/types/folder_entity_test_suite_data.py +3 -3
  261. vellum/client/types/folder_entity_workflow_sandbox.py +3 -3
  262. vellum/client/types/folder_entity_workflow_sandbox_data.py +6 -3
  263. vellum/client/types/fulfilled_ad_hoc_execute_prompt_event.py +4 -4
  264. vellum/client/types/fulfilled_execute_prompt_event.py +4 -4
  265. vellum/client/types/fulfilled_execute_prompt_response.py +3 -3
  266. vellum/client/types/fulfilled_execute_workflow_workflow_result_event.py +11 -5
  267. vellum/client/types/fulfilled_prompt_execution_meta.py +3 -3
  268. vellum/client/types/fulfilled_workflow_node_result_event.py +12 -6
  269. vellum/client/types/function_call.py +2 -2
  270. vellum/client/types/function_call_chat_message_content.py +3 -3
  271. vellum/client/types/function_call_chat_message_content_request.py +3 -3
  272. vellum/client/types/function_call_chat_message_content_value.py +2 -2
  273. vellum/client/types/function_call_chat_message_content_value_request.py +2 -2
  274. vellum/client/types/function_call_input.py +3 -3
  275. vellum/client/types/function_call_prompt_block.py +4 -4
  276. vellum/client/types/function_call_request.py +2 -2
  277. vellum/client/types/function_call_vellum_value.py +3 -3
  278. vellum/client/types/function_call_vellum_value_request.py +3 -3
  279. vellum/client/types/function_definition.py +9 -4
  280. vellum/client/types/generate_options_request.py +3 -3
  281. vellum/client/types/generate_request.py +2 -2
  282. vellum/client/types/generate_response.py +3 -3
  283. vellum/client/types/generate_result.py +3 -3
  284. vellum/client/types/generate_result_data.py +3 -3
  285. vellum/client/types/generate_result_error.py +3 -3
  286. vellum/client/types/generate_stream_response.py +3 -3
  287. vellum/client/types/generate_stream_result.py +4 -4
  288. vellum/client/types/generate_stream_result_data.py +3 -3
  289. vellum/client/types/google_vertex_ai_vectorizer_config.py +2 -2
  290. vellum/client/types/google_vertex_ai_vectorizer_config_request.py +2 -2
  291. vellum/client/types/google_vertex_ai_vectorizer_gemini_embedding_001.py +21 -0
  292. vellum/client/types/google_vertex_ai_vectorizer_gemini_embedding_001_request.py +21 -0
  293. vellum/client/types/google_vertex_ai_vectorizer_text_embedding_004.py +3 -3
  294. vellum/client/types/google_vertex_ai_vectorizer_text_embedding_004_request.py +3 -3
  295. vellum/client/types/google_vertex_ai_vectorizer_text_multilingual_embedding_002.py +3 -3
  296. vellum/client/types/google_vertex_ai_vectorizer_text_multilingual_embedding_002_request.py +3 -3
  297. vellum/client/types/hkunlp_instructor_xl_vectorizer.py +3 -3
  298. vellum/client/types/hkunlp_instructor_xl_vectorizer_request.py +3 -3
  299. vellum/client/types/image_chat_message_content.py +3 -3
  300. vellum/client/types/image_chat_message_content_request.py +3 -3
  301. vellum/client/types/image_input.py +30 -0
  302. vellum/client/types/image_input_request.py +30 -0
  303. vellum/client/types/image_prompt_block.py +4 -4
  304. vellum/client/types/image_vellum_value.py +3 -3
  305. vellum/client/types/image_vellum_value_request.py +3 -3
  306. vellum/client/types/indexing_config_vectorizer.py +11 -4
  307. vellum/client/types/indexing_config_vectorizer_request.py +11 -4
  308. vellum/client/types/initiated_ad_hoc_execute_prompt_event.py +3 -3
  309. vellum/client/types/initiated_execute_prompt_event.py +3 -3
  310. vellum/client/types/initiated_prompt_execution_meta.py +2 -2
  311. vellum/client/types/initiated_workflow_node_result_event.py +12 -6
  312. vellum/client/types/instructor_vectorizer_config.py +2 -2
  313. vellum/client/types/instructor_vectorizer_config_request.py +2 -2
  314. vellum/client/types/integration.py +27 -0
  315. vellum/client/types/integration_auth_config_integration.py +23 -0
  316. vellum/client/types/integration_auth_config_integration_credential.py +19 -0
  317. vellum/client/types/integration_credential_access_type.py +5 -0
  318. vellum/client/types/integration_name.py +109 -0
  319. vellum/client/types/integration_provider.py +5 -0
  320. vellum/client/types/integration_read.py +30 -0
  321. vellum/client/types/integration_trigger_context.py +39 -0
  322. vellum/client/types/invoked_port.py +2 -2
  323. vellum/client/types/jinja_prompt_block.py +4 -4
  324. vellum/client/types/json_input.py +3 -3
  325. vellum/client/types/json_input_request.py +3 -3
  326. vellum/client/types/json_vellum_value.py +2 -2
  327. vellum/client/types/json_vellum_value_request.py +2 -2
  328. vellum/client/types/logical_operator.py +4 -0
  329. vellum/client/types/map_node_result.py +3 -3
  330. vellum/client/types/map_node_result_data.py +3 -3
  331. vellum/client/types/merge_node_result.py +3 -3
  332. vellum/client/types/merge_node_result_data.py +2 -2
  333. vellum/client/types/metadata_filter_config_request.py +12 -6
  334. vellum/client/types/metadata_filter_rule_request.py +5 -5
  335. vellum/client/types/metadata_filters_request.py +1 -0
  336. vellum/client/types/metric_definition_execution.py +10 -4
  337. vellum/client/types/metric_definition_history_item.py +10 -4
  338. vellum/client/types/metric_definition_input.py +3 -2
  339. vellum/client/types/metric_node_result.py +2 -2
  340. vellum/client/types/ml_model_read.py +6 -3
  341. vellum/client/types/ml_model_usage.py +2 -2
  342. vellum/client/types/ml_model_usage_wrapper.py +3 -3
  343. vellum/client/types/named_scenario_input_audio_variable_value_request.py +22 -0
  344. vellum/client/types/named_scenario_input_chat_history_variable_value_request.py +3 -3
  345. vellum/client/types/named_scenario_input_document_variable_value_request.py +22 -0
  346. vellum/client/types/named_scenario_input_image_variable_value_request.py +22 -0
  347. vellum/client/types/named_scenario_input_json_variable_value_request.py +2 -2
  348. vellum/client/types/named_scenario_input_request.py +11 -2
  349. vellum/client/types/named_scenario_input_string_variable_value_request.py +2 -2
  350. vellum/client/types/named_scenario_input_video_variable_value_request.py +22 -0
  351. vellum/client/types/named_test_case_array_variable_value.py +11 -5
  352. vellum/client/types/named_test_case_array_variable_value_request.py +11 -5
  353. vellum/client/types/named_test_case_audio_variable_value.py +26 -0
  354. vellum/client/types/named_test_case_audio_variable_value_request.py +26 -0
  355. vellum/client/types/named_test_case_chat_history_variable_value.py +3 -3
  356. vellum/client/types/named_test_case_chat_history_variable_value_request.py +3 -3
  357. vellum/client/types/named_test_case_document_variable_value.py +22 -0
  358. vellum/client/types/named_test_case_document_variable_value_request.py +22 -0
  359. vellum/client/types/named_test_case_error_variable_value.py +3 -3
  360. vellum/client/types/named_test_case_error_variable_value_request.py +3 -3
  361. vellum/client/types/named_test_case_function_call_variable_value.py +3 -3
  362. vellum/client/types/named_test_case_function_call_variable_value_request.py +3 -3
  363. vellum/client/types/named_test_case_image_variable_value.py +22 -0
  364. vellum/client/types/named_test_case_image_variable_value_request.py +22 -0
  365. vellum/client/types/named_test_case_json_variable_value.py +2 -2
  366. vellum/client/types/named_test_case_json_variable_value_request.py +2 -2
  367. vellum/client/types/named_test_case_number_variable_value.py +2 -2
  368. vellum/client/types/named_test_case_number_variable_value_request.py +2 -2
  369. vellum/client/types/named_test_case_search_results_variable_value.py +3 -3
  370. vellum/client/types/named_test_case_search_results_variable_value_request.py +3 -3
  371. vellum/client/types/named_test_case_string_variable_value.py +2 -2
  372. vellum/client/types/named_test_case_string_variable_value_request.py +2 -2
  373. vellum/client/types/named_test_case_variable_value.py +14 -5
  374. vellum/client/types/named_test_case_variable_value_request.py +14 -5
  375. vellum/client/types/named_test_case_video_variable_value.py +22 -0
  376. vellum/client/types/named_test_case_video_variable_value_request.py +22 -0
  377. vellum/client/types/node_execution_fulfilled_body.py +5 -4
  378. vellum/client/types/node_execution_fulfilled_event.py +24 -15
  379. vellum/client/types/node_execution_initiated_body.py +3 -3
  380. vellum/client/types/node_execution_initiated_event.py +24 -15
  381. vellum/client/types/node_execution_log_body.py +24 -0
  382. vellum/client/types/node_execution_log_event.py +47 -0
  383. vellum/client/types/node_execution_paused_body.py +3 -3
  384. vellum/client/types/node_execution_paused_event.py +24 -15
  385. vellum/client/types/node_execution_rejected_body.py +5 -4
  386. vellum/client/types/node_execution_rejected_event.py +24 -15
  387. vellum/client/types/node_execution_resumed_body.py +3 -3
  388. vellum/client/types/node_execution_resumed_event.py +24 -15
  389. vellum/client/types/node_execution_span.py +23 -12
  390. vellum/client/types/node_execution_span_attributes.py +4 -2
  391. vellum/client/types/node_execution_streaming_body.py +4 -4
  392. vellum/client/types/node_execution_streaming_event.py +24 -15
  393. vellum/client/types/node_input_compiled_array_value.py +11 -5
  394. vellum/client/types/node_input_compiled_audio_value.py +23 -0
  395. vellum/client/types/node_input_compiled_chat_history_value.py +3 -3
  396. vellum/client/types/node_input_compiled_document_value.py +23 -0
  397. vellum/client/types/node_input_compiled_error_value.py +3 -3
  398. vellum/client/types/node_input_compiled_function_call_value.py +3 -3
  399. vellum/client/types/node_input_compiled_image_value.py +23 -0
  400. vellum/client/types/node_input_compiled_json_value.py +2 -2
  401. vellum/client/types/node_input_compiled_number_value.py +2 -2
  402. vellum/client/types/node_input_compiled_search_results_value.py +3 -3
  403. vellum/client/types/node_input_compiled_secret_value.py +3 -3
  404. vellum/client/types/node_input_compiled_string_value.py +2 -2
  405. vellum/client/types/node_input_compiled_video_value.py +23 -0
  406. vellum/client/types/node_input_variable_compiled_value.py +14 -5
  407. vellum/client/types/node_output_compiled_array_value.py +12 -6
  408. vellum/client/types/node_output_compiled_chat_history_value.py +3 -3
  409. vellum/client/types/node_output_compiled_error_value.py +3 -3
  410. vellum/client/types/node_output_compiled_function_call_value.py +3 -3
  411. vellum/client/types/node_output_compiled_json_value.py +3 -3
  412. vellum/client/types/node_output_compiled_number_value.py +3 -3
  413. vellum/client/types/node_output_compiled_search_results_value.py +3 -3
  414. vellum/client/types/node_output_compiled_string_value.py +3 -3
  415. vellum/client/types/node_output_compiled_thinking_value.py +28 -0
  416. vellum/client/types/node_output_compiled_value.py +8 -5
  417. vellum/client/types/node_parent_context.py +14 -11
  418. vellum/client/types/normalized_log_probs.py +3 -3
  419. vellum/client/types/normalized_token_log_probs.py +2 -2
  420. vellum/client/types/number_input.py +3 -3
  421. vellum/client/types/number_vellum_value.py +2 -2
  422. vellum/client/types/number_vellum_value_request.py +2 -2
  423. vellum/client/types/open_ai_vectorizer_config.py +3 -3
  424. vellum/client/types/open_ai_vectorizer_config_request.py +3 -3
  425. vellum/client/types/open_ai_vectorizer_text_embedding_3_large.py +3 -3
  426. vellum/client/types/open_ai_vectorizer_text_embedding_3_large_request.py +3 -3
  427. vellum/client/types/open_ai_vectorizer_text_embedding_3_small.py +3 -3
  428. vellum/client/types/open_ai_vectorizer_text_embedding_3_small_request.py +3 -3
  429. vellum/client/types/open_ai_vectorizer_text_embedding_ada_002.py +3 -3
  430. vellum/client/types/open_ai_vectorizer_text_embedding_ada_002_request.py +3 -3
  431. vellum/client/types/organization_read.py +6 -3
  432. vellum/client/types/paginated_container_image_read_list.py +3 -3
  433. vellum/client/types/paginated_deployment_release_tag_read_list.py +3 -3
  434. vellum/client/types/paginated_document_index_read_list.py +3 -3
  435. vellum/client/types/paginated_folder_entity_list.py +3 -3
  436. vellum/client/types/paginated_slim_deployment_read_list.py +10 -4
  437. vellum/client/types/paginated_slim_document_list.py +3 -3
  438. vellum/client/types/paginated_slim_integration_auth_config_read_list.py +23 -0
  439. vellum/client/types/paginated_slim_integration_read_list.py +23 -0
  440. vellum/client/types/paginated_slim_tool_definition_list.py +23 -0
  441. vellum/client/types/paginated_slim_workflow_deployment_list.py +10 -4
  442. vellum/client/types/paginated_test_suite_run_execution_list.py +10 -4
  443. vellum/client/types/paginated_test_suite_test_case_list.py +10 -4
  444. vellum/client/types/paginated_workflow_deployment_release_list.py +30 -0
  445. vellum/client/types/paginated_workflow_release_tag_read_list.py +3 -3
  446. vellum/client/types/paginated_workflow_sandbox_example_list.py +3 -3
  447. vellum/client/types/parent_context.py +21 -11
  448. vellum/client/types/pdf_search_result_meta_source.py +2 -2
  449. vellum/client/types/pdf_search_result_meta_source_request.py +2 -2
  450. vellum/client/types/plain_text_prompt_block.py +4 -4
  451. vellum/client/types/price.py +3 -3
  452. vellum/client/types/private_vectorizer.py +23 -0
  453. vellum/client/types/private_vectorizer_request.py +23 -0
  454. vellum/client/types/processing_failure_reason_enum.py +3 -1
  455. vellum/client/types/prompt_block.py +9 -6
  456. vellum/client/types/prompt_deployment_expand_meta_request.py +2 -2
  457. vellum/client/types/prompt_deployment_input_request.py +16 -3
  458. vellum/client/types/prompt_deployment_parent_context.py +13 -10
  459. vellum/client/types/prompt_deployment_release.py +6 -6
  460. vellum/client/types/prompt_deployment_release_prompt_deployment.py +3 -2
  461. vellum/client/types/prompt_deployment_release_prompt_version.py +4 -4
  462. vellum/client/types/prompt_exec_config.py +15 -9
  463. vellum/client/types/prompt_execution_meta.py +3 -3
  464. vellum/client/types/prompt_node_execution_meta.py +3 -3
  465. vellum/client/types/prompt_node_result.py +3 -3
  466. vellum/client/types/prompt_node_result_data.py +3 -3
  467. vellum/client/types/prompt_output.py +7 -3
  468. vellum/client/types/prompt_parameters.py +2 -2
  469. vellum/client/types/prompt_push_response.py +2 -2
  470. vellum/client/types/prompt_request_audio_input.py +26 -0
  471. vellum/client/types/prompt_request_chat_history_input.py +3 -3
  472. vellum/client/types/prompt_request_document_input.py +26 -0
  473. vellum/client/types/prompt_request_image_input.py +26 -0
  474. vellum/client/types/prompt_request_input.py +16 -3
  475. vellum/client/types/prompt_request_json_input.py +3 -3
  476. vellum/client/types/prompt_request_string_input.py +3 -3
  477. vellum/client/types/prompt_request_video_input.py +26 -0
  478. vellum/client/types/prompt_settings.py +2 -2
  479. vellum/client/types/prompt_version_build_config_sandbox.py +2 -2
  480. vellum/client/types/raw_prompt_execution_overrides_request.py +2 -2
  481. vellum/client/types/reducto_chunker_config.py +2 -2
  482. vellum/client/types/reducto_chunker_config_request.py +2 -2
  483. vellum/client/types/reducto_chunking.py +3 -3
  484. vellum/client/types/reducto_chunking_request.py +3 -3
  485. vellum/client/types/rejected_ad_hoc_execute_prompt_event.py +4 -4
  486. vellum/client/types/rejected_execute_prompt_event.py +4 -4
  487. vellum/client/types/rejected_execute_prompt_response.py +3 -3
  488. vellum/client/types/rejected_execute_workflow_workflow_result_event.py +4 -4
  489. vellum/client/types/rejected_prompt_execution_meta.py +3 -3
  490. vellum/client/types/rejected_workflow_node_result_event.py +12 -6
  491. vellum/client/types/release_created_by.py +2 -2
  492. vellum/client/types/release_environment.py +2 -2
  493. vellum/client/types/release_release_tag.py +3 -3
  494. vellum/client/types/release_review_reviewer.py +2 -2
  495. vellum/client/types/release_tag_release.py +2 -2
  496. vellum/client/types/replace_test_suite_test_case_request.py +9 -3
  497. vellum/client/types/rich_text_child_block.py +2 -1
  498. vellum/client/types/rich_text_prompt_block.py +4 -4
  499. vellum/client/types/runner_config_request.py +24 -0
  500. vellum/client/types/sandbox_scenario.py +3 -3
  501. vellum/client/types/scenario_input.py +14 -3
  502. vellum/client/types/scenario_input_audio_variable_value.py +22 -0
  503. vellum/client/types/scenario_input_chat_history_variable_value.py +3 -3
  504. vellum/client/types/scenario_input_document_variable_value.py +22 -0
  505. vellum/client/types/scenario_input_image_variable_value.py +22 -0
  506. vellum/client/types/scenario_input_json_variable_value.py +2 -2
  507. vellum/client/types/scenario_input_string_variable_value.py +2 -2
  508. vellum/client/types/scenario_input_video_variable_value.py +22 -0
  509. vellum/client/types/scheduled_trigger_context.py +39 -0
  510. vellum/client/types/search_filters_request.py +11 -5
  511. vellum/client/types/search_node_result.py +3 -3
  512. vellum/client/types/search_node_result_data.py +3 -3
  513. vellum/client/types/search_request_options_request.py +13 -7
  514. vellum/client/types/search_response.py +3 -3
  515. vellum/client/types/search_result.py +3 -3
  516. vellum/client/types/search_result_document.py +2 -2
  517. vellum/client/types/search_result_document_request.py +2 -2
  518. vellum/client/types/search_result_merging_request.py +2 -2
  519. vellum/client/types/search_result_meta.py +3 -3
  520. vellum/client/types/search_result_meta_request.py +3 -3
  521. vellum/client/types/search_result_request.py +3 -3
  522. vellum/client/types/search_results_input.py +3 -3
  523. vellum/client/types/search_results_vellum_value.py +3 -3
  524. vellum/client/types/search_results_vellum_value_request.py +3 -3
  525. vellum/client/types/search_weights_request.py +2 -2
  526. vellum/client/types/secret_type_enum.py +3 -1
  527. vellum/client/types/sentence_chunker_config.py +2 -2
  528. vellum/client/types/sentence_chunker_config_request.py +2 -2
  529. vellum/client/types/sentence_chunking.py +3 -3
  530. vellum/client/types/sentence_chunking_request.py +3 -3
  531. vellum/client/types/severity_enum.py +5 -0
  532. vellum/client/types/slim_composio_tool_definition.py +25 -0
  533. vellum/client/types/slim_deployment_read.py +15 -9
  534. vellum/client/types/slim_document.py +6 -5
  535. vellum/client/types/slim_document_document_to_document_index.py +6 -4
  536. vellum/client/types/slim_integration_auth_config_read.py +36 -0
  537. vellum/client/types/slim_integration_read.py +25 -0
  538. vellum/client/types/slim_release_review.py +4 -4
  539. vellum/client/types/slim_workflow_deployment.py +16 -10
  540. vellum/client/types/slim_workflow_execution_read.py +24 -15
  541. vellum/client/types/span_link.py +15 -12
  542. vellum/client/types/span_link_type_enum.py +1 -1
  543. vellum/client/types/streaming_ad_hoc_execute_prompt_event.py +4 -4
  544. vellum/client/types/streaming_execute_prompt_event.py +3 -3
  545. vellum/client/types/streaming_prompt_execution_meta.py +2 -2
  546. vellum/client/types/streaming_workflow_node_result_event.py +12 -6
  547. vellum/client/types/string_chat_message_content.py +2 -2
  548. vellum/client/types/string_chat_message_content_request.py +2 -2
  549. vellum/client/types/string_input.py +3 -3
  550. vellum/client/types/string_input_request.py +3 -3
  551. vellum/client/types/string_vellum_value.py +2 -2
  552. vellum/client/types/string_vellum_value_request.py +2 -2
  553. vellum/client/types/submit_completion_actual_request.py +3 -3
  554. vellum/client/types/submit_workflow_execution_actual_request.py +3 -2
  555. vellum/client/types/subworkflow_node_result.py +3 -3
  556. vellum/client/types/subworkflow_node_result_data.py +2 -2
  557. vellum/client/types/templating_node_array_result.py +11 -5
  558. vellum/client/types/templating_node_chat_history_result.py +3 -3
  559. vellum/client/types/templating_node_error_result.py +3 -3
  560. vellum/client/types/templating_node_function_call_result.py +3 -3
  561. vellum/client/types/templating_node_json_result.py +2 -2
  562. vellum/client/types/templating_node_number_result.py +2 -2
  563. vellum/client/types/templating_node_result.py +10 -4
  564. vellum/client/types/templating_node_result_data.py +10 -4
  565. vellum/client/types/templating_node_result_output.py +6 -5
  566. vellum/client/types/templating_node_search_results_result.py +3 -3
  567. vellum/client/types/templating_node_string_result.py +2 -2
  568. vellum/client/types/terminal_node_array_result.py +11 -5
  569. vellum/client/types/terminal_node_chat_history_result.py +2 -2
  570. vellum/client/types/terminal_node_error_result.py +2 -2
  571. vellum/client/types/terminal_node_function_call_result.py +2 -2
  572. vellum/client/types/terminal_node_json_result.py +2 -2
  573. vellum/client/types/terminal_node_number_result.py +2 -2
  574. vellum/client/types/terminal_node_result.py +10 -4
  575. vellum/client/types/terminal_node_result_data.py +10 -4
  576. vellum/client/types/terminal_node_result_output.py +6 -5
  577. vellum/client/types/terminal_node_search_results_result.py +2 -2
  578. vellum/client/types/terminal_node_string_result.py +2 -2
  579. vellum/client/types/test_case_array_variable_value.py +11 -5
  580. vellum/client/types/test_case_audio_variable_value.py +27 -0
  581. vellum/client/types/test_case_chat_history_variable_value.py +3 -3
  582. vellum/client/types/test_case_document_variable_value.py +27 -0
  583. vellum/client/types/test_case_error_variable_value.py +3 -3
  584. vellum/client/types/test_case_function_call_variable_value.py +3 -3
  585. vellum/client/types/test_case_image_variable_value.py +27 -0
  586. vellum/client/types/test_case_json_variable_value.py +2 -2
  587. vellum/client/types/test_case_number_variable_value.py +2 -2
  588. vellum/client/types/test_case_search_results_variable_value.py +3 -3
  589. vellum/client/types/test_case_string_variable_value.py +2 -2
  590. vellum/client/types/test_case_variable_value.py +14 -5
  591. vellum/client/types/test_case_video_variable_value.py +27 -0
  592. vellum/client/types/test_suite_run_deployment_release_tag_exec_config.py +3 -3
  593. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data.py +3 -3
  594. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data_request.py +3 -3
  595. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_request.py +3 -3
  596. vellum/client/types/test_suite_run_exec_config.py +2 -1
  597. vellum/client/types/test_suite_run_exec_config_request.py +2 -1
  598. vellum/client/types/test_suite_run_execution.py +11 -5
  599. vellum/client/types/test_suite_run_execution_array_output.py +11 -5
  600. vellum/client/types/test_suite_run_execution_chat_history_output.py +3 -3
  601. vellum/client/types/test_suite_run_execution_error_output.py +3 -3
  602. vellum/client/types/test_suite_run_execution_function_call_output.py +3 -3
  603. vellum/client/types/test_suite_run_execution_json_output.py +2 -2
  604. vellum/client/types/test_suite_run_execution_metric_definition.py +2 -2
  605. vellum/client/types/test_suite_run_execution_metric_result.py +11 -5
  606. vellum/client/types/test_suite_run_execution_number_output.py +2 -2
  607. vellum/client/types/test_suite_run_execution_output.py +6 -5
  608. vellum/client/types/test_suite_run_execution_search_results_output.py +3 -3
  609. vellum/client/types/test_suite_run_execution_string_output.py +2 -2
  610. vellum/client/types/test_suite_run_external_exec_config.py +10 -4
  611. vellum/client/types/test_suite_run_external_exec_config_data.py +10 -4
  612. vellum/client/types/test_suite_run_external_exec_config_data_request.py +10 -4
  613. vellum/client/types/test_suite_run_external_exec_config_request.py +10 -4
  614. vellum/client/types/test_suite_run_metric_array_output.py +11 -5
  615. vellum/client/types/test_suite_run_metric_error_output.py +3 -3
  616. vellum/client/types/test_suite_run_metric_json_output.py +2 -2
  617. vellum/client/types/test_suite_run_metric_number_output.py +2 -2
  618. vellum/client/types/test_suite_run_metric_output.py +5 -4
  619. vellum/client/types/test_suite_run_metric_string_output.py +2 -2
  620. vellum/client/types/test_suite_run_progress.py +2 -2
  621. vellum/client/types/test_suite_run_prompt_sandbox_exec_config_data_request.py +3 -3
  622. vellum/client/types/test_suite_run_prompt_sandbox_exec_config_request.py +3 -3
  623. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config.py +3 -3
  624. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data.py +3 -3
  625. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data_request.py +3 -3
  626. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_request.py +3 -3
  627. vellum/client/types/test_suite_run_read.py +12 -6
  628. vellum/client/types/test_suite_run_test_suite.py +2 -2
  629. vellum/client/types/test_suite_run_workflow_release_tag_exec_config.py +3 -3
  630. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_data.py +3 -3
  631. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_data_request.py +3 -3
  632. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_request.py +3 -3
  633. vellum/client/types/test_suite_run_workflow_sandbox_exec_config_data_request.py +3 -3
  634. vellum/client/types/test_suite_run_workflow_sandbox_exec_config_request.py +3 -3
  635. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config.py +3 -3
  636. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data.py +3 -3
  637. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data_request.py +3 -3
  638. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_request.py +3 -3
  639. vellum/client/types/test_suite_test_case.py +10 -4
  640. vellum/client/types/test_suite_test_case_bulk_operation_request.py +2 -1
  641. vellum/client/types/test_suite_test_case_bulk_result.py +2 -1
  642. vellum/client/types/test_suite_test_case_create_bulk_operation_request.py +10 -4
  643. vellum/client/types/test_suite_test_case_created_bulk_result.py +3 -3
  644. vellum/client/types/test_suite_test_case_created_bulk_result_data.py +2 -2
  645. vellum/client/types/test_suite_test_case_delete_bulk_operation_data_request.py +2 -2
  646. vellum/client/types/test_suite_test_case_delete_bulk_operation_request.py +3 -3
  647. vellum/client/types/test_suite_test_case_deleted_bulk_result.py +3 -3
  648. vellum/client/types/test_suite_test_case_deleted_bulk_result_data.py +2 -2
  649. vellum/client/types/test_suite_test_case_rejected_bulk_result.py +2 -2
  650. vellum/client/types/test_suite_test_case_replace_bulk_operation_request.py +10 -4
  651. vellum/client/types/test_suite_test_case_replaced_bulk_result.py +3 -3
  652. vellum/client/types/test_suite_test_case_replaced_bulk_result_data.py +2 -2
  653. vellum/client/types/test_suite_test_case_upsert_bulk_operation_request.py +10 -4
  654. vellum/client/types/thinking_vellum_value.py +25 -0
  655. vellum/client/types/thinking_vellum_value_request.py +25 -0
  656. vellum/client/types/token_overlapping_window_chunker_config.py +2 -2
  657. vellum/client/types/token_overlapping_window_chunker_config_request.py +2 -2
  658. vellum/client/types/token_overlapping_window_chunking.py +3 -3
  659. vellum/client/types/token_overlapping_window_chunking_request.py +3 -3
  660. vellum/client/types/type_checker_enum.py +5 -0
  661. vellum/client/types/update_active_workspace_response.py +32 -0
  662. vellum/client/types/upload_document_response.py +3 -3
  663. vellum/client/types/uploaded_file_read.py +27 -0
  664. vellum/client/types/upsert_test_suite_test_case_request.py +9 -3
  665. vellum/client/types/variable_prompt_block.py +11 -4
  666. vellum/client/types/vellum_audio.py +10 -5
  667. vellum/client/types/vellum_audio_request.py +8 -4
  668. vellum/client/types/vellum_code_resource_definition.py +7 -2
  669. vellum/client/types/vellum_document.py +13 -4
  670. vellum/client/types/vellum_document_request.py +11 -3
  671. vellum/client/types/vellum_error.py +5 -4
  672. vellum/client/types/vellum_error_code_enum.py +6 -0
  673. vellum/client/types/vellum_error_request.py +5 -4
  674. vellum/client/types/vellum_image.py +13 -4
  675. vellum/client/types/vellum_image_request.py +11 -3
  676. vellum/client/types/vellum_node_execution_event.py +6 -3
  677. vellum/client/types/vellum_sdk_error.py +4 -3
  678. vellum/client/types/vellum_sdk_error_code_enum.py +5 -0
  679. vellum/client/types/vellum_secret.py +2 -2
  680. vellum/client/types/vellum_span.py +2 -1
  681. vellum/client/types/vellum_value.py +13 -8
  682. vellum/client/types/vellum_value_logical_condition_group_request.py +6 -6
  683. vellum/client/types/vellum_value_logical_condition_request.py +13 -7
  684. vellum/client/types/vellum_value_logical_expression_request.py +2 -1
  685. vellum/client/types/vellum_value_request.py +13 -8
  686. vellum/client/types/vellum_variable.py +18 -7
  687. vellum/client/types/vellum_variable_extensions.py +4 -2
  688. vellum/client/types/vellum_variable_type.py +4 -1
  689. vellum/client/types/vellum_video.py +29 -0
  690. vellum/client/types/vellum_video_request.py +28 -0
  691. vellum/client/types/vellum_workflow_execution_event.py +4 -3
  692. vellum/client/types/video_chat_message_content.py +25 -0
  693. vellum/client/types/video_chat_message_content_request.py +25 -0
  694. vellum/client/types/video_input.py +30 -0
  695. vellum/client/types/video_input_request.py +30 -0
  696. vellum/client/types/video_prompt_block.py +29 -0
  697. vellum/client/types/video_vellum_value.py +25 -0
  698. vellum/client/types/video_vellum_value_request.py +25 -0
  699. vellum/client/types/workflow_deployment_display_data.py +27 -0
  700. vellum/client/types/workflow_deployment_event_executions_response.py +20 -11
  701. vellum/client/types/workflow_deployment_history_item.py +10 -4
  702. vellum/client/types/workflow_deployment_parent_context.py +13 -10
  703. vellum/client/types/workflow_deployment_read.py +22 -10
  704. vellum/client/types/workflow_deployment_release.py +13 -7
  705. vellum/client/types/workflow_deployment_release_workflow_deployment.py +3 -2
  706. vellum/client/types/workflow_deployment_release_workflow_version.py +10 -4
  707. vellum/client/types/workflow_display_icon.py +24 -0
  708. vellum/client/types/workflow_error.py +1 -0
  709. vellum/client/types/workflow_event.py +39 -0
  710. vellum/client/types/workflow_event_error.py +5 -3
  711. vellum/client/types/workflow_event_execution_read.py +26 -16
  712. vellum/client/types/workflow_execution_actual.py +11 -5
  713. vellum/client/types/workflow_execution_actual_chat_history_request.py +2 -2
  714. vellum/client/types/workflow_execution_actual_json_request.py +2 -2
  715. vellum/client/types/workflow_execution_actual_string_request.py +2 -2
  716. vellum/client/types/workflow_execution_detail.py +51 -0
  717. vellum/client/types/workflow_execution_event_error_code.py +5 -0
  718. vellum/client/types/workflow_execution_fulfilled_body.py +6 -3
  719. vellum/client/types/workflow_execution_fulfilled_event.py +24 -15
  720. vellum/client/types/workflow_execution_initiated_body.py +3 -3
  721. vellum/client/types/workflow_execution_initiated_event.py +24 -15
  722. vellum/client/types/workflow_execution_node_result_event.py +10 -4
  723. vellum/client/types/workflow_execution_paused_body.py +4 -4
  724. vellum/client/types/workflow_execution_paused_event.py +24 -15
  725. vellum/client/types/workflow_execution_rejected_body.py +5 -4
  726. vellum/client/types/workflow_execution_rejected_event.py +24 -15
  727. vellum/client/types/workflow_execution_resumed_body.py +3 -3
  728. vellum/client/types/workflow_execution_resumed_event.py +24 -15
  729. vellum/client/types/workflow_execution_snapshotted_body.py +4 -3
  730. vellum/client/types/workflow_execution_snapshotted_event.py +24 -15
  731. vellum/client/types/workflow_execution_span.py +22 -11
  732. vellum/client/types/workflow_execution_span_attributes.py +3 -2
  733. vellum/client/types/workflow_execution_streaming_body.py +4 -4
  734. vellum/client/types/workflow_execution_streaming_event.py +24 -15
  735. vellum/client/types/workflow_execution_usage_calculation_error.py +3 -3
  736. vellum/client/types/workflow_execution_usage_calculation_fulfilled_body.py +22 -0
  737. vellum/client/types/workflow_execution_usage_result.py +3 -3
  738. vellum/client/types/workflow_execution_view_online_eval_metric_result.py +10 -4
  739. vellum/client/types/workflow_execution_workflow_result_event.py +10 -4
  740. vellum/client/types/workflow_expand_meta_request.py +2 -2
  741. vellum/client/types/workflow_initialization_error.py +2 -2
  742. vellum/client/types/workflow_input.py +31 -0
  743. vellum/client/types/workflow_node_result_data.py +8 -7
  744. vellum/client/types/workflow_node_result_event.py +3 -2
  745. vellum/client/types/workflow_output.py +12 -5
  746. vellum/client/types/workflow_output_array.py +12 -6
  747. vellum/client/types/workflow_output_audio.py +31 -0
  748. vellum/client/types/workflow_output_chat_history.py +3 -3
  749. vellum/client/types/workflow_output_document.py +31 -0
  750. vellum/client/types/workflow_output_error.py +3 -3
  751. vellum/client/types/workflow_output_function_call.py +3 -3
  752. vellum/client/types/workflow_output_image.py +3 -3
  753. vellum/client/types/workflow_output_json.py +3 -3
  754. vellum/client/types/workflow_output_number.py +3 -3
  755. vellum/client/types/workflow_output_search_results.py +3 -3
  756. vellum/client/types/workflow_output_string.py +3 -3
  757. vellum/client/types/workflow_output_video.py +31 -0
  758. vellum/client/types/workflow_parent_context.py +14 -11
  759. vellum/client/types/workflow_push_deployment_config_request.py +3 -2
  760. vellum/client/types/workflow_push_response.py +2 -2
  761. vellum/client/types/workflow_release_tag_read.py +4 -4
  762. vellum/client/types/workflow_release_tag_workflow_deployment_history_item.py +2 -2
  763. vellum/client/types/workflow_request_audio_input_request.py +30 -0
  764. vellum/client/types/workflow_request_chat_history_input_request.py +3 -3
  765. vellum/client/types/workflow_request_document_input_request.py +30 -0
  766. vellum/client/types/workflow_request_image_input_request.py +30 -0
  767. vellum/client/types/workflow_request_input_request.py +11 -2
  768. vellum/client/types/workflow_request_json_input_request.py +3 -3
  769. vellum/client/types/workflow_request_number_input_request.py +3 -3
  770. vellum/client/types/workflow_request_string_input_request.py +3 -3
  771. vellum/client/types/workflow_request_video_input_request.py +30 -0
  772. vellum/client/types/workflow_resolved_state.py +31 -0
  773. vellum/client/types/workflow_result_event.py +14 -8
  774. vellum/client/types/workflow_result_event_output_data.py +7 -6
  775. vellum/client/types/workflow_result_event_output_data_array.py +13 -7
  776. vellum/client/types/workflow_result_event_output_data_chat_history.py +4 -4
  777. vellum/client/types/workflow_result_event_output_data_error.py +4 -4
  778. vellum/client/types/workflow_result_event_output_data_function_call.py +4 -4
  779. vellum/client/types/workflow_result_event_output_data_json.py +4 -4
  780. vellum/client/types/workflow_result_event_output_data_number.py +4 -4
  781. vellum/client/types/workflow_result_event_output_data_search_results.py +4 -4
  782. vellum/client/types/workflow_result_event_output_data_string.py +4 -4
  783. vellum/client/types/workflow_result_event_state.py +7 -0
  784. vellum/client/types/workflow_sandbox_display_data.py +27 -0
  785. vellum/client/types/workflow_sandbox_example.py +4 -2
  786. vellum/client/types/workflow_sandbox_execute_node_response.py +8 -0
  787. vellum/client/types/workflow_sandbox_parent_context.py +13 -10
  788. vellum/client/types/workflow_stream_event.py +2 -1
  789. vellum/client/types/workspace_display_config.py +19 -0
  790. vellum/client/types/workspace_read.py +5 -3
  791. vellum/client/types/workspace_secret_read.py +3 -3
  792. vellum/client/utils.py +24 -0
  793. vellum/core/force_multipart.py +3 -0
  794. vellum/core/http_response.py +3 -0
  795. vellum/errors/misdirected_request_error.py +3 -0
  796. vellum/errors/too_many_requests_error.py +3 -0
  797. vellum/errors/unauthorized_error.py +3 -0
  798. vellum/evaluations/resources.py +5 -5
  799. vellum/plugins/pydantic.py +14 -3
  800. vellum/plugins/tests/__init__.py +0 -0
  801. vellum/plugins/tests/test_pydantic.py +30 -0
  802. vellum/plugins/vellum_mypy.py +68 -25
  803. vellum/prompts/__init__.py +3 -0
  804. vellum/prompts/blocks/__init__.py +3 -0
  805. vellum/prompts/blocks/compilation.py +29 -11
  806. vellum/prompts/blocks/helpers.py +31 -0
  807. vellum/prompts/blocks/tests/test_compilation.py +64 -0
  808. vellum/raw_client.py +3 -0
  809. vellum/resources/ad_hoc/raw_client.py +3 -0
  810. vellum/resources/container_images/raw_client.py +3 -0
  811. vellum/resources/deployments/raw_client.py +3 -0
  812. vellum/resources/document_indexes/raw_client.py +3 -0
  813. vellum/resources/documents/raw_client.py +3 -0
  814. vellum/resources/{release_reviews → environments}/__init__.py +1 -1
  815. vellum/resources/{release_reviews → environments}/client.py +1 -1
  816. vellum/resources/environments/raw_client.py +3 -0
  817. vellum/resources/events/__init__.py +3 -0
  818. vellum/resources/events/client.py +3 -0
  819. vellum/resources/events/raw_client.py +3 -0
  820. vellum/resources/folder_entities/raw_client.py +3 -0
  821. vellum/resources/integration_auth_configs/__init__.py +3 -0
  822. vellum/resources/integration_auth_configs/client.py +3 -0
  823. vellum/resources/integration_auth_configs/raw_client.py +3 -0
  824. vellum/resources/integration_providers/__init__.py +3 -0
  825. vellum/resources/integration_providers/client.py +3 -0
  826. vellum/resources/integration_providers/raw_client.py +3 -0
  827. vellum/resources/integrations/__init__.py +3 -0
  828. vellum/resources/integrations/client.py +3 -0
  829. vellum/resources/integrations/raw_client.py +3 -0
  830. vellum/resources/metric_definitions/raw_client.py +3 -0
  831. vellum/resources/ml_models/raw_client.py +3 -0
  832. vellum/resources/organizations/raw_client.py +3 -0
  833. vellum/resources/prompts/raw_client.py +3 -0
  834. vellum/resources/sandboxes/raw_client.py +3 -0
  835. vellum/resources/test_suite_runs/raw_client.py +3 -0
  836. vellum/resources/test_suites/raw_client.py +3 -0
  837. vellum/resources/uploaded_files/__init__.py +3 -0
  838. vellum/resources/uploaded_files/client.py +3 -0
  839. vellum/resources/uploaded_files/raw_client.py +3 -0
  840. vellum/resources/workflow_deployments/raw_client.py +3 -0
  841. vellum/resources/workflow_executions/__init__.py +3 -0
  842. vellum/resources/workflow_executions/client.py +3 -0
  843. vellum/resources/workflow_executions/raw_client.py +3 -0
  844. vellum/resources/workflow_sandboxes/raw_client.py +3 -0
  845. vellum/resources/workflows/raw_client.py +3 -0
  846. vellum/resources/workspace_secrets/raw_client.py +3 -0
  847. vellum/resources/workspaces/raw_client.py +3 -0
  848. vellum/types/api_actor_type_enum.py +3 -0
  849. vellum/types/audio_input.py +3 -0
  850. vellum/types/audio_input_request.py +3 -0
  851. vellum/types/auth_type_enum.py +3 -0
  852. vellum/types/build_status_enum.py +3 -0
  853. vellum/types/check_workflow_execution_status_error.py +3 -0
  854. vellum/types/check_workflow_execution_status_response.py +3 -0
  855. vellum/types/code_execution_package_request.py +3 -0
  856. vellum/types/components_schemas_composio_execute_tool_request.py +3 -0
  857. vellum/types/components_schemas_composio_execute_tool_response.py +3 -0
  858. vellum/types/components_schemas_composio_integration_exec_config.py +3 -0
  859. vellum/types/components_schemas_composio_tool_definition.py +3 -0
  860. vellum/types/components_schemas_slim_composio_tool_definition.py +3 -0
  861. vellum/types/composio_execute_tool_request.py +3 -0
  862. vellum/types/composio_execute_tool_response.py +3 -0
  863. vellum/types/composio_integration_exec_config.py +3 -0
  864. vellum/types/composio_tool_definition.py +3 -0
  865. vellum/types/container_image_build_config.py +3 -0
  866. vellum/types/create_workflow_event_request.py +3 -0
  867. vellum/types/dataset_row_push_request.py +3 -0
  868. vellum/types/delimiter_chunker_config.py +3 -0
  869. vellum/types/delimiter_chunker_config_request.py +3 -0
  870. vellum/types/delimiter_chunking.py +3 -0
  871. vellum/types/delimiter_chunking_request.py +3 -0
  872. vellum/types/deprecated_prompt_request_input.py +3 -0
  873. vellum/types/document_input.py +3 -0
  874. vellum/types/document_input_request.py +3 -0
  875. vellum/types/environment_display_config.py +3 -0
  876. vellum/types/environment_read.py +3 -0
  877. vellum/types/error_detail_response.py +3 -0
  878. vellum/types/event_create_response.py +3 -0
  879. vellum/types/execute_workflow_async_response.py +3 -0
  880. vellum/types/execution_audio_vellum_value.py +3 -0
  881. vellum/types/execution_document_vellum_value.py +3 -0
  882. vellum/types/execution_image_vellum_value.py +3 -0
  883. vellum/types/execution_thinking_vellum_value.py +3 -0
  884. vellum/types/execution_video_vellum_value.py +3 -0
  885. vellum/types/external_parent_context.py +3 -0
  886. vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +3 -0
  887. vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +3 -0
  888. vellum/types/folder_entity_dataset.py +3 -0
  889. vellum/types/folder_entity_dataset_data.py +3 -0
  890. vellum/types/google_vertex_ai_vectorizer_gemini_embedding_001.py +3 -0
  891. vellum/types/google_vertex_ai_vectorizer_gemini_embedding_001_request.py +3 -0
  892. vellum/types/image_input.py +3 -0
  893. vellum/types/image_input_request.py +3 -0
  894. vellum/types/integration.py +3 -0
  895. vellum/types/integration_auth_config_integration.py +3 -0
  896. vellum/types/integration_auth_config_integration_credential.py +3 -0
  897. vellum/types/integration_credential_access_type.py +3 -0
  898. vellum/types/integration_name.py +3 -0
  899. vellum/types/integration_provider.py +3 -0
  900. vellum/types/integration_read.py +3 -0
  901. vellum/types/integration_trigger_context.py +3 -0
  902. vellum/types/named_scenario_input_audio_variable_value_request.py +3 -0
  903. vellum/types/named_scenario_input_document_variable_value_request.py +3 -0
  904. vellum/types/named_scenario_input_image_variable_value_request.py +3 -0
  905. vellum/types/named_scenario_input_video_variable_value_request.py +3 -0
  906. vellum/types/named_test_case_audio_variable_value.py +3 -0
  907. vellum/types/named_test_case_audio_variable_value_request.py +3 -0
  908. vellum/types/named_test_case_document_variable_value.py +3 -0
  909. vellum/types/named_test_case_document_variable_value_request.py +3 -0
  910. vellum/types/named_test_case_image_variable_value.py +3 -0
  911. vellum/types/named_test_case_image_variable_value_request.py +3 -0
  912. vellum/types/named_test_case_video_variable_value.py +3 -0
  913. vellum/types/named_test_case_video_variable_value_request.py +3 -0
  914. vellum/types/node_execution_log_body.py +3 -0
  915. vellum/types/node_execution_log_event.py +3 -0
  916. vellum/types/node_input_compiled_audio_value.py +3 -0
  917. vellum/types/node_input_compiled_document_value.py +3 -0
  918. vellum/types/node_input_compiled_image_value.py +3 -0
  919. vellum/types/node_input_compiled_video_value.py +3 -0
  920. vellum/types/node_output_compiled_thinking_value.py +3 -0
  921. vellum/types/paginated_slim_integration_auth_config_read_list.py +3 -0
  922. vellum/types/paginated_slim_integration_read_list.py +3 -0
  923. vellum/types/paginated_slim_tool_definition_list.py +3 -0
  924. vellum/types/paginated_workflow_deployment_release_list.py +3 -0
  925. vellum/types/private_vectorizer.py +3 -0
  926. vellum/types/private_vectorizer_request.py +3 -0
  927. vellum/types/prompt_request_audio_input.py +3 -0
  928. vellum/types/prompt_request_document_input.py +3 -0
  929. vellum/types/prompt_request_image_input.py +3 -0
  930. vellum/types/prompt_request_video_input.py +3 -0
  931. vellum/types/runner_config_request.py +3 -0
  932. vellum/types/scenario_input_audio_variable_value.py +3 -0
  933. vellum/types/scenario_input_document_variable_value.py +3 -0
  934. vellum/types/scenario_input_image_variable_value.py +3 -0
  935. vellum/types/scenario_input_video_variable_value.py +3 -0
  936. vellum/types/scheduled_trigger_context.py +3 -0
  937. vellum/types/severity_enum.py +3 -0
  938. vellum/types/slim_composio_tool_definition.py +3 -0
  939. vellum/types/slim_integration_auth_config_read.py +3 -0
  940. vellum/types/slim_integration_read.py +3 -0
  941. vellum/types/test_case_audio_variable_value.py +3 -0
  942. vellum/types/test_case_document_variable_value.py +3 -0
  943. vellum/types/test_case_image_variable_value.py +3 -0
  944. vellum/types/test_case_video_variable_value.py +3 -0
  945. vellum/types/thinking_vellum_value.py +3 -0
  946. vellum/types/thinking_vellum_value_request.py +3 -0
  947. vellum/types/type_checker_enum.py +3 -0
  948. vellum/types/update_active_workspace_response.py +3 -0
  949. vellum/types/uploaded_file_read.py +3 -0
  950. vellum/types/vellum_video.py +3 -0
  951. vellum/types/vellum_video_request.py +3 -0
  952. vellum/types/video_chat_message_content.py +3 -0
  953. vellum/types/video_chat_message_content_request.py +3 -0
  954. vellum/types/video_input.py +3 -0
  955. vellum/types/video_input_request.py +3 -0
  956. vellum/types/video_prompt_block.py +3 -0
  957. vellum/types/video_vellum_value.py +3 -0
  958. vellum/types/video_vellum_value_request.py +3 -0
  959. vellum/types/workflow_deployment_display_data.py +3 -0
  960. vellum/types/workflow_display_icon.py +3 -0
  961. vellum/types/workflow_event.py +3 -0
  962. vellum/types/workflow_execution_detail.py +3 -0
  963. vellum/types/workflow_execution_usage_calculation_fulfilled_body.py +3 -0
  964. vellum/types/workflow_input.py +3 -0
  965. vellum/types/workflow_output_audio.py +3 -0
  966. vellum/types/workflow_output_document.py +3 -0
  967. vellum/types/workflow_output_video.py +3 -0
  968. vellum/types/workflow_request_audio_input_request.py +3 -0
  969. vellum/types/workflow_request_document_input_request.py +3 -0
  970. vellum/types/workflow_request_image_input_request.py +3 -0
  971. vellum/types/workflow_request_video_input_request.py +3 -0
  972. vellum/types/workflow_resolved_state.py +3 -0
  973. vellum/types/workflow_result_event_state.py +3 -0
  974. vellum/types/workflow_sandbox_display_data.py +3 -0
  975. vellum/types/workflow_sandbox_execute_node_response.py +3 -0
  976. vellum/types/workspace_display_config.py +3 -0
  977. vellum/utils/files/__init__.py +18 -0
  978. vellum/utils/files/constants.py +47 -0
  979. vellum/utils/files/exceptions.py +25 -0
  980. vellum/utils/files/extensions.py +59 -0
  981. vellum/utils/files/mixin.py +135 -0
  982. vellum/utils/files/read.py +41 -0
  983. vellum/utils/files/stream.py +135 -0
  984. vellum/utils/files/tests/__init__.py +0 -0
  985. vellum/utils/files/tests/test_extensions.py +54 -0
  986. vellum/utils/files/tests/test_mixin.py +267 -0
  987. vellum/utils/files/tests/test_read.py +204 -0
  988. vellum/utils/files/tests/test_stream.py +199 -0
  989. vellum/utils/files/tests/test_upload.py +309 -0
  990. vellum/utils/files/tests/test_urls.py +252 -0
  991. vellum/utils/files/types.py +8 -0
  992. vellum/utils/files/upload.py +151 -0
  993. vellum/utils/files/urls.py +71 -0
  994. vellum/utils/json_encoder.py +95 -0
  995. vellum/utils/templating/custom_filters.py +4 -4
  996. vellum/utils/templating/render.py +4 -4
  997. vellum/utils/tests/__init__.py +0 -0
  998. vellum/utils/tests/test_json_encoder.py +92 -0
  999. vellum/utils/tests/test_vellum_client.py +95 -0
  1000. vellum/utils/uuid.py +19 -2
  1001. vellum/utils/vellum_client.py +47 -0
  1002. vellum/workflows/__init__.py +84 -0
  1003. vellum/workflows/constants.py +7 -0
  1004. vellum/workflows/context.py +27 -9
  1005. vellum/workflows/descriptors/base.py +169 -2
  1006. vellum/workflows/descriptors/exceptions.py +18 -1
  1007. vellum/workflows/descriptors/tests/test_utils.py +66 -0
  1008. vellum/workflows/descriptors/utils.py +27 -3
  1009. vellum/workflows/edges/__init__.py +2 -0
  1010. vellum/workflows/edges/trigger_edge.py +67 -0
  1011. vellum/workflows/emitters/__init__.py +2 -0
  1012. vellum/workflows/emitters/base.py +25 -0
  1013. vellum/workflows/emitters/vellum_emitter.py +150 -0
  1014. vellum/workflows/environment/__init__.py +2 -1
  1015. vellum/workflows/environment/environment.py +10 -3
  1016. vellum/workflows/errors/tests/__init__.py +0 -0
  1017. vellum/workflows/errors/tests/test_types.py +52 -0
  1018. vellum/workflows/errors/types.py +19 -1
  1019. vellum/workflows/events/__init__.py +2 -0
  1020. vellum/workflows/events/context.py +90 -0
  1021. vellum/workflows/events/exception_handling.py +58 -0
  1022. vellum/workflows/events/node.py +51 -11
  1023. vellum/workflows/events/relational_threads.py +41 -0
  1024. vellum/workflows/events/stream.py +28 -0
  1025. vellum/workflows/events/tests/test_basic_workflow.py +50 -0
  1026. vellum/workflows/events/tests/test_event.py +268 -20
  1027. vellum/workflows/events/types.py +34 -5
  1028. vellum/workflows/events/workflow.py +138 -9
  1029. vellum/workflows/exceptions.py +46 -7
  1030. vellum/workflows/executable.py +9 -0
  1031. vellum/workflows/expressions/accessor.py +65 -11
  1032. vellum/workflows/expressions/add.py +44 -0
  1033. vellum/workflows/expressions/comparison_utils.py +38 -0
  1034. vellum/workflows/expressions/concat.py +35 -0
  1035. vellum/workflows/expressions/contains.py +7 -0
  1036. vellum/workflows/expressions/greater_than.py +8 -1
  1037. vellum/workflows/expressions/greater_than_or_equal_to.py +8 -1
  1038. vellum/workflows/expressions/is_error.py +23 -0
  1039. vellum/workflows/expressions/length.py +46 -0
  1040. vellum/workflows/expressions/less_than.py +8 -1
  1041. vellum/workflows/expressions/less_than_or_equal_to.py +8 -1
  1042. vellum/workflows/expressions/minus.py +41 -0
  1043. vellum/workflows/expressions/tests/test_accessor.py +248 -0
  1044. vellum/workflows/expressions/tests/test_add.py +96 -0
  1045. vellum/workflows/expressions/tests/test_concat.py +108 -0
  1046. vellum/workflows/expressions/tests/test_contains.py +175 -0
  1047. vellum/workflows/expressions/tests/test_expressions.py +145 -32
  1048. vellum/workflows/expressions/tests/test_length.py +38 -0
  1049. vellum/workflows/expressions/tests/test_minus.py +109 -0
  1050. vellum/workflows/graph/graph.py +281 -13
  1051. vellum/workflows/graph/tests/test_graph.py +528 -1
  1052. vellum/workflows/inputs/__init__.py +2 -0
  1053. vellum/workflows/inputs/base.py +63 -13
  1054. vellum/workflows/inputs/dataset_row.py +186 -0
  1055. vellum/workflows/inputs/tests/test_inputs.py +182 -2
  1056. vellum/workflows/integrations/__init__.py +5 -0
  1057. vellum/workflows/integrations/composio_service.py +158 -0
  1058. vellum/workflows/integrations/mcp_service.py +282 -0
  1059. vellum/workflows/integrations/tests/__init__.py +0 -0
  1060. vellum/workflows/integrations/tests/test_mcp_service.py +273 -0
  1061. vellum/workflows/integrations/tests/test_vellum_integration_service.py +383 -0
  1062. vellum/workflows/integrations/vellum_integration_service.py +147 -0
  1063. vellum/workflows/loaders/__init__.py +3 -0
  1064. vellum/workflows/loaders/base.py +38 -0
  1065. vellum/workflows/nodes/__init__.py +2 -0
  1066. vellum/workflows/nodes/bases/base.py +165 -82
  1067. vellum/workflows/nodes/bases/base_adornment_node.py +55 -1
  1068. vellum/workflows/nodes/bases/tests/test_base_node.py +153 -4
  1069. vellum/workflows/nodes/core/error_node/node.py +11 -2
  1070. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +30 -3
  1071. vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py +36 -1
  1072. vellum/workflows/nodes/core/map_node/node.py +33 -6
  1073. vellum/workflows/nodes/core/map_node/tests/test_node.py +106 -0
  1074. vellum/workflows/nodes/core/retry_node/node.py +1 -0
  1075. vellum/workflows/nodes/core/retry_node/tests/test_node.py +2 -3
  1076. vellum/workflows/nodes/core/templating_node/node.py +7 -2
  1077. vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py +194 -1
  1078. vellum/workflows/nodes/core/try_node/node.py +1 -0
  1079. vellum/workflows/nodes/displayable/__init__.py +6 -0
  1080. vellum/workflows/nodes/displayable/api_node/node.py +13 -3
  1081. vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py +151 -2
  1082. vellum/workflows/nodes/displayable/bases/api_node/node.py +71 -17
  1083. vellum/workflows/nodes/displayable/bases/api_node/tests/__init__.py +0 -0
  1084. vellum/workflows/nodes/displayable/bases/api_node/tests/test_node.py +150 -0
  1085. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +85 -7
  1086. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +324 -19
  1087. vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py +352 -32
  1088. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +86 -3
  1089. vellum/workflows/nodes/displayable/bases/search_node.py +26 -3
  1090. vellum/workflows/nodes/displayable/bases/tests/test_prompt_deployment_node.py +90 -0
  1091. vellum/workflows/nodes/displayable/bases/utils.py +82 -5
  1092. vellum/workflows/nodes/displayable/code_execution_node/node.py +30 -10
  1093. vellum/workflows/nodes/displayable/code_execution_node/tests/test_node.py +284 -14
  1094. vellum/workflows/nodes/displayable/code_execution_node/utils.py +8 -21
  1095. vellum/workflows/nodes/displayable/conditional_node/node.py +8 -4
  1096. vellum/workflows/nodes/displayable/final_output_node/node.py +34 -0
  1097. vellum/workflows/nodes/displayable/final_output_node/tests/test_node.py +146 -1
  1098. vellum/workflows/nodes/displayable/guardrail_node/node.py +13 -4
  1099. vellum/workflows/nodes/displayable/inline_prompt_node/node.py +9 -36
  1100. vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +3 -0
  1101. vellum/workflows/nodes/displayable/merge_node/node.py +8 -1
  1102. vellum/workflows/nodes/displayable/note_node/node.py +11 -1
  1103. vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +7 -23
  1104. vellum/workflows/nodes/displayable/search_node/node.py +15 -2
  1105. vellum/workflows/nodes/displayable/search_node/tests/test_node.py +33 -0
  1106. vellum/workflows/nodes/displayable/set_state_node/__init__.py +5 -0
  1107. vellum/workflows/nodes/displayable/set_state_node/node.py +71 -0
  1108. vellum/workflows/nodes/displayable/set_state_node/tests/__init__.py +0 -0
  1109. vellum/workflows/nodes/displayable/set_state_node/tests/test_node.py +212 -0
  1110. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +231 -59
  1111. vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py +1 -1
  1112. vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +4 -1
  1113. vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py +329 -0
  1114. vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +56 -14
  1115. vellum/workflows/nodes/displayable/tool_calling_node/__init__.py +3 -0
  1116. vellum/workflows/nodes/displayable/tool_calling_node/node.py +265 -0
  1117. vellum/workflows/nodes/displayable/tool_calling_node/state.py +11 -0
  1118. vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py +0 -0
  1119. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py +219 -0
  1120. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py +998 -0
  1121. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py +316 -0
  1122. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +654 -0
  1123. vellum/workflows/nodes/displayable/web_search_node/__init__.py +3 -0
  1124. vellum/workflows/nodes/displayable/web_search_node/node.py +136 -0
  1125. vellum/workflows/nodes/displayable/web_search_node/tests/__init__.py +0 -0
  1126. vellum/workflows/nodes/displayable/web_search_node/tests/test_node.py +246 -0
  1127. vellum/workflows/nodes/experimental/__init__.py +1 -3
  1128. vellum/workflows/nodes/mocks.py +71 -206
  1129. vellum/workflows/nodes/tests/test_mocks.py +0 -177
  1130. vellum/workflows/nodes/tests/test_utils.py +34 -5
  1131. vellum/workflows/nodes/utils.py +68 -14
  1132. vellum/workflows/outputs/base.py +88 -14
  1133. vellum/workflows/ports/node_ports.py +3 -0
  1134. vellum/workflows/ports/port.py +27 -12
  1135. vellum/workflows/ports/tests/test_port.py +45 -0
  1136. vellum/workflows/ports/utils.py +26 -6
  1137. vellum/workflows/references/__init__.py +2 -0
  1138. vellum/workflows/references/constant.py +4 -1
  1139. vellum/workflows/references/environment_variable.py +17 -9
  1140. vellum/workflows/references/lazy.py +8 -0
  1141. vellum/workflows/references/output.py +4 -6
  1142. vellum/workflows/references/state_value.py +24 -1
  1143. vellum/workflows/references/tests/test_lazy.py +58 -0
  1144. vellum/workflows/references/trigger.py +82 -0
  1145. vellum/workflows/references/workflow_input.py +8 -0
  1146. vellum/workflows/resolvers/base.py +19 -1
  1147. vellum/workflows/resolvers/resolver.py +81 -0
  1148. vellum/workflows/resolvers/tests/test_resolver.py +199 -0
  1149. vellum/workflows/resolvers/types.py +11 -0
  1150. vellum/workflows/runner/runner.py +770 -143
  1151. vellum/workflows/runner/tests/__init__.py +0 -0
  1152. vellum/workflows/runner/tests/test_runner.py +170 -0
  1153. vellum/workflows/sandbox.py +54 -9
  1154. vellum/workflows/state/base.py +238 -55
  1155. vellum/workflows/state/context.py +297 -7
  1156. vellum/workflows/state/delta.py +20 -0
  1157. vellum/workflows/state/encoder.py +2 -77
  1158. vellum/workflows/state/tests/test_state.py +292 -9
  1159. vellum/workflows/tests/test_dataset_row.py +191 -0
  1160. vellum/workflows/tests/test_sandbox.py +226 -0
  1161. vellum/workflows/tests/triggers/test_integration_trigger.py +156 -0
  1162. vellum/workflows/triggers/__init__.py +7 -0
  1163. vellum/workflows/triggers/base.py +523 -0
  1164. vellum/workflows/triggers/chat_message.py +141 -0
  1165. vellum/workflows/triggers/integration.py +198 -0
  1166. vellum/workflows/triggers/manual.py +39 -0
  1167. vellum/workflows/triggers/schedule.py +20 -0
  1168. vellum/workflows/triggers/tests/__init__.py +1 -0
  1169. vellum/workflows/triggers/tests/test_base_trigger_display.py +147 -0
  1170. vellum/workflows/triggers/tests/test_chat_message.py +257 -0
  1171. vellum/workflows/triggers/tests/test_integration.py +155 -0
  1172. vellum/workflows/types/__init__.py +2 -1
  1173. vellum/workflows/types/code_execution_node_wrappers.py +5 -1
  1174. vellum/workflows/types/core.py +23 -0
  1175. vellum/workflows/types/definition.py +161 -2
  1176. vellum/workflows/types/generics.py +17 -0
  1177. vellum/workflows/types/tests/test_definition.py +183 -0
  1178. vellum/workflows/types/tests/test_utils.py +23 -0
  1179. vellum/workflows/types/utils.py +65 -5
  1180. vellum/workflows/types/workflow_metadata.py +124 -0
  1181. vellum/workflows/utils/files.py +28 -0
  1182. vellum/workflows/utils/functions.py +386 -25
  1183. vellum/workflows/utils/hmac.py +44 -0
  1184. vellum/workflows/utils/names.py +32 -4
  1185. vellum/workflows/utils/pydantic_schema.py +56 -0
  1186. vellum/workflows/utils/tests/test_functions.py +480 -23
  1187. vellum/workflows/utils/tests/test_names.py +9 -0
  1188. vellum/workflows/utils/tests/test_validate.py +79 -0
  1189. vellum/workflows/utils/tests/test_vellum_variables.py +93 -3
  1190. vellum/workflows/utils/uuids.py +125 -0
  1191. vellum/workflows/utils/validate.py +108 -0
  1192. vellum/workflows/utils/vellum_variables.py +224 -20
  1193. vellum/workflows/utils/zip.py +46 -0
  1194. vellum/workflows/vellum_client.py +3 -33
  1195. vellum/workflows/workflows/base.py +503 -50
  1196. vellum/workflows/workflows/event_filters.py +13 -0
  1197. vellum/workflows/workflows/tests/test_base_workflow.py +169 -6
  1198. vellum/workflows/workflows/tests/test_event_filters.py +126 -0
  1199. {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/METADATA +17 -13
  1200. vellum_ai-1.13.5.dist-info/RECORD +2224 -0
  1201. vellum_ai-1.13.5.dist-info/entry_points.txt +4 -0
  1202. vellum_cli/__init__.py +55 -4
  1203. vellum_cli/config.py +21 -5
  1204. vellum_cli/image_push.py +106 -8
  1205. vellum_cli/move.py +56 -0
  1206. vellum_cli/ping.py +6 -0
  1207. vellum_cli/pull.py +50 -14
  1208. vellum_cli/push.py +124 -34
  1209. vellum_cli/tests/conftest.py +13 -12
  1210. vellum_cli/tests/test_image_push.py +192 -21
  1211. vellum_cli/tests/test_image_push_error_handling.py +258 -0
  1212. vellum_cli/tests/test_init.py +7 -24
  1213. vellum_cli/tests/test_move.py +154 -0
  1214. vellum_cli/tests/test_ping.py +15 -0
  1215. vellum_cli/tests/test_pull.py +125 -129
  1216. vellum_cli/tests/test_push.py +693 -12
  1217. vellum_ee/assets/node-definitions.json +1348 -0
  1218. vellum_ee/scripts/generate_node_definitions.py +101 -0
  1219. vellum_ee/workflows/display/base.py +33 -58
  1220. vellum_ee/workflows/display/editor/types.py +3 -0
  1221. vellum_ee/workflows/display/exceptions.py +3 -0
  1222. vellum_ee/workflows/display/nodes/base_node_display.py +199 -58
  1223. vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +242 -3
  1224. vellum_ee/workflows/display/nodes/types.py +1 -0
  1225. vellum_ee/workflows/display/nodes/vellum/api_node.py +26 -13
  1226. vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py +8 -5
  1227. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +23 -7
  1228. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +18 -7
  1229. vellum_ee/workflows/display/nodes/vellum/error_node.py +2 -4
  1230. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +3 -14
  1231. vellum_ee/workflows/display/nodes/vellum/guardrail_node.py +2 -5
  1232. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +85 -44
  1233. vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +44 -18
  1234. vellum_ee/workflows/display/nodes/vellum/map_node.py +31 -15
  1235. vellum_ee/workflows/display/nodes/vellum/merge_node.py +2 -5
  1236. vellum_ee/workflows/display/nodes/vellum/note_node.py +20 -6
  1237. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +13 -9
  1238. vellum_ee/workflows/display/nodes/vellum/retry_node.py +5 -6
  1239. vellum_ee/workflows/display/nodes/vellum/search_node.py +76 -19
  1240. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +46 -12
  1241. vellum_ee/workflows/display/nodes/vellum/templating_node.py +3 -6
  1242. vellum_ee/workflows/display/nodes/vellum/tests/test_api_node.py +65 -0
  1243. vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +236 -3
  1244. vellum_ee/workflows/display/nodes/vellum/tests/test_final_output_node.py +216 -0
  1245. vellum_ee/workflows/display/nodes/vellum/tests/test_inline_subworkflow_node.py +88 -0
  1246. vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py +44 -7
  1247. vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py +71 -1
  1248. vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +120 -26
  1249. vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py +1 -1
  1250. vellum_ee/workflows/display/nodes/vellum/tests/test_search_node.py +104 -0
  1251. vellum_ee/workflows/display/nodes/vellum/tests/test_subworkflow_deployment_node.py +28 -18
  1252. vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py +2 -2
  1253. vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py +649 -49
  1254. vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py +2 -2
  1255. vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +114 -10
  1256. vellum_ee/workflows/display/nodes/vellum/try_node.py +5 -6
  1257. vellum_ee/workflows/display/nodes/vellum/utils.py +54 -12
  1258. vellum_ee/workflows/display/tests/test_base_workflow_display.py +396 -25
  1259. vellum_ee/workflows/display/tests/test_json_schema_validation.py +190 -0
  1260. vellum_ee/workflows/display/tests/test_mocks.py +912 -0
  1261. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +2 -2
  1262. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +114 -39
  1263. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +342 -90
  1264. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +24 -17
  1265. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +263 -65
  1266. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +69 -12
  1267. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +36 -305
  1268. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +92 -431
  1269. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +143 -429
  1270. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +3 -123
  1271. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +24 -110
  1272. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +12 -90
  1273. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +17 -86
  1274. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +363 -100
  1275. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +97 -315
  1276. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +66 -319
  1277. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +24 -99
  1278. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +54 -180
  1279. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +32 -88
  1280. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_set_state_node_serialization.py +86 -0
  1281. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +217 -142
  1282. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +34 -142
  1283. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +15 -8
  1284. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py +89 -0
  1285. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +184 -0
  1286. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_tool_wrapper_serialization.py +84 -0
  1287. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_mcp_serialization.py +104 -0
  1288. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_parent_input.py +89 -0
  1289. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py +71 -23
  1290. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_tool_wrapper_serialization.py +71 -0
  1291. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py +187 -0
  1292. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py +107 -0
  1293. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +2 -4
  1294. vellum_ee/workflows/display/tests/workflow_serialization/test_chat_message_dict_reference_serialization.py +129 -0
  1295. vellum_ee/workflows/display/tests/workflow_serialization/test_chat_message_trigger_serialization.py +412 -0
  1296. vellum_ee/workflows/display/tests/workflow_serialization/test_code_tool_node_reference_error.py +106 -0
  1297. vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +20 -47
  1298. vellum_ee/workflows/display/tests/workflow_serialization/test_duplicate_trigger_name_validation.py +208 -0
  1299. vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_map_reference_serialization.py +88 -0
  1300. vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_not_referenced_by_workflow_outputs.py +45 -0
  1301. vellum_ee/workflows/display/tests/workflow_serialization/test_infinite_loop_validation.py +66 -0
  1302. vellum_ee/workflows/display/tests/workflow_serialization/test_int_input_serialization.py +40 -0
  1303. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_serialization.py +300 -0
  1304. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_validation.py +173 -0
  1305. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_with_entrypoint_node_id.py +91 -0
  1306. vellum_ee/workflows/display/tests/workflow_serialization/test_list_vellum_document_serialization.py +69 -0
  1307. vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py +120 -0
  1308. vellum_ee/workflows/display/tests/workflow_serialization/test_map_node_with_terminal_nodes_serialization.py +62 -0
  1309. vellum_ee/workflows/display/tests/workflow_serialization/test_multi_trigger_same_node_serialization.py +210 -0
  1310. vellum_ee/workflows/display/tests/workflow_serialization/test_no_triggers_no_entrypoint_validation.py +64 -0
  1311. vellum_ee/workflows/display/tests/workflow_serialization/test_partial_workflow_meta_display_override.py +55 -0
  1312. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_dataset_mocks_serialization.py +268 -0
  1313. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_invalid_pdf_data_url.py +49 -0
  1314. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_validation_errors.py +112 -0
  1315. vellum_ee/workflows/display/tests/workflow_serialization/test_scheduled_trigger_serialization.py +276 -0
  1316. vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_any_serialization.py +49 -0
  1317. vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_in_unused_graphs_serialization.py +53 -0
  1318. vellum_ee/workflows/display/tests/workflow_serialization/test_trigger_display_from_display_class.py +153 -0
  1319. vellum_ee/workflows/display/tests/workflow_serialization/test_web_search_node_serialization.py +72 -0
  1320. vellum_ee/workflows/display/tests/workflow_serialization/test_workflow_input_parameterization_error.py +37 -0
  1321. vellum_ee/workflows/display/types.py +29 -2
  1322. vellum_ee/workflows/display/utils/auto_layout.py +130 -0
  1323. vellum_ee/workflows/display/utils/events.py +57 -0
  1324. vellum_ee/workflows/display/utils/exceptions.py +53 -0
  1325. vellum_ee/workflows/display/utils/expressions.py +669 -55
  1326. vellum_ee/workflows/display/utils/metadata.py +211 -0
  1327. vellum_ee/workflows/display/utils/registry.py +46 -0
  1328. vellum_ee/workflows/display/utils/tests/__init__.py +0 -0
  1329. vellum_ee/workflows/display/utils/tests/test_auto_layout.py +56 -0
  1330. vellum_ee/workflows/display/utils/tests/test_events.py +185 -0
  1331. vellum_ee/workflows/display/utils/tests/test_expressions.py +92 -0
  1332. vellum_ee/workflows/display/utils/tests/test_metadata.py +31 -0
  1333. vellum_ee/workflows/display/utils/triggers.py +153 -0
  1334. vellum_ee/workflows/display/utils/vellum.py +94 -5
  1335. vellum_ee/workflows/display/vellum.py +2 -128
  1336. vellum_ee/workflows/display/workflows/__init__.py +0 -1
  1337. vellum_ee/workflows/display/workflows/base_workflow_display.py +1224 -190
  1338. vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py +26 -0
  1339. vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +379 -41
  1340. vellum_ee/workflows/server/namespaces.py +18 -0
  1341. vellum_ee/workflows/server/virtual_file_loader.py +131 -6
  1342. vellum_ee/workflows/tests/local_workflow/display/nodes/final_output.py +1 -1
  1343. vellum_ee/workflows/tests/local_workflow/display/nodes/templating_node.py +1 -1
  1344. vellum_ee/workflows/tests/local_workflow/display/workflow.py +11 -14
  1345. vellum_ee/workflows/tests/test_display_meta.py +43 -0
  1346. vellum_ee/workflows/tests/test_registry.py +169 -0
  1347. vellum_ee/workflows/tests/test_serialize_module.py +432 -0
  1348. vellum_ee/workflows/tests/test_server.py +616 -44
  1349. vellum_ee/workflows/tests/test_virtual_files.py +48 -0
  1350. vellum/client/resources/release_reviews/client.py +0 -137
  1351. vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py +0 -5
  1352. vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py +0 -266
  1353. vellum/workflows/nodes/experimental/tool_calling_node/__init__.py +0 -3
  1354. vellum/workflows/nodes/experimental/tool_calling_node/node.py +0 -135
  1355. vellum/workflows/nodes/experimental/tool_calling_node/tests/test_node.py +0 -53
  1356. vellum/workflows/nodes/experimental/tool_calling_node/utils.py +0 -259
  1357. vellum_ai-0.14.63.dist-info/RECORD +0 -1719
  1358. vellum_ai-0.14.63.dist-info/entry_points.txt +0 -3
  1359. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +0 -9
  1360. /vellum/{workflows/nodes/displayable/bases/inline_prompt_node → prompts}/constants.py +0 -0
  1361. {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/LICENSE +0 -0
  1362. {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/WHEEL +0 -0
@@ -3,27 +3,47 @@ import inspect
3
3
  import json
4
4
  import sys
5
5
  from types import ModuleType
6
- from typing import Any, Callable, Dict, ForwardRef, List, Optional, Type, TypeVar, Union, get_args, get_origin
6
+ from typing import (
7
+ TYPE_CHECKING,
8
+ Any,
9
+ Callable,
10
+ Dict,
11
+ ForwardRef,
12
+ List,
13
+ Optional,
14
+ Type,
15
+ TypeVar,
16
+ Union,
17
+ get_args,
18
+ get_origin,
19
+ )
7
20
 
8
21
  from pydantic import BaseModel, create_model
9
22
 
10
23
  from vellum.client.types.function_call import FunctionCall
24
+ from vellum.workflows.constants import undefined
11
25
  from vellum.workflows.errors.types import WorkflowErrorCode
12
26
  from vellum.workflows.exceptions import NodeException
13
27
  from vellum.workflows.inputs.base import BaseInputs
14
- from vellum.workflows.nodes import BaseNode
15
- from vellum.workflows.nodes.bases.base_adornment_node import BaseAdornmentNode
16
28
  from vellum.workflows.ports.port import Port
17
29
  from vellum.workflows.state.base import BaseState
18
- from vellum.workflows.types.code_execution_node_wrappers import DictWrapper, ListWrapper, StringValueWrapper
30
+ from vellum.workflows.types.code_execution_node_wrappers import (
31
+ DictWrapper,
32
+ ListWrapper,
33
+ StringValueWrapper,
34
+ clean_for_dict_wrapper,
35
+ )
19
36
  from vellum.workflows.types.core import Json
20
- from vellum.workflows.types.generics import NodeType
37
+ from vellum.workflows.types.generics import NodeType, import_base_adornment_node
38
+
39
+ if TYPE_CHECKING:
40
+ from vellum.workflows.nodes import BaseNode
21
41
 
22
42
  ADORNMENT_MODULE_NAME = "<adornment>"
23
43
 
24
44
 
25
45
  @cache
26
- def get_unadorned_node(node: Type[BaseNode]) -> Type[BaseNode]:
46
+ def get_unadorned_node(node: Type["BaseNode"]) -> Type["BaseNode"]:
27
47
  wrapped_node = get_wrapped_node(node)
28
48
  if wrapped_node is not None:
29
49
  return get_unadorned_node(wrapped_node)
@@ -40,20 +60,21 @@ def get_unadorned_port(port: Port) -> Port:
40
60
  return getattr(unadorned_node.Ports, port.name)
41
61
 
42
62
 
43
- def get_wrapped_node(node: Type[NodeType]) -> Optional[Type[BaseNode]]:
63
+ def get_wrapped_node(node: Type[NodeType]) -> Optional[Type["BaseNode"]]:
64
+ BaseAdornmentNode = import_base_adornment_node()
44
65
  if not issubclass(node, BaseAdornmentNode):
45
66
  return None
46
67
 
47
68
  return node.__wrapped_node__
48
69
 
49
70
 
50
- AdornableNode = TypeVar("AdornableNode", bound=BaseNode)
71
+ AdornableNode = TypeVar("AdornableNode", bound="BaseNode")
51
72
 
52
73
 
53
74
  def create_adornment(
54
75
  adornable_cls: Type[AdornableNode], attributes: Optional[dict[str, Any]] = None
55
76
  ) -> Callable[..., Type["AdornableNode"]]:
56
- def decorator(inner_cls: Type[BaseNode]) -> Type["AdornableNode"]:
77
+ def decorator(inner_cls: Type["BaseNode"]) -> Type["AdornableNode"]:
57
78
  # Investigate how to use dependency injection to avoid circular imports
58
79
  # https://app.shortcut.com/vellum/story/4116
59
80
  from vellum.workflows import BaseWorkflow
@@ -123,11 +144,11 @@ def parse_type_from_str(result_as_str: str, output_type: Any) -> Any:
123
144
  # raise ValueError("Invalid JSON Array format for result_as_str")
124
145
  raise NodeException(
125
146
  code=WorkflowErrorCode.INVALID_OUTPUTS,
126
- message="Invalid JSON Array format for result_as_str",
147
+ message="Invalid JSON format: expected a valid JSON array",
127
148
  )
128
149
 
129
150
  if not isinstance(data, list):
130
- raise ValueError(f"Expected a list of items for result_as_str, received {data.__class__.__name__}")
151
+ raise ValueError(f"Expected a list of items, but received {data.__class__.__name__}")
131
152
 
132
153
  inner_type = get_args(output_type)[0]
133
154
  if issubclass(inner_type, BaseModel):
@@ -135,7 +156,7 @@ def parse_type_from_str(result_as_str: str, output_type: Any) -> Any:
135
156
  else:
136
157
  return data
137
158
 
138
- if output_type is Json:
159
+ if output_type is Json or output_type is Any or output_type is dict or get_origin(output_type) is dict:
139
160
  try:
140
161
  data = json.loads(result_as_str)
141
162
  # If we got a FunctionCallVellumValue, return just the value
@@ -145,7 +166,7 @@ def parse_type_from_str(result_as_str: str, output_type: Any) -> Any:
145
166
  except json.JSONDecodeError:
146
167
  raise NodeException(
147
168
  code=WorkflowErrorCode.INVALID_OUTPUTS,
148
- message="Invalid JSON format for result_as_str",
169
+ message="Invalid JSON format: unable to parse the provided data",
149
170
  )
150
171
 
151
172
  if get_origin(output_type) is Union:
@@ -171,7 +192,7 @@ def parse_type_from_str(result_as_str: str, output_type: Any) -> Any:
171
192
  except json.JSONDecodeError:
172
193
  raise NodeException(
173
194
  code=WorkflowErrorCode.INVALID_OUTPUTS,
174
- message="Invalid JSON format for result_as_str",
195
+ message="Invalid JSON format: unable to parse the provided data",
175
196
  )
176
197
 
177
198
  raise ValueError(f"Unsupported output type: {output_type}")
@@ -248,6 +269,19 @@ def cast_to_output_type(result: Any, output_type: Any) -> Any:
248
269
  if result is None:
249
270
  return _get_default_value(output_type)
250
271
 
272
+ if result is undefined:
273
+ return _get_default_value(output_type)
274
+
275
+ # Attempt JSON parse if type is Any
276
+ if output_type is Any:
277
+ if isinstance(result, str):
278
+ try:
279
+ return json.loads(result)
280
+ except (json.JSONDecodeError, TypeError):
281
+ # If JSON parsing fails, fall back to original result
282
+ pass
283
+ return result
284
+
251
285
  clean_output_type = _clean_output_type(output_type)
252
286
  DynamicModel = create_model("Output", output_type=(clean_output_type, ...))
253
287
 
@@ -261,3 +295,23 @@ def cast_to_output_type(result: Any, output_type: Any) -> Any:
261
295
  code=WorkflowErrorCode.INVALID_OUTPUTS,
262
296
  message=f"Expected an output of type '{output_type_name}', but received '{result_type_name}'",
263
297
  )
298
+
299
+
300
+ def wrap_inputs_for_backward_compatibility(inputs: Dict[str, Any]) -> Dict[str, Any]:
301
+ """Wrap inputs with backward-compatible wrapper classes for legacy .value and .type support."""
302
+
303
+ def _wrap_single_value(value: Any) -> Any:
304
+ if isinstance(value, list):
305
+ return ListWrapper(
306
+ [
307
+ (
308
+ item.model_dump()
309
+ if isinstance(item, BaseModel)
310
+ else clean_for_dict_wrapper(item) if isinstance(item, (dict, list, str)) else item
311
+ )
312
+ for item in value
313
+ ]
314
+ )
315
+ return clean_for_dict_wrapper(value)
316
+
317
+ return {name: _wrap_single_value(value) for name, value in inputs.items()}
@@ -1,19 +1,20 @@
1
- from typing import TYPE_CHECKING, Any, Generic, Iterator, Set, Tuple, Type, TypeVar, Union, cast
1
+ from dataclasses import field
2
+ import inspect
3
+ from typing import Any, Dict, Generic, Iterator, Set, Tuple, Type, TypeVar, Union, cast
2
4
  from typing_extensions import dataclass_transform
3
5
 
4
- from pydantic import GetCoreSchemaHandler
6
+ from pydantic import GetCoreSchemaHandler, ValidationInfo
5
7
  from pydantic_core import core_schema
6
8
 
7
9
  from vellum.workflows.constants import undefined
8
10
  from vellum.workflows.descriptors.base import BaseDescriptor
9
11
  from vellum.workflows.errors.types import WorkflowErrorCode
10
12
  from vellum.workflows.exceptions import NodeException
13
+ from vellum.workflows.executable import BaseExecutable
11
14
  from vellum.workflows.references.output import OutputReference
15
+ from vellum.workflows.types.generics import import_workflow_class, is_node_instance
12
16
  from vellum.workflows.types.utils import get_class_attr_names, infer_types
13
17
 
14
- if TYPE_CHECKING:
15
- from vellum.workflows.nodes.bases.base import BaseNode
16
-
17
18
  _Delta = TypeVar("_Delta")
18
19
  _Accumulated = TypeVar("_Accumulated")
19
20
 
@@ -79,6 +80,10 @@ class BaseOutput(Generic[_Delta, _Accumulated]):
79
80
 
80
81
  return data
81
82
 
83
+ def __vellum_encode__(self) -> dict:
84
+ """Return a JSON-serializable representation of this output."""
85
+ return self.serialize()
86
+
82
87
  def __repr__(self) -> str:
83
88
  if self.value is not undefined:
84
89
  return f"{self.__class__.__name__}({self.name}={self.value})"
@@ -99,6 +104,10 @@ class BaseOutput(Generic[_Delta, _Accumulated]):
99
104
 
100
105
  @dataclass_transform(kw_only_default=True)
101
106
  class _BaseOutputsMeta(type):
107
+ def __new__(cls, name: str, bases: Tuple[Type, ...], dct: Dict[str, Any]) -> Any:
108
+ dct["__parent_class__"] = type(None)
109
+ return super().__new__(cls, name, bases, dct)
110
+
102
111
  def __eq__(cls, other: Any) -> bool:
103
112
  """
104
113
  We need to include custom eq logic to prevent infinite loops during ipython reloading.
@@ -110,17 +119,21 @@ class _BaseOutputsMeta(type):
110
119
  if not cls.__qualname__.endswith(".Outputs") or not other.__qualname__.endswith(".Outputs"):
111
120
  return super().__eq__(other)
112
121
 
113
- self_outputs_class = cast(Type["BaseNode.Outputs"], cls)
114
- other_outputs_class = cast(Type["BaseNode.Outputs"], other)
122
+ self_outputs_class = cast(Type["BaseOutputs"], cls)
123
+ other_outputs_class = cast(Type["BaseOutputs"], other)
115
124
 
116
- if not hasattr(self_outputs_class, "_node_class") or not hasattr(other_outputs_class, "_node_class"):
125
+ if not hasattr(self_outputs_class, "__parent_class__") or not hasattr(other_outputs_class, "__parent_class__"):
117
126
  return super().__eq__(other)
118
127
 
119
- if self_outputs_class._node_class is None or other_outputs_class._node_class is None:
128
+ if self_outputs_class.__parent_class__ is None or other_outputs_class.__parent_class__ is None:
120
129
  return super().__eq__(other)
121
130
 
122
- return getattr(self_outputs_class._node_class, "__qualname__") == getattr(
123
- other_outputs_class._node_class, "__qualname__"
131
+ if self_outputs_class.__parent_class__ is type(None) or other_outputs_class.__parent_class__ is type(None):
132
+ return super().__eq__(other)
133
+
134
+ return (
135
+ self_outputs_class.__parent_class__.__qualname__ == other_outputs_class.__parent_class__.__qualname__
136
+ and self_outputs_class.__parent_class__.__module__ == other_outputs_class.__parent_class__.__module__
124
137
  )
125
138
 
126
139
  def __setattr__(cls, name: str, value: Any) -> None:
@@ -185,6 +198,8 @@ class _BaseOutputsMeta(type):
185
198
 
186
199
 
187
200
  class BaseOutputs(metaclass=_BaseOutputsMeta):
201
+ __parent_class__: Type[BaseExecutable] = field(init=False)
202
+
188
203
  def __init__(self, **kwargs: Any) -> None:
189
204
  declared_fields = {descriptor.name for descriptor in self.__class__}
190
205
  provided_fields = set(kwargs.keys())
@@ -198,8 +213,30 @@ class BaseOutputs(metaclass=_BaseOutputsMeta):
198
213
  for name, value in kwargs.items():
199
214
  setattr(self, name, value)
200
215
 
201
- if hasattr(self, "_outputs_post_init") and callable(self._outputs_post_init):
202
- self._outputs_post_init(**kwargs)
216
+ # If climb up the to the caller's frame, and if it's a BaseNode instance, it should
217
+ # have a state attribute that we can use to resolve the output descriptors.
218
+ frame = inspect.currentframe()
219
+ if not frame:
220
+ return
221
+
222
+ caller_frame = frame.f_back
223
+ if not caller_frame or "self" not in caller_frame.f_locals:
224
+ return
225
+
226
+ caller_self = caller_frame.f_locals["self"]
227
+ if not is_node_instance(caller_self):
228
+ return
229
+
230
+ for node_output_descriptor in self.__class__:
231
+ if node_output_descriptor.name in kwargs:
232
+ continue
233
+
234
+ if isinstance(node_output_descriptor.instance, BaseDescriptor):
235
+ setattr(
236
+ self,
237
+ node_output_descriptor.name,
238
+ node_output_descriptor.instance.resolve(caller_self.state),
239
+ )
203
240
 
204
241
  def __eq__(self, other: object) -> bool:
205
242
  if not isinstance(other, (dict, BaseOutputs)):
@@ -223,8 +260,45 @@ class BaseOutputs(metaclass=_BaseOutputsMeta):
223
260
  def __getitem__(self, key: str) -> Any:
224
261
  return getattr(self, key)
225
262
 
263
+ def __vellum_encode__(self) -> Dict[str, Any]:
264
+ """Return a JSON-serializable representation of this outputs object."""
265
+ return {descriptor.name: value for descriptor, value in self if value is not undefined}
266
+
226
267
  @classmethod
227
268
  def __get_pydantic_core_schema__(
228
269
  cls, source_type: Type[Any], handler: GetCoreSchemaHandler
229
270
  ) -> core_schema.CoreSchema:
230
- return core_schema.is_instance_schema(cls)
271
+ def validate(value: Any, info: ValidationInfo) -> Any:
272
+ if isinstance(value, cls):
273
+ return value
274
+
275
+ if not isinstance(value, dict):
276
+ raise TypeError(f"Value must be an instance of {cls.__name__} or a dict")
277
+
278
+ context = info.context
279
+ if not isinstance(context, dict):
280
+ raise TypeError(f"Unexpected type for context: {type(context)}")
281
+
282
+ workflow = context.get("workflow")
283
+ node_id = context.get("node_id")
284
+ base_workflow_class = import_workflow_class()
285
+ if (
286
+ not workflow
287
+ or not node_id
288
+ or not isinstance(node_id, str)
289
+ or not isinstance(workflow, type)
290
+ or not issubclass(workflow, base_workflow_class)
291
+ ):
292
+ return cls(**value)
293
+
294
+ node_class = workflow.resolve_node_ref(node_id)
295
+ declared_fields = {descriptor.name for descriptor in node_class.Outputs}
296
+ filtered_value = {k: v for k, v in value.items() if k in declared_fields}
297
+ return node_class.Outputs(**filtered_value)
298
+
299
+ return core_schema.union_schema(
300
+ [
301
+ core_schema.is_instance_schema(cls),
302
+ core_schema.with_info_after_validator_function(validate, core_schema.dict_schema()),
303
+ ]
304
+ )
@@ -40,6 +40,9 @@ class NodePorts(metaclass=_NodePortsMeta):
40
40
 
41
41
  invoked_ports: Set[Port] = set()
42
42
  all_ports = [port for port in self.__class__]
43
+ if not all_ports:
44
+ return set()
45
+
43
46
  enforce_single_invoked_conditional_port = validate_ports(all_ports)
44
47
 
45
48
  for port in all_ports:
@@ -7,8 +7,9 @@ from vellum.workflows.descriptors.base import BaseDescriptor
7
7
  from vellum.workflows.descriptors.exceptions import InvalidExpressionException
8
8
  from vellum.workflows.edges.edge import Edge
9
9
  from vellum.workflows.errors.types import WorkflowErrorCode
10
- from vellum.workflows.exceptions import NodeException, WorkflowInitializationException
10
+ from vellum.workflows.exceptions import NodeException
11
11
  from vellum.workflows.graph import Graph, GraphTarget
12
+ from vellum.workflows.graph.graph import NoPortsNode
12
13
  from vellum.workflows.state.base import BaseState
13
14
  from vellum.workflows.types.core import ConditionType
14
15
 
@@ -60,12 +61,29 @@ class Port:
60
61
  return iter(self._edges)
61
62
 
62
63
  def __rshift__(self, other: GraphTarget) -> Graph:
64
+ # Check for trigger target (class-level only)
65
+ from vellum.workflows.triggers.base import BaseTrigger
66
+
67
+ # Check if other is a trigger class
68
+ if isinstance(other, type) and issubclass(other, BaseTrigger):
69
+ raise TypeError(
70
+ f"Cannot create edge targeting trigger {other.__name__}. "
71
+ f"Triggers must be at the start of a graph path, not as targets. "
72
+ f"Did you mean: {other.__name__} >> {self.node_class.__name__}?"
73
+ )
74
+
63
75
  if isinstance(other, set) or isinstance(other, Graph):
64
76
  return Graph.from_port(self) >> other
65
77
 
66
78
  if isinstance(other, Port):
67
79
  return Graph.from_port(self) >> Graph.from_port(other)
68
80
 
81
+ if isinstance(other, NoPortsNode):
82
+ raise ValueError(
83
+ f"Cannot create edge to {other.node_class.__name__} because it has no ports defined. "
84
+ f"Nodes with empty Ports classes cannot be connected to other nodes."
85
+ )
86
+
69
87
  edge = Edge(from_port=self, to_node=other)
70
88
  if edge not in self._edges:
71
89
  self._edges.append(edge)
@@ -89,7 +107,10 @@ class Port:
89
107
  if self._condition is None:
90
108
  return False
91
109
 
92
- value = self._condition.resolve(state)
110
+ if isinstance(self._condition, BaseDescriptor):
111
+ value = self._condition.resolve(state)
112
+ else:
113
+ value = self._condition
93
114
  return bool(value)
94
115
  except InvalidExpressionException as e:
95
116
  raise NodeException(
@@ -102,18 +123,12 @@ class Port:
102
123
  "name": self.name,
103
124
  }
104
125
 
126
+ def __vellum_encode__(self) -> dict:
127
+ """Return a JSON-serializable representation of this port."""
128
+ return self.serialize()
129
+
105
130
  @classmethod
106
131
  def __get_pydantic_core_schema__(
107
132
  cls, source_type: Type[Any], handler: GetCoreSchemaHandler
108
133
  ) -> core_schema.CoreSchema:
109
134
  return core_schema.is_instance_schema(cls)
110
-
111
- def validate(self):
112
- if (
113
- not self.default
114
- and self._condition_type in (ConditionType.IF, ConditionType.ELIF)
115
- and self._condition is None
116
- ):
117
- raise WorkflowInitializationException(
118
- f"Class {self.node_class.__name__}'s {self.name} should have a defined condition and cannot be empty."
119
- )
@@ -0,0 +1,45 @@
1
+ import pytest
2
+ from unittest.mock import Mock
3
+
4
+ from vellum.workflows.ports.port import Port
5
+ from vellum.workflows.state.base import BaseState
6
+ from vellum.workflows.types.core import ConditionType
7
+
8
+
9
+ @pytest.mark.parametrize(
10
+ "condition_value,expected",
11
+ [
12
+ # Truthy values
13
+ (True, True),
14
+ (1, True),
15
+ ("hello", True),
16
+ ([1, 2, 3], True),
17
+ ({"key": "value"}, True),
18
+ (1.5, True),
19
+ (-1, True),
20
+ # Falsy values
21
+ (False, False),
22
+ (0, False),
23
+ ("", False),
24
+ ([], False),
25
+ ({}, False),
26
+ (0.0, False),
27
+ (None, False),
28
+ ],
29
+ )
30
+ def test_port_on_if_with_non_descriptor_values(condition_value, expected):
31
+ """Test that Port.on_if() correctly handles non-descriptor values."""
32
+
33
+ # Given a port with a non-descriptor value
34
+ port = Port.on_if(condition_value)
35
+
36
+ # Then the port properties should be correct
37
+ assert port._condition_type == ConditionType.IF
38
+ assert port._condition == condition_value
39
+
40
+ # When we resolve the condition
41
+ mock_state = Mock(spec=BaseState)
42
+ result = port.resolve_condition(mock_state)
43
+
44
+ # Then the result should be correct
45
+ assert result == expected
@@ -1,6 +1,8 @@
1
1
  from collections import Counter
2
2
  from typing import List
3
3
 
4
+ from vellum.workflows.errors.types import WorkflowErrorCode
5
+ from vellum.workflows.exceptions import NodeException
4
6
  from vellum.workflows.ports.port import Port
5
7
  from vellum.workflows.types.core import ConditionType
6
8
 
@@ -31,14 +33,20 @@ def get_port_groups(ports: List[Port]) -> List[List[ConditionType]]:
31
33
  else:
32
34
  # If we see an ELIF or ELSE without a preceding IF, that's an error
33
35
  if not current_port_group:
34
- raise ValueError(f"Class {ports_class} must have ports in the following order: on_if, on_elif, on_else")
36
+ raise NodeException(
37
+ message=f"Class {ports_class} must have ports in the following order: on_if, on_elif, on_else",
38
+ code=WorkflowErrorCode.INVALID_INPUTS,
39
+ )
35
40
  current_port_group.append(port_type)
36
41
 
37
42
  if current_port_group and current_port_group[0] == ConditionType.IF:
38
43
  port_groups.append(current_port_group)
39
44
  elif current_port_group:
40
45
  # If the last group doesn't start with IF, that's an error
41
- raise ValueError(f"Class {ports_class} must have ports in the following order: on_if, on_elif, on_else")
46
+ raise NodeException(
47
+ message=f"Class {ports_class} must have ports in the following order: on_if, on_elif, on_else",
48
+ code=WorkflowErrorCode.INVALID_INPUTS,
49
+ )
42
50
 
43
51
  return port_groups
44
52
 
@@ -51,7 +59,10 @@ def validate_ports(ports: List[Port]) -> bool:
51
59
  # Check that each port group is in the correct order
52
60
  sorted_group = sorted(group, key=lambda port_type: PORT_TYPE_PRIORITIES[port_type])
53
61
  if sorted_group != group:
54
- raise ValueError(f"Class {ports_class} must have ports in the following order: on_if, on_elif, on_else")
62
+ raise NodeException(
63
+ message=f"Class {ports_class} must have ports in the following order: on_if, on_elif, on_else",
64
+ code=WorkflowErrorCode.INVALID_INPUTS,
65
+ )
55
66
 
56
67
  # Count the types in this port group
57
68
  counter = Counter(group)
@@ -61,13 +72,22 @@ def validate_ports(ports: List[Port]) -> bool:
61
72
 
62
73
  # Apply the rules to each port group
63
74
  if number_of_if_ports != 1:
64
- raise ValueError(f"Class {ports_class} must have exactly one on_if condition")
75
+ raise NodeException(
76
+ message=f"Class {ports_class} must have exactly one on_if condition",
77
+ code=WorkflowErrorCode.INVALID_INPUTS,
78
+ )
65
79
 
66
80
  if number_of_elif_ports > 0 and number_of_if_ports != 1:
67
- raise ValueError(f"Class {ports_class} containing on_elif ports must have exactly one on_if condition")
81
+ raise NodeException(
82
+ message=f"Class {ports_class} containing on_elif ports must have exactly one on_if condition",
83
+ code=WorkflowErrorCode.INVALID_INPUTS,
84
+ )
68
85
 
69
86
  if number_of_else_ports > 1:
70
- raise ValueError(f"Class {ports_class} must have at most one on_else condition")
87
+ raise NodeException(
88
+ message=f"Class {ports_class} must have at most one on_else condition",
89
+ code=WorkflowErrorCode.INVALID_INPUTS,
90
+ )
71
91
 
72
92
  enforce_single_invoked_conditional_port = len(port_groups) <= 1
73
93
  return enforce_single_invoked_conditional_port
@@ -4,6 +4,7 @@ from .lazy import LazyReference
4
4
  from .node import NodeReference
5
5
  from .output import OutputReference
6
6
  from .state_value import StateValueReference
7
+ from .trigger import TriggerAttributeReference
7
8
  from .vellum_secret import VellumSecretReference
8
9
  from .workflow_input import WorkflowInputReference
9
10
 
@@ -14,6 +15,7 @@ __all__ = [
14
15
  "NodeReference",
15
16
  "OutputReference",
16
17
  "StateValueReference",
18
+ "TriggerAttributeReference",
17
19
  "VellumSecretReference",
18
20
  "WorkflowInputReference",
19
21
  ]
@@ -1,4 +1,4 @@
1
- from typing import TYPE_CHECKING, Generic, TypeVar
1
+ from typing import TYPE_CHECKING, Any, Dict, Generic, TypeVar
2
2
 
3
3
  from vellum.workflows.descriptors.base import BaseDescriptor
4
4
 
@@ -19,3 +19,6 @@ class ConstantValueReference(BaseDescriptor[_T], Generic[_T]):
19
19
 
20
20
  def resolve(self, state: "BaseState") -> _T:
21
21
  return self._value
22
+
23
+ def __vellum_encode__(self) -> Dict[str, Any]:
24
+ return {"type": "CONSTANT_VALUE", "value": {"type": "JSON", "value": self._value}}
@@ -1,6 +1,7 @@
1
1
  import os
2
- from typing import TYPE_CHECKING, Optional
2
+ from typing import TYPE_CHECKING, Any, Dict, Optional
3
3
 
4
+ from vellum.workflows.constants import undefined
4
5
  from vellum.workflows.descriptors.base import BaseDescriptor
5
6
 
6
7
  if TYPE_CHECKING:
@@ -8,17 +9,24 @@ if TYPE_CHECKING:
8
9
 
9
10
 
10
11
  class EnvironmentVariableReference(BaseDescriptor[str]):
11
- def __init__(self, *, name: str, default: Optional[str]):
12
- super().__init__(name=name, types=(str,))
13
- self._default = default
12
+ def __init__(
13
+ self,
14
+ *,
15
+ name: str,
16
+ # DEPRECATED - to be removed in 2.0 release
17
+ default: Optional[str] = None,
18
+ ):
19
+ super().__init__(name=name, types=(str,), is_sensitive=True)
14
20
 
15
- def resolve(self, state: "BaseState") -> str:
21
+ def resolve(self, state: "BaseState") -> Any:
16
22
  env_value = os.environ.get(self.name)
17
23
  if env_value is not None:
18
24
  return env_value
19
25
 
20
- if self._default is not None:
21
- return self._default
26
+ return undefined
22
27
 
23
- # Fetch Vellum Environment Variable named `self.name` once that project is done
24
- raise ValueError(f"No environment variable named '{self.name}' found")
28
+ def __vellum_encode__(self) -> Dict[str, Any]:
29
+ return {
30
+ "type": "ENVIRONMENT_VARIABLE",
31
+ "environment_variable": self.name,
32
+ }
@@ -5,6 +5,7 @@ from typing import TYPE_CHECKING, Callable, Generic, TypeVar, Union, get_args
5
5
 
6
6
  from vellum.workflows.constants import undefined
7
7
  from vellum.workflows.descriptors.base import BaseDescriptor
8
+ from vellum.workflows.types.generics import is_workflow_class
8
9
 
9
10
  if TYPE_CHECKING:
10
11
  from vellum.workflows.state.base import BaseState
@@ -36,6 +37,13 @@ class LazyReference(BaseDescriptor[_T], Generic[_T]):
36
37
  if str(output_reference) == self._get:
37
38
  return value
38
39
 
40
+ # Check workflow outputs
41
+ workflow_definition = state.meta.workflow_definition
42
+ if is_workflow_class(workflow_definition):
43
+ for output_reference in workflow_definition.Outputs:
44
+ if str(output_reference) == self._get:
45
+ return resolve_value(output_reference.instance, state) # type: ignore[return-value]
46
+
39
47
  child_reference = self.resolve(state.meta.parent) if state.meta.parent else None
40
48
 
41
49
  # Fix typing surrounding the return value of node outputs/output descriptors
@@ -35,13 +35,11 @@ class OutputReference(BaseDescriptor[_OutputType], Generic[_OutputType]):
35
35
 
36
36
  @cached_property
37
37
  def id(self) -> UUID:
38
- self._outputs_class = self._outputs_class
39
-
40
- node_class = getattr(self._outputs_class, "_node_class", None)
41
- if not node_class:
38
+ parent_class = self._outputs_class.__parent_class__
39
+ if not parent_class:
42
40
  return uuid4()
43
41
 
44
- output_ids = getattr(node_class, "__output_ids__", {})
42
+ output_ids = getattr(parent_class, "__output_ids__", {})
45
43
  if not isinstance(output_ids, dict):
46
44
  return uuid4()
47
45
 
@@ -78,7 +76,7 @@ class OutputReference(BaseDescriptor[_OutputType], Generic[_OutputType]):
78
76
  def __eq__(self, other: object) -> bool:
79
77
  if not isinstance(other, type(self)):
80
78
  return False
81
- return super().__eq__(other) and id(self._outputs_class) == id(other._outputs_class)
79
+ return super().__eq__(other) and self._outputs_class == other._outputs_class
82
80
 
83
81
  def __hash__(self) -> int:
84
82
  return hash((self._outputs_class, self._name))