vellum-ai 0.14.41__py3-none-any.whl → 1.11.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

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