vellum-ai 0.14.63__py3-none-any.whl → 1.13.5__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (1362) hide show
  1. vellum/__init__.py +287 -4
  2. vellum/client/README.md +69 -16
  3. vellum/client/__init__.py +598 -1437
  4. vellum/client/core/__init__.py +5 -0
  5. vellum/client/core/api_error.py +13 -5
  6. vellum/client/core/client_wrapper.py +30 -4
  7. vellum/client/core/force_multipart.py +18 -0
  8. vellum/client/core/http_client.py +70 -26
  9. vellum/client/core/http_response.py +55 -0
  10. vellum/client/core/jsonable_encoder.py +0 -1
  11. vellum/client/core/pydantic_utilities.py +90 -117
  12. vellum/client/core/serialization.py +7 -3
  13. vellum/client/errors/__init__.py +14 -1
  14. vellum/client/errors/bad_request_error.py +4 -3
  15. vellum/client/errors/forbidden_error.py +4 -3
  16. vellum/client/errors/internal_server_error.py +4 -3
  17. vellum/client/errors/misdirected_request_error.py +11 -0
  18. vellum/client/errors/not_found_error.py +4 -3
  19. vellum/client/errors/too_many_requests_error.py +10 -0
  20. vellum/client/errors/unauthorized_error.py +11 -0
  21. vellum/client/raw_client.py +2725 -0
  22. vellum/client/reference.md +3160 -1217
  23. vellum/client/resources/__init__.py +16 -2
  24. vellum/client/resources/ad_hoc/__init__.py +2 -0
  25. vellum/client/resources/ad_hoc/client.py +173 -377
  26. vellum/client/resources/ad_hoc/raw_client.py +569 -0
  27. vellum/client/resources/container_images/__init__.py +2 -0
  28. vellum/client/resources/container_images/client.py +365 -185
  29. vellum/client/resources/container_images/raw_client.py +693 -0
  30. vellum/client/resources/deployments/__init__.py +2 -0
  31. vellum/client/resources/deployments/client.py +119 -463
  32. vellum/client/resources/deployments/raw_client.py +1002 -0
  33. vellum/client/resources/deployments/types/__init__.py +2 -0
  34. vellum/client/resources/document_indexes/__init__.py +2 -0
  35. vellum/client/resources/document_indexes/client.py +131 -383
  36. vellum/client/resources/document_indexes/raw_client.py +866 -0
  37. vellum/client/resources/document_indexes/types/__init__.py +2 -0
  38. vellum/client/resources/documents/__init__.py +2 -0
  39. vellum/client/resources/documents/client.py +111 -333
  40. vellum/client/resources/documents/raw_client.py +672 -0
  41. vellum/client/resources/{release_reviews → environments}/__init__.py +2 -0
  42. vellum/client/resources/environments/client.py +106 -0
  43. vellum/client/resources/environments/raw_client.py +95 -0
  44. vellum/client/resources/events/__init__.py +4 -0
  45. vellum/client/resources/events/client.py +201 -0
  46. vellum/client/resources/events/raw_client.py +211 -0
  47. vellum/client/resources/folder_entities/__init__.py +2 -0
  48. vellum/client/resources/folder_entities/client.py +56 -95
  49. vellum/client/resources/folder_entities/raw_client.py +276 -0
  50. vellum/client/resources/folder_entities/types/__init__.py +2 -0
  51. vellum/client/resources/integration_auth_configs/__init__.py +4 -0
  52. vellum/client/resources/integration_auth_configs/client.py +188 -0
  53. vellum/client/resources/integration_auth_configs/raw_client.py +173 -0
  54. vellum/client/resources/integration_providers/__init__.py +4 -0
  55. vellum/client/resources/integration_providers/client.py +325 -0
  56. vellum/client/resources/integration_providers/raw_client.py +299 -0
  57. vellum/client/resources/integrations/__init__.py +4 -0
  58. vellum/client/resources/integrations/client.py +514 -0
  59. vellum/client/resources/integrations/raw_client.py +618 -0
  60. vellum/client/resources/metric_definitions/__init__.py +2 -0
  61. vellum/client/resources/metric_definitions/client.py +60 -106
  62. vellum/client/resources/metric_definitions/raw_client.py +224 -0
  63. vellum/client/resources/ml_models/__init__.py +2 -0
  64. vellum/client/resources/ml_models/client.py +37 -46
  65. vellum/client/resources/ml_models/raw_client.py +102 -0
  66. vellum/client/resources/organizations/__init__.py +2 -0
  67. vellum/client/resources/organizations/client.py +37 -45
  68. vellum/client/resources/organizations/raw_client.py +95 -0
  69. vellum/client/resources/prompts/__init__.py +2 -0
  70. vellum/client/resources/prompts/client.py +84 -202
  71. vellum/client/resources/prompts/raw_client.py +353 -0
  72. vellum/client/resources/sandboxes/__init__.py +2 -0
  73. vellum/client/resources/sandboxes/client.py +69 -159
  74. vellum/client/resources/sandboxes/raw_client.py +392 -0
  75. vellum/client/resources/test_suite_runs/__init__.py +2 -0
  76. vellum/client/resources/test_suite_runs/client.py +65 -157
  77. vellum/client/resources/test_suite_runs/raw_client.py +354 -0
  78. vellum/client/resources/test_suites/__init__.py +2 -0
  79. vellum/client/resources/test_suites/client.py +162 -266
  80. vellum/client/resources/test_suites/raw_client.py +530 -0
  81. vellum/client/resources/uploaded_files/__init__.py +4 -0
  82. vellum/client/resources/uploaded_files/client.py +230 -0
  83. vellum/client/resources/uploaded_files/raw_client.py +316 -0
  84. vellum/client/resources/workflow_deployments/__init__.py +2 -0
  85. vellum/client/resources/workflow_deployments/client.py +456 -351
  86. vellum/client/resources/workflow_deployments/raw_client.py +1393 -0
  87. vellum/client/resources/workflow_deployments/types/__init__.py +2 -0
  88. vellum/client/resources/workflow_executions/__init__.py +4 -0
  89. vellum/client/resources/workflow_executions/client.py +140 -0
  90. vellum/client/resources/workflow_executions/raw_client.py +173 -0
  91. vellum/client/resources/workflow_sandboxes/__init__.py +2 -0
  92. vellum/client/resources/workflow_sandboxes/client.py +58 -123
  93. vellum/client/resources/workflow_sandboxes/raw_client.py +291 -0
  94. vellum/client/resources/workflow_sandboxes/types/__init__.py +2 -0
  95. vellum/client/resources/workflows/__init__.py +2 -0
  96. vellum/client/resources/workflows/client.py +464 -145
  97. vellum/client/resources/workflows/raw_client.py +884 -0
  98. vellum/client/resources/workspace_secrets/__init__.py +2 -0
  99. vellum/client/resources/workspace_secrets/client.py +43 -100
  100. vellum/client/resources/workspace_secrets/raw_client.py +219 -0
  101. vellum/client/resources/workspaces/__init__.py +2 -0
  102. vellum/client/resources/workspaces/client.py +37 -45
  103. vellum/client/resources/workspaces/raw_client.py +95 -0
  104. vellum/client/tests/__init__.py +0 -0
  105. vellum/client/tests/test_utils.py +34 -0
  106. vellum/client/types/__init__.py +260 -0
  107. vellum/client/types/ad_hoc_execute_prompt_event.py +3 -2
  108. vellum/client/types/ad_hoc_expand_meta.py +2 -2
  109. vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py +3 -3
  110. vellum/client/types/ad_hoc_initiated_prompt_execution_meta.py +2 -2
  111. vellum/client/types/ad_hoc_rejected_prompt_execution_meta.py +3 -3
  112. vellum/client/types/ad_hoc_streaming_prompt_execution_meta.py +2 -2
  113. vellum/client/types/api_actor_type_enum.py +7 -0
  114. vellum/client/types/api_node_result.py +3 -3
  115. vellum/client/types/api_node_result_data.py +4 -4
  116. vellum/client/types/api_request_parent_context.py +17 -10
  117. vellum/client/types/api_version_enum.py +1 -1
  118. vellum/client/types/array_chat_message_content.py +3 -3
  119. vellum/client/types/array_chat_message_content_item.py +7 -4
  120. vellum/client/types/array_chat_message_content_item_request.py +7 -4
  121. vellum/client/types/array_chat_message_content_request.py +3 -3
  122. vellum/client/types/array_input.py +12 -6
  123. vellum/client/types/array_vellum_value.py +4 -4
  124. vellum/client/types/array_vellum_value_request.py +4 -4
  125. vellum/client/types/audio_chat_message_content.py +3 -3
  126. vellum/client/types/audio_chat_message_content_request.py +3 -3
  127. vellum/client/types/audio_input.py +30 -0
  128. vellum/client/types/audio_input_request.py +30 -0
  129. vellum/client/types/audio_prompt_block.py +4 -4
  130. vellum/client/types/audio_vellum_value.py +3 -3
  131. vellum/client/types/audio_vellum_value_request.py +3 -3
  132. vellum/client/types/auth_type_enum.py +5 -0
  133. vellum/client/types/base_output.py +4 -4
  134. vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large.py +2 -2
  135. vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large_request.py +2 -2
  136. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1.py +2 -2
  137. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1_request.py +2 -2
  138. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1.py +2 -2
  139. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1_request.py +2 -2
  140. vellum/client/types/build_status_enum.py +5 -0
  141. vellum/client/types/chat_history_input.py +3 -3
  142. vellum/client/types/chat_history_input_request.py +3 -3
  143. vellum/client/types/chat_history_vellum_value.py +3 -3
  144. vellum/client/types/chat_history_vellum_value_request.py +3 -3
  145. vellum/client/types/chat_message.py +4 -4
  146. vellum/client/types/chat_message_content.py +7 -4
  147. vellum/client/types/chat_message_content_request.py +7 -4
  148. vellum/client/types/chat_message_prompt_block.py +7 -7
  149. vellum/client/types/chat_message_request.py +4 -4
  150. vellum/client/types/check_workflow_execution_status_error.py +21 -0
  151. vellum/client/types/check_workflow_execution_status_response.py +29 -0
  152. vellum/client/types/code_execution_node_array_result.py +11 -5
  153. vellum/client/types/code_execution_node_chat_history_result.py +3 -3
  154. vellum/client/types/code_execution_node_error_result.py +3 -3
  155. vellum/client/types/code_execution_node_function_call_result.py +3 -3
  156. vellum/client/types/code_execution_node_json_result.py +2 -2
  157. vellum/client/types/code_execution_node_number_result.py +2 -2
  158. vellum/client/types/code_execution_node_result.py +10 -4
  159. vellum/client/types/code_execution_node_result_data.py +10 -4
  160. vellum/client/types/code_execution_node_result_output.py +6 -5
  161. vellum/client/types/code_execution_node_search_results_result.py +3 -3
  162. vellum/client/types/code_execution_node_string_result.py +2 -2
  163. vellum/client/types/code_execution_package.py +3 -2
  164. vellum/client/types/code_execution_package_request.py +21 -0
  165. vellum/client/types/code_executor_input.py +15 -6
  166. vellum/client/types/code_executor_response.py +11 -5
  167. vellum/client/types/code_executor_secret_input.py +3 -3
  168. vellum/client/types/code_resource_definition.py +3 -3
  169. vellum/client/types/compile_prompt_deployment_expand_meta_request.py +2 -2
  170. vellum/client/types/compile_prompt_meta.py +2 -2
  171. vellum/client/types/components_schemas_composio_execute_tool_request.py +5 -0
  172. vellum/client/types/components_schemas_composio_execute_tool_response.py +5 -0
  173. vellum/client/types/components_schemas_composio_integration_exec_config.py +5 -0
  174. vellum/client/types/components_schemas_composio_tool_definition.py +5 -0
  175. vellum/client/types/components_schemas_slim_composio_tool_definition.py +5 -0
  176. vellum/client/types/composio_execute_tool_request.py +29 -0
  177. vellum/client/types/composio_execute_tool_response.py +24 -0
  178. vellum/client/types/composio_integration_exec_config.py +21 -0
  179. vellum/client/types/composio_tool_definition.py +31 -0
  180. vellum/client/types/conditional_node_result.py +3 -3
  181. vellum/client/types/conditional_node_result_data.py +2 -2
  182. vellum/client/types/container_image_build_config.py +22 -0
  183. vellum/client/types/container_image_container_image_tag.py +3 -2
  184. vellum/client/types/container_image_read.py +8 -4
  185. vellum/client/types/create_test_suite_test_case_request.py +9 -3
  186. vellum/client/types/create_workflow_event_request.py +7 -0
  187. vellum/client/types/dataset_row_push_request.py +23 -0
  188. vellum/client/types/delimiter_chunker_config.py +20 -0
  189. vellum/client/types/delimiter_chunker_config_request.py +20 -0
  190. vellum/client/types/delimiter_chunking.py +21 -0
  191. vellum/client/types/delimiter_chunking_request.py +21 -0
  192. vellum/client/types/deployment_history_item.py +10 -4
  193. vellum/client/types/deployment_provider_payload_response.py +4 -4
  194. vellum/client/types/deployment_read.py +15 -9
  195. vellum/client/types/deployment_release_tag_deployment_history_item.py +2 -2
  196. vellum/client/types/deployment_release_tag_read.py +4 -4
  197. vellum/client/types/deprecated_prompt_request_input.py +8 -0
  198. vellum/client/types/docker_service_token.py +2 -2
  199. vellum/client/types/document_chat_message_content.py +3 -3
  200. vellum/client/types/document_chat_message_content_request.py +3 -3
  201. vellum/client/types/document_document_to_document_index.py +5 -4
  202. vellum/client/types/document_index_chunking.py +5 -1
  203. vellum/client/types/document_index_chunking_request.py +3 -1
  204. vellum/client/types/document_index_indexing_config.py +4 -4
  205. vellum/client/types/document_index_indexing_config_request.py +4 -4
  206. vellum/client/types/document_index_read.py +4 -4
  207. vellum/client/types/document_input.py +30 -0
  208. vellum/client/types/document_input_request.py +30 -0
  209. vellum/client/types/document_prompt_block.py +4 -4
  210. vellum/client/types/document_read.py +9 -5
  211. vellum/client/types/document_vellum_value.py +3 -3
  212. vellum/client/types/document_vellum_value_request.py +3 -3
  213. vellum/client/types/enriched_normalized_completion.py +3 -3
  214. vellum/client/types/environment_display_config.py +19 -0
  215. vellum/client/types/environment_read.py +23 -0
  216. vellum/client/types/ephemeral_prompt_cache_config.py +3 -3
  217. vellum/client/types/error_detail_response.py +22 -0
  218. vellum/client/types/error_input.py +3 -3
  219. vellum/client/types/error_vellum_value.py +3 -3
  220. vellum/client/types/error_vellum_value_request.py +3 -3
  221. vellum/client/types/event_create_response.py +31 -0
  222. vellum/client/types/execute_api_request_bearer_token.py +1 -0
  223. vellum/client/types/execute_api_request_headers_value.py +1 -0
  224. vellum/client/types/execute_api_response.py +6 -6
  225. vellum/client/types/execute_prompt_event.py +3 -2
  226. vellum/client/types/execute_prompt_response.py +1 -0
  227. vellum/client/types/execute_workflow_async_response.py +26 -0
  228. vellum/client/types/execute_workflow_response.py +10 -4
  229. vellum/client/types/execute_workflow_workflow_result_event.py +1 -0
  230. vellum/client/types/execution_array_vellum_value.py +12 -6
  231. vellum/client/types/execution_audio_vellum_value.py +31 -0
  232. vellum/client/types/execution_chat_history_vellum_value.py +3 -3
  233. vellum/client/types/execution_document_vellum_value.py +31 -0
  234. vellum/client/types/execution_error_vellum_value.py +3 -3
  235. vellum/client/types/execution_function_call_vellum_value.py +3 -3
  236. vellum/client/types/execution_image_vellum_value.py +31 -0
  237. vellum/client/types/execution_json_vellum_value.py +3 -3
  238. vellum/client/types/execution_number_vellum_value.py +3 -3
  239. vellum/client/types/execution_search_results_vellum_value.py +3 -3
  240. vellum/client/types/execution_string_vellum_value.py +3 -3
  241. vellum/client/types/execution_thinking_vellum_value.py +31 -0
  242. vellum/client/types/execution_vellum_value.py +16 -5
  243. vellum/client/types/execution_video_vellum_value.py +31 -0
  244. vellum/client/types/external_input_descriptor.py +3 -3
  245. vellum/client/types/external_parent_context.py +38 -0
  246. vellum/client/types/external_test_case_execution.py +10 -4
  247. vellum/client/types/external_test_case_execution_request.py +10 -4
  248. vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +23 -0
  249. vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +23 -0
  250. vellum/client/types/folder_entity.py +5 -2
  251. vellum/client/types/folder_entity_dataset.py +26 -0
  252. vellum/client/types/folder_entity_dataset_data.py +25 -0
  253. vellum/client/types/folder_entity_document_index.py +3 -3
  254. vellum/client/types/folder_entity_document_index_data.py +5 -3
  255. vellum/client/types/folder_entity_folder.py +3 -3
  256. vellum/client/types/folder_entity_folder_data.py +2 -2
  257. vellum/client/types/folder_entity_prompt_sandbox.py +3 -3
  258. vellum/client/types/folder_entity_prompt_sandbox_data.py +4 -3
  259. vellum/client/types/folder_entity_test_suite.py +3 -3
  260. vellum/client/types/folder_entity_test_suite_data.py +3 -3
  261. vellum/client/types/folder_entity_workflow_sandbox.py +3 -3
  262. vellum/client/types/folder_entity_workflow_sandbox_data.py +6 -3
  263. vellum/client/types/fulfilled_ad_hoc_execute_prompt_event.py +4 -4
  264. vellum/client/types/fulfilled_execute_prompt_event.py +4 -4
  265. vellum/client/types/fulfilled_execute_prompt_response.py +3 -3
  266. vellum/client/types/fulfilled_execute_workflow_workflow_result_event.py +11 -5
  267. vellum/client/types/fulfilled_prompt_execution_meta.py +3 -3
  268. vellum/client/types/fulfilled_workflow_node_result_event.py +12 -6
  269. vellum/client/types/function_call.py +2 -2
  270. vellum/client/types/function_call_chat_message_content.py +3 -3
  271. vellum/client/types/function_call_chat_message_content_request.py +3 -3
  272. vellum/client/types/function_call_chat_message_content_value.py +2 -2
  273. vellum/client/types/function_call_chat_message_content_value_request.py +2 -2
  274. vellum/client/types/function_call_input.py +3 -3
  275. vellum/client/types/function_call_prompt_block.py +4 -4
  276. vellum/client/types/function_call_request.py +2 -2
  277. vellum/client/types/function_call_vellum_value.py +3 -3
  278. vellum/client/types/function_call_vellum_value_request.py +3 -3
  279. vellum/client/types/function_definition.py +9 -4
  280. vellum/client/types/generate_options_request.py +3 -3
  281. vellum/client/types/generate_request.py +2 -2
  282. vellum/client/types/generate_response.py +3 -3
  283. vellum/client/types/generate_result.py +3 -3
  284. vellum/client/types/generate_result_data.py +3 -3
  285. vellum/client/types/generate_result_error.py +3 -3
  286. vellum/client/types/generate_stream_response.py +3 -3
  287. vellum/client/types/generate_stream_result.py +4 -4
  288. vellum/client/types/generate_stream_result_data.py +3 -3
  289. vellum/client/types/google_vertex_ai_vectorizer_config.py +2 -2
  290. vellum/client/types/google_vertex_ai_vectorizer_config_request.py +2 -2
  291. vellum/client/types/google_vertex_ai_vectorizer_gemini_embedding_001.py +21 -0
  292. vellum/client/types/google_vertex_ai_vectorizer_gemini_embedding_001_request.py +21 -0
  293. vellum/client/types/google_vertex_ai_vectorizer_text_embedding_004.py +3 -3
  294. vellum/client/types/google_vertex_ai_vectorizer_text_embedding_004_request.py +3 -3
  295. vellum/client/types/google_vertex_ai_vectorizer_text_multilingual_embedding_002.py +3 -3
  296. vellum/client/types/google_vertex_ai_vectorizer_text_multilingual_embedding_002_request.py +3 -3
  297. vellum/client/types/hkunlp_instructor_xl_vectorizer.py +3 -3
  298. vellum/client/types/hkunlp_instructor_xl_vectorizer_request.py +3 -3
  299. vellum/client/types/image_chat_message_content.py +3 -3
  300. vellum/client/types/image_chat_message_content_request.py +3 -3
  301. vellum/client/types/image_input.py +30 -0
  302. vellum/client/types/image_input_request.py +30 -0
  303. vellum/client/types/image_prompt_block.py +4 -4
  304. vellum/client/types/image_vellum_value.py +3 -3
  305. vellum/client/types/image_vellum_value_request.py +3 -3
  306. vellum/client/types/indexing_config_vectorizer.py +11 -4
  307. vellum/client/types/indexing_config_vectorizer_request.py +11 -4
  308. vellum/client/types/initiated_ad_hoc_execute_prompt_event.py +3 -3
  309. vellum/client/types/initiated_execute_prompt_event.py +3 -3
  310. vellum/client/types/initiated_prompt_execution_meta.py +2 -2
  311. vellum/client/types/initiated_workflow_node_result_event.py +12 -6
  312. vellum/client/types/instructor_vectorizer_config.py +2 -2
  313. vellum/client/types/instructor_vectorizer_config_request.py +2 -2
  314. vellum/client/types/integration.py +27 -0
  315. vellum/client/types/integration_auth_config_integration.py +23 -0
  316. vellum/client/types/integration_auth_config_integration_credential.py +19 -0
  317. vellum/client/types/integration_credential_access_type.py +5 -0
  318. vellum/client/types/integration_name.py +109 -0
  319. vellum/client/types/integration_provider.py +5 -0
  320. vellum/client/types/integration_read.py +30 -0
  321. vellum/client/types/integration_trigger_context.py +39 -0
  322. vellum/client/types/invoked_port.py +2 -2
  323. vellum/client/types/jinja_prompt_block.py +4 -4
  324. vellum/client/types/json_input.py +3 -3
  325. vellum/client/types/json_input_request.py +3 -3
  326. vellum/client/types/json_vellum_value.py +2 -2
  327. vellum/client/types/json_vellum_value_request.py +2 -2
  328. vellum/client/types/logical_operator.py +4 -0
  329. vellum/client/types/map_node_result.py +3 -3
  330. vellum/client/types/map_node_result_data.py +3 -3
  331. vellum/client/types/merge_node_result.py +3 -3
  332. vellum/client/types/merge_node_result_data.py +2 -2
  333. vellum/client/types/metadata_filter_config_request.py +12 -6
  334. vellum/client/types/metadata_filter_rule_request.py +5 -5
  335. vellum/client/types/metadata_filters_request.py +1 -0
  336. vellum/client/types/metric_definition_execution.py +10 -4
  337. vellum/client/types/metric_definition_history_item.py +10 -4
  338. vellum/client/types/metric_definition_input.py +3 -2
  339. vellum/client/types/metric_node_result.py +2 -2
  340. vellum/client/types/ml_model_read.py +6 -3
  341. vellum/client/types/ml_model_usage.py +2 -2
  342. vellum/client/types/ml_model_usage_wrapper.py +3 -3
  343. vellum/client/types/named_scenario_input_audio_variable_value_request.py +22 -0
  344. vellum/client/types/named_scenario_input_chat_history_variable_value_request.py +3 -3
  345. vellum/client/types/named_scenario_input_document_variable_value_request.py +22 -0
  346. vellum/client/types/named_scenario_input_image_variable_value_request.py +22 -0
  347. vellum/client/types/named_scenario_input_json_variable_value_request.py +2 -2
  348. vellum/client/types/named_scenario_input_request.py +11 -2
  349. vellum/client/types/named_scenario_input_string_variable_value_request.py +2 -2
  350. vellum/client/types/named_scenario_input_video_variable_value_request.py +22 -0
  351. vellum/client/types/named_test_case_array_variable_value.py +11 -5
  352. vellum/client/types/named_test_case_array_variable_value_request.py +11 -5
  353. vellum/client/types/named_test_case_audio_variable_value.py +26 -0
  354. vellum/client/types/named_test_case_audio_variable_value_request.py +26 -0
  355. vellum/client/types/named_test_case_chat_history_variable_value.py +3 -3
  356. vellum/client/types/named_test_case_chat_history_variable_value_request.py +3 -3
  357. vellum/client/types/named_test_case_document_variable_value.py +22 -0
  358. vellum/client/types/named_test_case_document_variable_value_request.py +22 -0
  359. vellum/client/types/named_test_case_error_variable_value.py +3 -3
  360. vellum/client/types/named_test_case_error_variable_value_request.py +3 -3
  361. vellum/client/types/named_test_case_function_call_variable_value.py +3 -3
  362. vellum/client/types/named_test_case_function_call_variable_value_request.py +3 -3
  363. vellum/client/types/named_test_case_image_variable_value.py +22 -0
  364. vellum/client/types/named_test_case_image_variable_value_request.py +22 -0
  365. vellum/client/types/named_test_case_json_variable_value.py +2 -2
  366. vellum/client/types/named_test_case_json_variable_value_request.py +2 -2
  367. vellum/client/types/named_test_case_number_variable_value.py +2 -2
  368. vellum/client/types/named_test_case_number_variable_value_request.py +2 -2
  369. vellum/client/types/named_test_case_search_results_variable_value.py +3 -3
  370. vellum/client/types/named_test_case_search_results_variable_value_request.py +3 -3
  371. vellum/client/types/named_test_case_string_variable_value.py +2 -2
  372. vellum/client/types/named_test_case_string_variable_value_request.py +2 -2
  373. vellum/client/types/named_test_case_variable_value.py +14 -5
  374. vellum/client/types/named_test_case_variable_value_request.py +14 -5
  375. vellum/client/types/named_test_case_video_variable_value.py +22 -0
  376. vellum/client/types/named_test_case_video_variable_value_request.py +22 -0
  377. vellum/client/types/node_execution_fulfilled_body.py +5 -4
  378. vellum/client/types/node_execution_fulfilled_event.py +24 -15
  379. vellum/client/types/node_execution_initiated_body.py +3 -3
  380. vellum/client/types/node_execution_initiated_event.py +24 -15
  381. vellum/client/types/node_execution_log_body.py +24 -0
  382. vellum/client/types/node_execution_log_event.py +47 -0
  383. vellum/client/types/node_execution_paused_body.py +3 -3
  384. vellum/client/types/node_execution_paused_event.py +24 -15
  385. vellum/client/types/node_execution_rejected_body.py +5 -4
  386. vellum/client/types/node_execution_rejected_event.py +24 -15
  387. vellum/client/types/node_execution_resumed_body.py +3 -3
  388. vellum/client/types/node_execution_resumed_event.py +24 -15
  389. vellum/client/types/node_execution_span.py +23 -12
  390. vellum/client/types/node_execution_span_attributes.py +4 -2
  391. vellum/client/types/node_execution_streaming_body.py +4 -4
  392. vellum/client/types/node_execution_streaming_event.py +24 -15
  393. vellum/client/types/node_input_compiled_array_value.py +11 -5
  394. vellum/client/types/node_input_compiled_audio_value.py +23 -0
  395. vellum/client/types/node_input_compiled_chat_history_value.py +3 -3
  396. vellum/client/types/node_input_compiled_document_value.py +23 -0
  397. vellum/client/types/node_input_compiled_error_value.py +3 -3
  398. vellum/client/types/node_input_compiled_function_call_value.py +3 -3
  399. vellum/client/types/node_input_compiled_image_value.py +23 -0
  400. vellum/client/types/node_input_compiled_json_value.py +2 -2
  401. vellum/client/types/node_input_compiled_number_value.py +2 -2
  402. vellum/client/types/node_input_compiled_search_results_value.py +3 -3
  403. vellum/client/types/node_input_compiled_secret_value.py +3 -3
  404. vellum/client/types/node_input_compiled_string_value.py +2 -2
  405. vellum/client/types/node_input_compiled_video_value.py +23 -0
  406. vellum/client/types/node_input_variable_compiled_value.py +14 -5
  407. vellum/client/types/node_output_compiled_array_value.py +12 -6
  408. vellum/client/types/node_output_compiled_chat_history_value.py +3 -3
  409. vellum/client/types/node_output_compiled_error_value.py +3 -3
  410. vellum/client/types/node_output_compiled_function_call_value.py +3 -3
  411. vellum/client/types/node_output_compiled_json_value.py +3 -3
  412. vellum/client/types/node_output_compiled_number_value.py +3 -3
  413. vellum/client/types/node_output_compiled_search_results_value.py +3 -3
  414. vellum/client/types/node_output_compiled_string_value.py +3 -3
  415. vellum/client/types/node_output_compiled_thinking_value.py +28 -0
  416. vellum/client/types/node_output_compiled_value.py +8 -5
  417. vellum/client/types/node_parent_context.py +14 -11
  418. vellum/client/types/normalized_log_probs.py +3 -3
  419. vellum/client/types/normalized_token_log_probs.py +2 -2
  420. vellum/client/types/number_input.py +3 -3
  421. vellum/client/types/number_vellum_value.py +2 -2
  422. vellum/client/types/number_vellum_value_request.py +2 -2
  423. vellum/client/types/open_ai_vectorizer_config.py +3 -3
  424. vellum/client/types/open_ai_vectorizer_config_request.py +3 -3
  425. vellum/client/types/open_ai_vectorizer_text_embedding_3_large.py +3 -3
  426. vellum/client/types/open_ai_vectorizer_text_embedding_3_large_request.py +3 -3
  427. vellum/client/types/open_ai_vectorizer_text_embedding_3_small.py +3 -3
  428. vellum/client/types/open_ai_vectorizer_text_embedding_3_small_request.py +3 -3
  429. vellum/client/types/open_ai_vectorizer_text_embedding_ada_002.py +3 -3
  430. vellum/client/types/open_ai_vectorizer_text_embedding_ada_002_request.py +3 -3
  431. vellum/client/types/organization_read.py +6 -3
  432. vellum/client/types/paginated_container_image_read_list.py +3 -3
  433. vellum/client/types/paginated_deployment_release_tag_read_list.py +3 -3
  434. vellum/client/types/paginated_document_index_read_list.py +3 -3
  435. vellum/client/types/paginated_folder_entity_list.py +3 -3
  436. vellum/client/types/paginated_slim_deployment_read_list.py +10 -4
  437. vellum/client/types/paginated_slim_document_list.py +3 -3
  438. vellum/client/types/paginated_slim_integration_auth_config_read_list.py +23 -0
  439. vellum/client/types/paginated_slim_integration_read_list.py +23 -0
  440. vellum/client/types/paginated_slim_tool_definition_list.py +23 -0
  441. vellum/client/types/paginated_slim_workflow_deployment_list.py +10 -4
  442. vellum/client/types/paginated_test_suite_run_execution_list.py +10 -4
  443. vellum/client/types/paginated_test_suite_test_case_list.py +10 -4
  444. vellum/client/types/paginated_workflow_deployment_release_list.py +30 -0
  445. vellum/client/types/paginated_workflow_release_tag_read_list.py +3 -3
  446. vellum/client/types/paginated_workflow_sandbox_example_list.py +3 -3
  447. vellum/client/types/parent_context.py +21 -11
  448. vellum/client/types/pdf_search_result_meta_source.py +2 -2
  449. vellum/client/types/pdf_search_result_meta_source_request.py +2 -2
  450. vellum/client/types/plain_text_prompt_block.py +4 -4
  451. vellum/client/types/price.py +3 -3
  452. vellum/client/types/private_vectorizer.py +23 -0
  453. vellum/client/types/private_vectorizer_request.py +23 -0
  454. vellum/client/types/processing_failure_reason_enum.py +3 -1
  455. vellum/client/types/prompt_block.py +9 -6
  456. vellum/client/types/prompt_deployment_expand_meta_request.py +2 -2
  457. vellum/client/types/prompt_deployment_input_request.py +16 -3
  458. vellum/client/types/prompt_deployment_parent_context.py +13 -10
  459. vellum/client/types/prompt_deployment_release.py +6 -6
  460. vellum/client/types/prompt_deployment_release_prompt_deployment.py +3 -2
  461. vellum/client/types/prompt_deployment_release_prompt_version.py +4 -4
  462. vellum/client/types/prompt_exec_config.py +15 -9
  463. vellum/client/types/prompt_execution_meta.py +3 -3
  464. vellum/client/types/prompt_node_execution_meta.py +3 -3
  465. vellum/client/types/prompt_node_result.py +3 -3
  466. vellum/client/types/prompt_node_result_data.py +3 -3
  467. vellum/client/types/prompt_output.py +7 -3
  468. vellum/client/types/prompt_parameters.py +2 -2
  469. vellum/client/types/prompt_push_response.py +2 -2
  470. vellum/client/types/prompt_request_audio_input.py +26 -0
  471. vellum/client/types/prompt_request_chat_history_input.py +3 -3
  472. vellum/client/types/prompt_request_document_input.py +26 -0
  473. vellum/client/types/prompt_request_image_input.py +26 -0
  474. vellum/client/types/prompt_request_input.py +16 -3
  475. vellum/client/types/prompt_request_json_input.py +3 -3
  476. vellum/client/types/prompt_request_string_input.py +3 -3
  477. vellum/client/types/prompt_request_video_input.py +26 -0
  478. vellum/client/types/prompt_settings.py +2 -2
  479. vellum/client/types/prompt_version_build_config_sandbox.py +2 -2
  480. vellum/client/types/raw_prompt_execution_overrides_request.py +2 -2
  481. vellum/client/types/reducto_chunker_config.py +2 -2
  482. vellum/client/types/reducto_chunker_config_request.py +2 -2
  483. vellum/client/types/reducto_chunking.py +3 -3
  484. vellum/client/types/reducto_chunking_request.py +3 -3
  485. vellum/client/types/rejected_ad_hoc_execute_prompt_event.py +4 -4
  486. vellum/client/types/rejected_execute_prompt_event.py +4 -4
  487. vellum/client/types/rejected_execute_prompt_response.py +3 -3
  488. vellum/client/types/rejected_execute_workflow_workflow_result_event.py +4 -4
  489. vellum/client/types/rejected_prompt_execution_meta.py +3 -3
  490. vellum/client/types/rejected_workflow_node_result_event.py +12 -6
  491. vellum/client/types/release_created_by.py +2 -2
  492. vellum/client/types/release_environment.py +2 -2
  493. vellum/client/types/release_release_tag.py +3 -3
  494. vellum/client/types/release_review_reviewer.py +2 -2
  495. vellum/client/types/release_tag_release.py +2 -2
  496. vellum/client/types/replace_test_suite_test_case_request.py +9 -3
  497. vellum/client/types/rich_text_child_block.py +2 -1
  498. vellum/client/types/rich_text_prompt_block.py +4 -4
  499. vellum/client/types/runner_config_request.py +24 -0
  500. vellum/client/types/sandbox_scenario.py +3 -3
  501. vellum/client/types/scenario_input.py +14 -3
  502. vellum/client/types/scenario_input_audio_variable_value.py +22 -0
  503. vellum/client/types/scenario_input_chat_history_variable_value.py +3 -3
  504. vellum/client/types/scenario_input_document_variable_value.py +22 -0
  505. vellum/client/types/scenario_input_image_variable_value.py +22 -0
  506. vellum/client/types/scenario_input_json_variable_value.py +2 -2
  507. vellum/client/types/scenario_input_string_variable_value.py +2 -2
  508. vellum/client/types/scenario_input_video_variable_value.py +22 -0
  509. vellum/client/types/scheduled_trigger_context.py +39 -0
  510. vellum/client/types/search_filters_request.py +11 -5
  511. vellum/client/types/search_node_result.py +3 -3
  512. vellum/client/types/search_node_result_data.py +3 -3
  513. vellum/client/types/search_request_options_request.py +13 -7
  514. vellum/client/types/search_response.py +3 -3
  515. vellum/client/types/search_result.py +3 -3
  516. vellum/client/types/search_result_document.py +2 -2
  517. vellum/client/types/search_result_document_request.py +2 -2
  518. vellum/client/types/search_result_merging_request.py +2 -2
  519. vellum/client/types/search_result_meta.py +3 -3
  520. vellum/client/types/search_result_meta_request.py +3 -3
  521. vellum/client/types/search_result_request.py +3 -3
  522. vellum/client/types/search_results_input.py +3 -3
  523. vellum/client/types/search_results_vellum_value.py +3 -3
  524. vellum/client/types/search_results_vellum_value_request.py +3 -3
  525. vellum/client/types/search_weights_request.py +2 -2
  526. vellum/client/types/secret_type_enum.py +3 -1
  527. vellum/client/types/sentence_chunker_config.py +2 -2
  528. vellum/client/types/sentence_chunker_config_request.py +2 -2
  529. vellum/client/types/sentence_chunking.py +3 -3
  530. vellum/client/types/sentence_chunking_request.py +3 -3
  531. vellum/client/types/severity_enum.py +5 -0
  532. vellum/client/types/slim_composio_tool_definition.py +25 -0
  533. vellum/client/types/slim_deployment_read.py +15 -9
  534. vellum/client/types/slim_document.py +6 -5
  535. vellum/client/types/slim_document_document_to_document_index.py +6 -4
  536. vellum/client/types/slim_integration_auth_config_read.py +36 -0
  537. vellum/client/types/slim_integration_read.py +25 -0
  538. vellum/client/types/slim_release_review.py +4 -4
  539. vellum/client/types/slim_workflow_deployment.py +16 -10
  540. vellum/client/types/slim_workflow_execution_read.py +24 -15
  541. vellum/client/types/span_link.py +15 -12
  542. vellum/client/types/span_link_type_enum.py +1 -1
  543. vellum/client/types/streaming_ad_hoc_execute_prompt_event.py +4 -4
  544. vellum/client/types/streaming_execute_prompt_event.py +3 -3
  545. vellum/client/types/streaming_prompt_execution_meta.py +2 -2
  546. vellum/client/types/streaming_workflow_node_result_event.py +12 -6
  547. vellum/client/types/string_chat_message_content.py +2 -2
  548. vellum/client/types/string_chat_message_content_request.py +2 -2
  549. vellum/client/types/string_input.py +3 -3
  550. vellum/client/types/string_input_request.py +3 -3
  551. vellum/client/types/string_vellum_value.py +2 -2
  552. vellum/client/types/string_vellum_value_request.py +2 -2
  553. vellum/client/types/submit_completion_actual_request.py +3 -3
  554. vellum/client/types/submit_workflow_execution_actual_request.py +3 -2
  555. vellum/client/types/subworkflow_node_result.py +3 -3
  556. vellum/client/types/subworkflow_node_result_data.py +2 -2
  557. vellum/client/types/templating_node_array_result.py +11 -5
  558. vellum/client/types/templating_node_chat_history_result.py +3 -3
  559. vellum/client/types/templating_node_error_result.py +3 -3
  560. vellum/client/types/templating_node_function_call_result.py +3 -3
  561. vellum/client/types/templating_node_json_result.py +2 -2
  562. vellum/client/types/templating_node_number_result.py +2 -2
  563. vellum/client/types/templating_node_result.py +10 -4
  564. vellum/client/types/templating_node_result_data.py +10 -4
  565. vellum/client/types/templating_node_result_output.py +6 -5
  566. vellum/client/types/templating_node_search_results_result.py +3 -3
  567. vellum/client/types/templating_node_string_result.py +2 -2
  568. vellum/client/types/terminal_node_array_result.py +11 -5
  569. vellum/client/types/terminal_node_chat_history_result.py +2 -2
  570. vellum/client/types/terminal_node_error_result.py +2 -2
  571. vellum/client/types/terminal_node_function_call_result.py +2 -2
  572. vellum/client/types/terminal_node_json_result.py +2 -2
  573. vellum/client/types/terminal_node_number_result.py +2 -2
  574. vellum/client/types/terminal_node_result.py +10 -4
  575. vellum/client/types/terminal_node_result_data.py +10 -4
  576. vellum/client/types/terminal_node_result_output.py +6 -5
  577. vellum/client/types/terminal_node_search_results_result.py +2 -2
  578. vellum/client/types/terminal_node_string_result.py +2 -2
  579. vellum/client/types/test_case_array_variable_value.py +11 -5
  580. vellum/client/types/test_case_audio_variable_value.py +27 -0
  581. vellum/client/types/test_case_chat_history_variable_value.py +3 -3
  582. vellum/client/types/test_case_document_variable_value.py +27 -0
  583. vellum/client/types/test_case_error_variable_value.py +3 -3
  584. vellum/client/types/test_case_function_call_variable_value.py +3 -3
  585. vellum/client/types/test_case_image_variable_value.py +27 -0
  586. vellum/client/types/test_case_json_variable_value.py +2 -2
  587. vellum/client/types/test_case_number_variable_value.py +2 -2
  588. vellum/client/types/test_case_search_results_variable_value.py +3 -3
  589. vellum/client/types/test_case_string_variable_value.py +2 -2
  590. vellum/client/types/test_case_variable_value.py +14 -5
  591. vellum/client/types/test_case_video_variable_value.py +27 -0
  592. vellum/client/types/test_suite_run_deployment_release_tag_exec_config.py +3 -3
  593. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data.py +3 -3
  594. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data_request.py +3 -3
  595. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_request.py +3 -3
  596. vellum/client/types/test_suite_run_exec_config.py +2 -1
  597. vellum/client/types/test_suite_run_exec_config_request.py +2 -1
  598. vellum/client/types/test_suite_run_execution.py +11 -5
  599. vellum/client/types/test_suite_run_execution_array_output.py +11 -5
  600. vellum/client/types/test_suite_run_execution_chat_history_output.py +3 -3
  601. vellum/client/types/test_suite_run_execution_error_output.py +3 -3
  602. vellum/client/types/test_suite_run_execution_function_call_output.py +3 -3
  603. vellum/client/types/test_suite_run_execution_json_output.py +2 -2
  604. vellum/client/types/test_suite_run_execution_metric_definition.py +2 -2
  605. vellum/client/types/test_suite_run_execution_metric_result.py +11 -5
  606. vellum/client/types/test_suite_run_execution_number_output.py +2 -2
  607. vellum/client/types/test_suite_run_execution_output.py +6 -5
  608. vellum/client/types/test_suite_run_execution_search_results_output.py +3 -3
  609. vellum/client/types/test_suite_run_execution_string_output.py +2 -2
  610. vellum/client/types/test_suite_run_external_exec_config.py +10 -4
  611. vellum/client/types/test_suite_run_external_exec_config_data.py +10 -4
  612. vellum/client/types/test_suite_run_external_exec_config_data_request.py +10 -4
  613. vellum/client/types/test_suite_run_external_exec_config_request.py +10 -4
  614. vellum/client/types/test_suite_run_metric_array_output.py +11 -5
  615. vellum/client/types/test_suite_run_metric_error_output.py +3 -3
  616. vellum/client/types/test_suite_run_metric_json_output.py +2 -2
  617. vellum/client/types/test_suite_run_metric_number_output.py +2 -2
  618. vellum/client/types/test_suite_run_metric_output.py +5 -4
  619. vellum/client/types/test_suite_run_metric_string_output.py +2 -2
  620. vellum/client/types/test_suite_run_progress.py +2 -2
  621. vellum/client/types/test_suite_run_prompt_sandbox_exec_config_data_request.py +3 -3
  622. vellum/client/types/test_suite_run_prompt_sandbox_exec_config_request.py +3 -3
  623. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config.py +3 -3
  624. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data.py +3 -3
  625. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data_request.py +3 -3
  626. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_request.py +3 -3
  627. vellum/client/types/test_suite_run_read.py +12 -6
  628. vellum/client/types/test_suite_run_test_suite.py +2 -2
  629. vellum/client/types/test_suite_run_workflow_release_tag_exec_config.py +3 -3
  630. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_data.py +3 -3
  631. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_data_request.py +3 -3
  632. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_request.py +3 -3
  633. vellum/client/types/test_suite_run_workflow_sandbox_exec_config_data_request.py +3 -3
  634. vellum/client/types/test_suite_run_workflow_sandbox_exec_config_request.py +3 -3
  635. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config.py +3 -3
  636. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data.py +3 -3
  637. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data_request.py +3 -3
  638. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_request.py +3 -3
  639. vellum/client/types/test_suite_test_case.py +10 -4
  640. vellum/client/types/test_suite_test_case_bulk_operation_request.py +2 -1
  641. vellum/client/types/test_suite_test_case_bulk_result.py +2 -1
  642. vellum/client/types/test_suite_test_case_create_bulk_operation_request.py +10 -4
  643. vellum/client/types/test_suite_test_case_created_bulk_result.py +3 -3
  644. vellum/client/types/test_suite_test_case_created_bulk_result_data.py +2 -2
  645. vellum/client/types/test_suite_test_case_delete_bulk_operation_data_request.py +2 -2
  646. vellum/client/types/test_suite_test_case_delete_bulk_operation_request.py +3 -3
  647. vellum/client/types/test_suite_test_case_deleted_bulk_result.py +3 -3
  648. vellum/client/types/test_suite_test_case_deleted_bulk_result_data.py +2 -2
  649. vellum/client/types/test_suite_test_case_rejected_bulk_result.py +2 -2
  650. vellum/client/types/test_suite_test_case_replace_bulk_operation_request.py +10 -4
  651. vellum/client/types/test_suite_test_case_replaced_bulk_result.py +3 -3
  652. vellum/client/types/test_suite_test_case_replaced_bulk_result_data.py +2 -2
  653. vellum/client/types/test_suite_test_case_upsert_bulk_operation_request.py +10 -4
  654. vellum/client/types/thinking_vellum_value.py +25 -0
  655. vellum/client/types/thinking_vellum_value_request.py +25 -0
  656. vellum/client/types/token_overlapping_window_chunker_config.py +2 -2
  657. vellum/client/types/token_overlapping_window_chunker_config_request.py +2 -2
  658. vellum/client/types/token_overlapping_window_chunking.py +3 -3
  659. vellum/client/types/token_overlapping_window_chunking_request.py +3 -3
  660. vellum/client/types/type_checker_enum.py +5 -0
  661. vellum/client/types/update_active_workspace_response.py +32 -0
  662. vellum/client/types/upload_document_response.py +3 -3
  663. vellum/client/types/uploaded_file_read.py +27 -0
  664. vellum/client/types/upsert_test_suite_test_case_request.py +9 -3
  665. vellum/client/types/variable_prompt_block.py +11 -4
  666. vellum/client/types/vellum_audio.py +10 -5
  667. vellum/client/types/vellum_audio_request.py +8 -4
  668. vellum/client/types/vellum_code_resource_definition.py +7 -2
  669. vellum/client/types/vellum_document.py +13 -4
  670. vellum/client/types/vellum_document_request.py +11 -3
  671. vellum/client/types/vellum_error.py +5 -4
  672. vellum/client/types/vellum_error_code_enum.py +6 -0
  673. vellum/client/types/vellum_error_request.py +5 -4
  674. vellum/client/types/vellum_image.py +13 -4
  675. vellum/client/types/vellum_image_request.py +11 -3
  676. vellum/client/types/vellum_node_execution_event.py +6 -3
  677. vellum/client/types/vellum_sdk_error.py +4 -3
  678. vellum/client/types/vellum_sdk_error_code_enum.py +5 -0
  679. vellum/client/types/vellum_secret.py +2 -2
  680. vellum/client/types/vellum_span.py +2 -1
  681. vellum/client/types/vellum_value.py +13 -8
  682. vellum/client/types/vellum_value_logical_condition_group_request.py +6 -6
  683. vellum/client/types/vellum_value_logical_condition_request.py +13 -7
  684. vellum/client/types/vellum_value_logical_expression_request.py +2 -1
  685. vellum/client/types/vellum_value_request.py +13 -8
  686. vellum/client/types/vellum_variable.py +18 -7
  687. vellum/client/types/vellum_variable_extensions.py +4 -2
  688. vellum/client/types/vellum_variable_type.py +4 -1
  689. vellum/client/types/vellum_video.py +29 -0
  690. vellum/client/types/vellum_video_request.py +28 -0
  691. vellum/client/types/vellum_workflow_execution_event.py +4 -3
  692. vellum/client/types/video_chat_message_content.py +25 -0
  693. vellum/client/types/video_chat_message_content_request.py +25 -0
  694. vellum/client/types/video_input.py +30 -0
  695. vellum/client/types/video_input_request.py +30 -0
  696. vellum/client/types/video_prompt_block.py +29 -0
  697. vellum/client/types/video_vellum_value.py +25 -0
  698. vellum/client/types/video_vellum_value_request.py +25 -0
  699. vellum/client/types/workflow_deployment_display_data.py +27 -0
  700. vellum/client/types/workflow_deployment_event_executions_response.py +20 -11
  701. vellum/client/types/workflow_deployment_history_item.py +10 -4
  702. vellum/client/types/workflow_deployment_parent_context.py +13 -10
  703. vellum/client/types/workflow_deployment_read.py +22 -10
  704. vellum/client/types/workflow_deployment_release.py +13 -7
  705. vellum/client/types/workflow_deployment_release_workflow_deployment.py +3 -2
  706. vellum/client/types/workflow_deployment_release_workflow_version.py +10 -4
  707. vellum/client/types/workflow_display_icon.py +24 -0
  708. vellum/client/types/workflow_error.py +1 -0
  709. vellum/client/types/workflow_event.py +39 -0
  710. vellum/client/types/workflow_event_error.py +5 -3
  711. vellum/client/types/workflow_event_execution_read.py +26 -16
  712. vellum/client/types/workflow_execution_actual.py +11 -5
  713. vellum/client/types/workflow_execution_actual_chat_history_request.py +2 -2
  714. vellum/client/types/workflow_execution_actual_json_request.py +2 -2
  715. vellum/client/types/workflow_execution_actual_string_request.py +2 -2
  716. vellum/client/types/workflow_execution_detail.py +51 -0
  717. vellum/client/types/workflow_execution_event_error_code.py +5 -0
  718. vellum/client/types/workflow_execution_fulfilled_body.py +6 -3
  719. vellum/client/types/workflow_execution_fulfilled_event.py +24 -15
  720. vellum/client/types/workflow_execution_initiated_body.py +3 -3
  721. vellum/client/types/workflow_execution_initiated_event.py +24 -15
  722. vellum/client/types/workflow_execution_node_result_event.py +10 -4
  723. vellum/client/types/workflow_execution_paused_body.py +4 -4
  724. vellum/client/types/workflow_execution_paused_event.py +24 -15
  725. vellum/client/types/workflow_execution_rejected_body.py +5 -4
  726. vellum/client/types/workflow_execution_rejected_event.py +24 -15
  727. vellum/client/types/workflow_execution_resumed_body.py +3 -3
  728. vellum/client/types/workflow_execution_resumed_event.py +24 -15
  729. vellum/client/types/workflow_execution_snapshotted_body.py +4 -3
  730. vellum/client/types/workflow_execution_snapshotted_event.py +24 -15
  731. vellum/client/types/workflow_execution_span.py +22 -11
  732. vellum/client/types/workflow_execution_span_attributes.py +3 -2
  733. vellum/client/types/workflow_execution_streaming_body.py +4 -4
  734. vellum/client/types/workflow_execution_streaming_event.py +24 -15
  735. vellum/client/types/workflow_execution_usage_calculation_error.py +3 -3
  736. vellum/client/types/workflow_execution_usage_calculation_fulfilled_body.py +22 -0
  737. vellum/client/types/workflow_execution_usage_result.py +3 -3
  738. vellum/client/types/workflow_execution_view_online_eval_metric_result.py +10 -4
  739. vellum/client/types/workflow_execution_workflow_result_event.py +10 -4
  740. vellum/client/types/workflow_expand_meta_request.py +2 -2
  741. vellum/client/types/workflow_initialization_error.py +2 -2
  742. vellum/client/types/workflow_input.py +31 -0
  743. vellum/client/types/workflow_node_result_data.py +8 -7
  744. vellum/client/types/workflow_node_result_event.py +3 -2
  745. vellum/client/types/workflow_output.py +12 -5
  746. vellum/client/types/workflow_output_array.py +12 -6
  747. vellum/client/types/workflow_output_audio.py +31 -0
  748. vellum/client/types/workflow_output_chat_history.py +3 -3
  749. vellum/client/types/workflow_output_document.py +31 -0
  750. vellum/client/types/workflow_output_error.py +3 -3
  751. vellum/client/types/workflow_output_function_call.py +3 -3
  752. vellum/client/types/workflow_output_image.py +3 -3
  753. vellum/client/types/workflow_output_json.py +3 -3
  754. vellum/client/types/workflow_output_number.py +3 -3
  755. vellum/client/types/workflow_output_search_results.py +3 -3
  756. vellum/client/types/workflow_output_string.py +3 -3
  757. vellum/client/types/workflow_output_video.py +31 -0
  758. vellum/client/types/workflow_parent_context.py +14 -11
  759. vellum/client/types/workflow_push_deployment_config_request.py +3 -2
  760. vellum/client/types/workflow_push_response.py +2 -2
  761. vellum/client/types/workflow_release_tag_read.py +4 -4
  762. vellum/client/types/workflow_release_tag_workflow_deployment_history_item.py +2 -2
  763. vellum/client/types/workflow_request_audio_input_request.py +30 -0
  764. vellum/client/types/workflow_request_chat_history_input_request.py +3 -3
  765. vellum/client/types/workflow_request_document_input_request.py +30 -0
  766. vellum/client/types/workflow_request_image_input_request.py +30 -0
  767. vellum/client/types/workflow_request_input_request.py +11 -2
  768. vellum/client/types/workflow_request_json_input_request.py +3 -3
  769. vellum/client/types/workflow_request_number_input_request.py +3 -3
  770. vellum/client/types/workflow_request_string_input_request.py +3 -3
  771. vellum/client/types/workflow_request_video_input_request.py +30 -0
  772. vellum/client/types/workflow_resolved_state.py +31 -0
  773. vellum/client/types/workflow_result_event.py +14 -8
  774. vellum/client/types/workflow_result_event_output_data.py +7 -6
  775. vellum/client/types/workflow_result_event_output_data_array.py +13 -7
  776. vellum/client/types/workflow_result_event_output_data_chat_history.py +4 -4
  777. vellum/client/types/workflow_result_event_output_data_error.py +4 -4
  778. vellum/client/types/workflow_result_event_output_data_function_call.py +4 -4
  779. vellum/client/types/workflow_result_event_output_data_json.py +4 -4
  780. vellum/client/types/workflow_result_event_output_data_number.py +4 -4
  781. vellum/client/types/workflow_result_event_output_data_search_results.py +4 -4
  782. vellum/client/types/workflow_result_event_output_data_string.py +4 -4
  783. vellum/client/types/workflow_result_event_state.py +7 -0
  784. vellum/client/types/workflow_sandbox_display_data.py +27 -0
  785. vellum/client/types/workflow_sandbox_example.py +4 -2
  786. vellum/client/types/workflow_sandbox_execute_node_response.py +8 -0
  787. vellum/client/types/workflow_sandbox_parent_context.py +13 -10
  788. vellum/client/types/workflow_stream_event.py +2 -1
  789. vellum/client/types/workspace_display_config.py +19 -0
  790. vellum/client/types/workspace_read.py +5 -3
  791. vellum/client/types/workspace_secret_read.py +3 -3
  792. vellum/client/utils.py +24 -0
  793. vellum/core/force_multipart.py +3 -0
  794. vellum/core/http_response.py +3 -0
  795. vellum/errors/misdirected_request_error.py +3 -0
  796. vellum/errors/too_many_requests_error.py +3 -0
  797. vellum/errors/unauthorized_error.py +3 -0
  798. vellum/evaluations/resources.py +5 -5
  799. vellum/plugins/pydantic.py +14 -3
  800. vellum/plugins/tests/__init__.py +0 -0
  801. vellum/plugins/tests/test_pydantic.py +30 -0
  802. vellum/plugins/vellum_mypy.py +68 -25
  803. vellum/prompts/__init__.py +3 -0
  804. vellum/prompts/blocks/__init__.py +3 -0
  805. vellum/prompts/blocks/compilation.py +29 -11
  806. vellum/prompts/blocks/helpers.py +31 -0
  807. vellum/prompts/blocks/tests/test_compilation.py +64 -0
  808. vellum/raw_client.py +3 -0
  809. vellum/resources/ad_hoc/raw_client.py +3 -0
  810. vellum/resources/container_images/raw_client.py +3 -0
  811. vellum/resources/deployments/raw_client.py +3 -0
  812. vellum/resources/document_indexes/raw_client.py +3 -0
  813. vellum/resources/documents/raw_client.py +3 -0
  814. vellum/resources/{release_reviews → environments}/__init__.py +1 -1
  815. vellum/resources/{release_reviews → environments}/client.py +1 -1
  816. vellum/resources/environments/raw_client.py +3 -0
  817. vellum/resources/events/__init__.py +3 -0
  818. vellum/resources/events/client.py +3 -0
  819. vellum/resources/events/raw_client.py +3 -0
  820. vellum/resources/folder_entities/raw_client.py +3 -0
  821. vellum/resources/integration_auth_configs/__init__.py +3 -0
  822. vellum/resources/integration_auth_configs/client.py +3 -0
  823. vellum/resources/integration_auth_configs/raw_client.py +3 -0
  824. vellum/resources/integration_providers/__init__.py +3 -0
  825. vellum/resources/integration_providers/client.py +3 -0
  826. vellum/resources/integration_providers/raw_client.py +3 -0
  827. vellum/resources/integrations/__init__.py +3 -0
  828. vellum/resources/integrations/client.py +3 -0
  829. vellum/resources/integrations/raw_client.py +3 -0
  830. vellum/resources/metric_definitions/raw_client.py +3 -0
  831. vellum/resources/ml_models/raw_client.py +3 -0
  832. vellum/resources/organizations/raw_client.py +3 -0
  833. vellum/resources/prompts/raw_client.py +3 -0
  834. vellum/resources/sandboxes/raw_client.py +3 -0
  835. vellum/resources/test_suite_runs/raw_client.py +3 -0
  836. vellum/resources/test_suites/raw_client.py +3 -0
  837. vellum/resources/uploaded_files/__init__.py +3 -0
  838. vellum/resources/uploaded_files/client.py +3 -0
  839. vellum/resources/uploaded_files/raw_client.py +3 -0
  840. vellum/resources/workflow_deployments/raw_client.py +3 -0
  841. vellum/resources/workflow_executions/__init__.py +3 -0
  842. vellum/resources/workflow_executions/client.py +3 -0
  843. vellum/resources/workflow_executions/raw_client.py +3 -0
  844. vellum/resources/workflow_sandboxes/raw_client.py +3 -0
  845. vellum/resources/workflows/raw_client.py +3 -0
  846. vellum/resources/workspace_secrets/raw_client.py +3 -0
  847. vellum/resources/workspaces/raw_client.py +3 -0
  848. vellum/types/api_actor_type_enum.py +3 -0
  849. vellum/types/audio_input.py +3 -0
  850. vellum/types/audio_input_request.py +3 -0
  851. vellum/types/auth_type_enum.py +3 -0
  852. vellum/types/build_status_enum.py +3 -0
  853. vellum/types/check_workflow_execution_status_error.py +3 -0
  854. vellum/types/check_workflow_execution_status_response.py +3 -0
  855. vellum/types/code_execution_package_request.py +3 -0
  856. vellum/types/components_schemas_composio_execute_tool_request.py +3 -0
  857. vellum/types/components_schemas_composio_execute_tool_response.py +3 -0
  858. vellum/types/components_schemas_composio_integration_exec_config.py +3 -0
  859. vellum/types/components_schemas_composio_tool_definition.py +3 -0
  860. vellum/types/components_schemas_slim_composio_tool_definition.py +3 -0
  861. vellum/types/composio_execute_tool_request.py +3 -0
  862. vellum/types/composio_execute_tool_response.py +3 -0
  863. vellum/types/composio_integration_exec_config.py +3 -0
  864. vellum/types/composio_tool_definition.py +3 -0
  865. vellum/types/container_image_build_config.py +3 -0
  866. vellum/types/create_workflow_event_request.py +3 -0
  867. vellum/types/dataset_row_push_request.py +3 -0
  868. vellum/types/delimiter_chunker_config.py +3 -0
  869. vellum/types/delimiter_chunker_config_request.py +3 -0
  870. vellum/types/delimiter_chunking.py +3 -0
  871. vellum/types/delimiter_chunking_request.py +3 -0
  872. vellum/types/deprecated_prompt_request_input.py +3 -0
  873. vellum/types/document_input.py +3 -0
  874. vellum/types/document_input_request.py +3 -0
  875. vellum/types/environment_display_config.py +3 -0
  876. vellum/types/environment_read.py +3 -0
  877. vellum/types/error_detail_response.py +3 -0
  878. vellum/types/event_create_response.py +3 -0
  879. vellum/types/execute_workflow_async_response.py +3 -0
  880. vellum/types/execution_audio_vellum_value.py +3 -0
  881. vellum/types/execution_document_vellum_value.py +3 -0
  882. vellum/types/execution_image_vellum_value.py +3 -0
  883. vellum/types/execution_thinking_vellum_value.py +3 -0
  884. vellum/types/execution_video_vellum_value.py +3 -0
  885. vellum/types/external_parent_context.py +3 -0
  886. vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +3 -0
  887. vellum/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +3 -0
  888. vellum/types/folder_entity_dataset.py +3 -0
  889. vellum/types/folder_entity_dataset_data.py +3 -0
  890. vellum/types/google_vertex_ai_vectorizer_gemini_embedding_001.py +3 -0
  891. vellum/types/google_vertex_ai_vectorizer_gemini_embedding_001_request.py +3 -0
  892. vellum/types/image_input.py +3 -0
  893. vellum/types/image_input_request.py +3 -0
  894. vellum/types/integration.py +3 -0
  895. vellum/types/integration_auth_config_integration.py +3 -0
  896. vellum/types/integration_auth_config_integration_credential.py +3 -0
  897. vellum/types/integration_credential_access_type.py +3 -0
  898. vellum/types/integration_name.py +3 -0
  899. vellum/types/integration_provider.py +3 -0
  900. vellum/types/integration_read.py +3 -0
  901. vellum/types/integration_trigger_context.py +3 -0
  902. vellum/types/named_scenario_input_audio_variable_value_request.py +3 -0
  903. vellum/types/named_scenario_input_document_variable_value_request.py +3 -0
  904. vellum/types/named_scenario_input_image_variable_value_request.py +3 -0
  905. vellum/types/named_scenario_input_video_variable_value_request.py +3 -0
  906. vellum/types/named_test_case_audio_variable_value.py +3 -0
  907. vellum/types/named_test_case_audio_variable_value_request.py +3 -0
  908. vellum/types/named_test_case_document_variable_value.py +3 -0
  909. vellum/types/named_test_case_document_variable_value_request.py +3 -0
  910. vellum/types/named_test_case_image_variable_value.py +3 -0
  911. vellum/types/named_test_case_image_variable_value_request.py +3 -0
  912. vellum/types/named_test_case_video_variable_value.py +3 -0
  913. vellum/types/named_test_case_video_variable_value_request.py +3 -0
  914. vellum/types/node_execution_log_body.py +3 -0
  915. vellum/types/node_execution_log_event.py +3 -0
  916. vellum/types/node_input_compiled_audio_value.py +3 -0
  917. vellum/types/node_input_compiled_document_value.py +3 -0
  918. vellum/types/node_input_compiled_image_value.py +3 -0
  919. vellum/types/node_input_compiled_video_value.py +3 -0
  920. vellum/types/node_output_compiled_thinking_value.py +3 -0
  921. vellum/types/paginated_slim_integration_auth_config_read_list.py +3 -0
  922. vellum/types/paginated_slim_integration_read_list.py +3 -0
  923. vellum/types/paginated_slim_tool_definition_list.py +3 -0
  924. vellum/types/paginated_workflow_deployment_release_list.py +3 -0
  925. vellum/types/private_vectorizer.py +3 -0
  926. vellum/types/private_vectorizer_request.py +3 -0
  927. vellum/types/prompt_request_audio_input.py +3 -0
  928. vellum/types/prompt_request_document_input.py +3 -0
  929. vellum/types/prompt_request_image_input.py +3 -0
  930. vellum/types/prompt_request_video_input.py +3 -0
  931. vellum/types/runner_config_request.py +3 -0
  932. vellum/types/scenario_input_audio_variable_value.py +3 -0
  933. vellum/types/scenario_input_document_variable_value.py +3 -0
  934. vellum/types/scenario_input_image_variable_value.py +3 -0
  935. vellum/types/scenario_input_video_variable_value.py +3 -0
  936. vellum/types/scheduled_trigger_context.py +3 -0
  937. vellum/types/severity_enum.py +3 -0
  938. vellum/types/slim_composio_tool_definition.py +3 -0
  939. vellum/types/slim_integration_auth_config_read.py +3 -0
  940. vellum/types/slim_integration_read.py +3 -0
  941. vellum/types/test_case_audio_variable_value.py +3 -0
  942. vellum/types/test_case_document_variable_value.py +3 -0
  943. vellum/types/test_case_image_variable_value.py +3 -0
  944. vellum/types/test_case_video_variable_value.py +3 -0
  945. vellum/types/thinking_vellum_value.py +3 -0
  946. vellum/types/thinking_vellum_value_request.py +3 -0
  947. vellum/types/type_checker_enum.py +3 -0
  948. vellum/types/update_active_workspace_response.py +3 -0
  949. vellum/types/uploaded_file_read.py +3 -0
  950. vellum/types/vellum_video.py +3 -0
  951. vellum/types/vellum_video_request.py +3 -0
  952. vellum/types/video_chat_message_content.py +3 -0
  953. vellum/types/video_chat_message_content_request.py +3 -0
  954. vellum/types/video_input.py +3 -0
  955. vellum/types/video_input_request.py +3 -0
  956. vellum/types/video_prompt_block.py +3 -0
  957. vellum/types/video_vellum_value.py +3 -0
  958. vellum/types/video_vellum_value_request.py +3 -0
  959. vellum/types/workflow_deployment_display_data.py +3 -0
  960. vellum/types/workflow_display_icon.py +3 -0
  961. vellum/types/workflow_event.py +3 -0
  962. vellum/types/workflow_execution_detail.py +3 -0
  963. vellum/types/workflow_execution_usage_calculation_fulfilled_body.py +3 -0
  964. vellum/types/workflow_input.py +3 -0
  965. vellum/types/workflow_output_audio.py +3 -0
  966. vellum/types/workflow_output_document.py +3 -0
  967. vellum/types/workflow_output_video.py +3 -0
  968. vellum/types/workflow_request_audio_input_request.py +3 -0
  969. vellum/types/workflow_request_document_input_request.py +3 -0
  970. vellum/types/workflow_request_image_input_request.py +3 -0
  971. vellum/types/workflow_request_video_input_request.py +3 -0
  972. vellum/types/workflow_resolved_state.py +3 -0
  973. vellum/types/workflow_result_event_state.py +3 -0
  974. vellum/types/workflow_sandbox_display_data.py +3 -0
  975. vellum/types/workflow_sandbox_execute_node_response.py +3 -0
  976. vellum/types/workspace_display_config.py +3 -0
  977. vellum/utils/files/__init__.py +18 -0
  978. vellum/utils/files/constants.py +47 -0
  979. vellum/utils/files/exceptions.py +25 -0
  980. vellum/utils/files/extensions.py +59 -0
  981. vellum/utils/files/mixin.py +135 -0
  982. vellum/utils/files/read.py +41 -0
  983. vellum/utils/files/stream.py +135 -0
  984. vellum/utils/files/tests/__init__.py +0 -0
  985. vellum/utils/files/tests/test_extensions.py +54 -0
  986. vellum/utils/files/tests/test_mixin.py +267 -0
  987. vellum/utils/files/tests/test_read.py +204 -0
  988. vellum/utils/files/tests/test_stream.py +199 -0
  989. vellum/utils/files/tests/test_upload.py +309 -0
  990. vellum/utils/files/tests/test_urls.py +252 -0
  991. vellum/utils/files/types.py +8 -0
  992. vellum/utils/files/upload.py +151 -0
  993. vellum/utils/files/urls.py +71 -0
  994. vellum/utils/json_encoder.py +95 -0
  995. vellum/utils/templating/custom_filters.py +4 -4
  996. vellum/utils/templating/render.py +4 -4
  997. vellum/utils/tests/__init__.py +0 -0
  998. vellum/utils/tests/test_json_encoder.py +92 -0
  999. vellum/utils/tests/test_vellum_client.py +95 -0
  1000. vellum/utils/uuid.py +19 -2
  1001. vellum/utils/vellum_client.py +47 -0
  1002. vellum/workflows/__init__.py +84 -0
  1003. vellum/workflows/constants.py +7 -0
  1004. vellum/workflows/context.py +27 -9
  1005. vellum/workflows/descriptors/base.py +169 -2
  1006. vellum/workflows/descriptors/exceptions.py +18 -1
  1007. vellum/workflows/descriptors/tests/test_utils.py +66 -0
  1008. vellum/workflows/descriptors/utils.py +27 -3
  1009. vellum/workflows/edges/__init__.py +2 -0
  1010. vellum/workflows/edges/trigger_edge.py +67 -0
  1011. vellum/workflows/emitters/__init__.py +2 -0
  1012. vellum/workflows/emitters/base.py +25 -0
  1013. vellum/workflows/emitters/vellum_emitter.py +150 -0
  1014. vellum/workflows/environment/__init__.py +2 -1
  1015. vellum/workflows/environment/environment.py +10 -3
  1016. vellum/workflows/errors/tests/__init__.py +0 -0
  1017. vellum/workflows/errors/tests/test_types.py +52 -0
  1018. vellum/workflows/errors/types.py +19 -1
  1019. vellum/workflows/events/__init__.py +2 -0
  1020. vellum/workflows/events/context.py +90 -0
  1021. vellum/workflows/events/exception_handling.py +58 -0
  1022. vellum/workflows/events/node.py +51 -11
  1023. vellum/workflows/events/relational_threads.py +41 -0
  1024. vellum/workflows/events/stream.py +28 -0
  1025. vellum/workflows/events/tests/test_basic_workflow.py +50 -0
  1026. vellum/workflows/events/tests/test_event.py +268 -20
  1027. vellum/workflows/events/types.py +34 -5
  1028. vellum/workflows/events/workflow.py +138 -9
  1029. vellum/workflows/exceptions.py +46 -7
  1030. vellum/workflows/executable.py +9 -0
  1031. vellum/workflows/expressions/accessor.py +65 -11
  1032. vellum/workflows/expressions/add.py +44 -0
  1033. vellum/workflows/expressions/comparison_utils.py +38 -0
  1034. vellum/workflows/expressions/concat.py +35 -0
  1035. vellum/workflows/expressions/contains.py +7 -0
  1036. vellum/workflows/expressions/greater_than.py +8 -1
  1037. vellum/workflows/expressions/greater_than_or_equal_to.py +8 -1
  1038. vellum/workflows/expressions/is_error.py +23 -0
  1039. vellum/workflows/expressions/length.py +46 -0
  1040. vellum/workflows/expressions/less_than.py +8 -1
  1041. vellum/workflows/expressions/less_than_or_equal_to.py +8 -1
  1042. vellum/workflows/expressions/minus.py +41 -0
  1043. vellum/workflows/expressions/tests/test_accessor.py +248 -0
  1044. vellum/workflows/expressions/tests/test_add.py +96 -0
  1045. vellum/workflows/expressions/tests/test_concat.py +108 -0
  1046. vellum/workflows/expressions/tests/test_contains.py +175 -0
  1047. vellum/workflows/expressions/tests/test_expressions.py +145 -32
  1048. vellum/workflows/expressions/tests/test_length.py +38 -0
  1049. vellum/workflows/expressions/tests/test_minus.py +109 -0
  1050. vellum/workflows/graph/graph.py +281 -13
  1051. vellum/workflows/graph/tests/test_graph.py +528 -1
  1052. vellum/workflows/inputs/__init__.py +2 -0
  1053. vellum/workflows/inputs/base.py +63 -13
  1054. vellum/workflows/inputs/dataset_row.py +186 -0
  1055. vellum/workflows/inputs/tests/test_inputs.py +182 -2
  1056. vellum/workflows/integrations/__init__.py +5 -0
  1057. vellum/workflows/integrations/composio_service.py +158 -0
  1058. vellum/workflows/integrations/mcp_service.py +282 -0
  1059. vellum/workflows/integrations/tests/__init__.py +0 -0
  1060. vellum/workflows/integrations/tests/test_mcp_service.py +273 -0
  1061. vellum/workflows/integrations/tests/test_vellum_integration_service.py +383 -0
  1062. vellum/workflows/integrations/vellum_integration_service.py +147 -0
  1063. vellum/workflows/loaders/__init__.py +3 -0
  1064. vellum/workflows/loaders/base.py +38 -0
  1065. vellum/workflows/nodes/__init__.py +2 -0
  1066. vellum/workflows/nodes/bases/base.py +165 -82
  1067. vellum/workflows/nodes/bases/base_adornment_node.py +55 -1
  1068. vellum/workflows/nodes/bases/tests/test_base_node.py +153 -4
  1069. vellum/workflows/nodes/core/error_node/node.py +11 -2
  1070. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +30 -3
  1071. vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py +36 -1
  1072. vellum/workflows/nodes/core/map_node/node.py +33 -6
  1073. vellum/workflows/nodes/core/map_node/tests/test_node.py +106 -0
  1074. vellum/workflows/nodes/core/retry_node/node.py +1 -0
  1075. vellum/workflows/nodes/core/retry_node/tests/test_node.py +2 -3
  1076. vellum/workflows/nodes/core/templating_node/node.py +7 -2
  1077. vellum/workflows/nodes/core/templating_node/tests/test_templating_node.py +194 -1
  1078. vellum/workflows/nodes/core/try_node/node.py +1 -0
  1079. vellum/workflows/nodes/displayable/__init__.py +6 -0
  1080. vellum/workflows/nodes/displayable/api_node/node.py +13 -3
  1081. vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py +151 -2
  1082. vellum/workflows/nodes/displayable/bases/api_node/node.py +71 -17
  1083. vellum/workflows/nodes/displayable/bases/api_node/tests/__init__.py +0 -0
  1084. vellum/workflows/nodes/displayable/bases/api_node/tests/test_node.py +150 -0
  1085. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +85 -7
  1086. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +324 -19
  1087. vellum/workflows/nodes/displayable/bases/inline_prompt_node/tests/test_inline_prompt_node.py +352 -32
  1088. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +86 -3
  1089. vellum/workflows/nodes/displayable/bases/search_node.py +26 -3
  1090. vellum/workflows/nodes/displayable/bases/tests/test_prompt_deployment_node.py +90 -0
  1091. vellum/workflows/nodes/displayable/bases/utils.py +82 -5
  1092. vellum/workflows/nodes/displayable/code_execution_node/node.py +30 -10
  1093. vellum/workflows/nodes/displayable/code_execution_node/tests/test_node.py +284 -14
  1094. vellum/workflows/nodes/displayable/code_execution_node/utils.py +8 -21
  1095. vellum/workflows/nodes/displayable/conditional_node/node.py +8 -4
  1096. vellum/workflows/nodes/displayable/final_output_node/node.py +34 -0
  1097. vellum/workflows/nodes/displayable/final_output_node/tests/test_node.py +146 -1
  1098. vellum/workflows/nodes/displayable/guardrail_node/node.py +13 -4
  1099. vellum/workflows/nodes/displayable/inline_prompt_node/node.py +9 -36
  1100. vellum/workflows/nodes/displayable/inline_prompt_node/tests/test_node.py +3 -0
  1101. vellum/workflows/nodes/displayable/merge_node/node.py +8 -1
  1102. vellum/workflows/nodes/displayable/note_node/node.py +11 -1
  1103. vellum/workflows/nodes/displayable/prompt_deployment_node/node.py +7 -23
  1104. vellum/workflows/nodes/displayable/search_node/node.py +15 -2
  1105. vellum/workflows/nodes/displayable/search_node/tests/test_node.py +33 -0
  1106. vellum/workflows/nodes/displayable/set_state_node/__init__.py +5 -0
  1107. vellum/workflows/nodes/displayable/set_state_node/node.py +71 -0
  1108. vellum/workflows/nodes/displayable/set_state_node/tests/__init__.py +0 -0
  1109. vellum/workflows/nodes/displayable/set_state_node/tests/test_node.py +212 -0
  1110. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +231 -59
  1111. vellum/workflows/nodes/displayable/subworkflow_deployment_node/tests/test_node.py +1 -1
  1112. vellum/workflows/nodes/displayable/tests/test_inline_text_prompt_node.py +4 -1
  1113. vellum/workflows/nodes/displayable/tests/test_search_node_error_handling.py +329 -0
  1114. vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +56 -14
  1115. vellum/workflows/nodes/displayable/tool_calling_node/__init__.py +3 -0
  1116. vellum/workflows/nodes/displayable/tool_calling_node/node.py +265 -0
  1117. vellum/workflows/nodes/displayable/tool_calling_node/state.py +11 -0
  1118. vellum/workflows/nodes/displayable/tool_calling_node/tests/__init__.py +0 -0
  1119. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_composio_service.py +219 -0
  1120. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py +998 -0
  1121. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py +316 -0
  1122. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +654 -0
  1123. vellum/workflows/nodes/displayable/web_search_node/__init__.py +3 -0
  1124. vellum/workflows/nodes/displayable/web_search_node/node.py +136 -0
  1125. vellum/workflows/nodes/displayable/web_search_node/tests/__init__.py +0 -0
  1126. vellum/workflows/nodes/displayable/web_search_node/tests/test_node.py +246 -0
  1127. vellum/workflows/nodes/experimental/__init__.py +1 -3
  1128. vellum/workflows/nodes/mocks.py +71 -206
  1129. vellum/workflows/nodes/tests/test_mocks.py +0 -177
  1130. vellum/workflows/nodes/tests/test_utils.py +34 -5
  1131. vellum/workflows/nodes/utils.py +68 -14
  1132. vellum/workflows/outputs/base.py +88 -14
  1133. vellum/workflows/ports/node_ports.py +3 -0
  1134. vellum/workflows/ports/port.py +27 -12
  1135. vellum/workflows/ports/tests/test_port.py +45 -0
  1136. vellum/workflows/ports/utils.py +26 -6
  1137. vellum/workflows/references/__init__.py +2 -0
  1138. vellum/workflows/references/constant.py +4 -1
  1139. vellum/workflows/references/environment_variable.py +17 -9
  1140. vellum/workflows/references/lazy.py +8 -0
  1141. vellum/workflows/references/output.py +4 -6
  1142. vellum/workflows/references/state_value.py +24 -1
  1143. vellum/workflows/references/tests/test_lazy.py +58 -0
  1144. vellum/workflows/references/trigger.py +82 -0
  1145. vellum/workflows/references/workflow_input.py +8 -0
  1146. vellum/workflows/resolvers/base.py +19 -1
  1147. vellum/workflows/resolvers/resolver.py +81 -0
  1148. vellum/workflows/resolvers/tests/test_resolver.py +199 -0
  1149. vellum/workflows/resolvers/types.py +11 -0
  1150. vellum/workflows/runner/runner.py +770 -143
  1151. vellum/workflows/runner/tests/__init__.py +0 -0
  1152. vellum/workflows/runner/tests/test_runner.py +170 -0
  1153. vellum/workflows/sandbox.py +54 -9
  1154. vellum/workflows/state/base.py +238 -55
  1155. vellum/workflows/state/context.py +297 -7
  1156. vellum/workflows/state/delta.py +20 -0
  1157. vellum/workflows/state/encoder.py +2 -77
  1158. vellum/workflows/state/tests/test_state.py +292 -9
  1159. vellum/workflows/tests/test_dataset_row.py +191 -0
  1160. vellum/workflows/tests/test_sandbox.py +226 -0
  1161. vellum/workflows/tests/triggers/test_integration_trigger.py +156 -0
  1162. vellum/workflows/triggers/__init__.py +7 -0
  1163. vellum/workflows/triggers/base.py +523 -0
  1164. vellum/workflows/triggers/chat_message.py +141 -0
  1165. vellum/workflows/triggers/integration.py +198 -0
  1166. vellum/workflows/triggers/manual.py +39 -0
  1167. vellum/workflows/triggers/schedule.py +20 -0
  1168. vellum/workflows/triggers/tests/__init__.py +1 -0
  1169. vellum/workflows/triggers/tests/test_base_trigger_display.py +147 -0
  1170. vellum/workflows/triggers/tests/test_chat_message.py +257 -0
  1171. vellum/workflows/triggers/tests/test_integration.py +155 -0
  1172. vellum/workflows/types/__init__.py +2 -1
  1173. vellum/workflows/types/code_execution_node_wrappers.py +5 -1
  1174. vellum/workflows/types/core.py +23 -0
  1175. vellum/workflows/types/definition.py +161 -2
  1176. vellum/workflows/types/generics.py +17 -0
  1177. vellum/workflows/types/tests/test_definition.py +183 -0
  1178. vellum/workflows/types/tests/test_utils.py +23 -0
  1179. vellum/workflows/types/utils.py +65 -5
  1180. vellum/workflows/types/workflow_metadata.py +124 -0
  1181. vellum/workflows/utils/files.py +28 -0
  1182. vellum/workflows/utils/functions.py +386 -25
  1183. vellum/workflows/utils/hmac.py +44 -0
  1184. vellum/workflows/utils/names.py +32 -4
  1185. vellum/workflows/utils/pydantic_schema.py +56 -0
  1186. vellum/workflows/utils/tests/test_functions.py +480 -23
  1187. vellum/workflows/utils/tests/test_names.py +9 -0
  1188. vellum/workflows/utils/tests/test_validate.py +79 -0
  1189. vellum/workflows/utils/tests/test_vellum_variables.py +93 -3
  1190. vellum/workflows/utils/uuids.py +125 -0
  1191. vellum/workflows/utils/validate.py +108 -0
  1192. vellum/workflows/utils/vellum_variables.py +224 -20
  1193. vellum/workflows/utils/zip.py +46 -0
  1194. vellum/workflows/vellum_client.py +3 -33
  1195. vellum/workflows/workflows/base.py +503 -50
  1196. vellum/workflows/workflows/event_filters.py +13 -0
  1197. vellum/workflows/workflows/tests/test_base_workflow.py +169 -6
  1198. vellum/workflows/workflows/tests/test_event_filters.py +126 -0
  1199. {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/METADATA +17 -13
  1200. vellum_ai-1.13.5.dist-info/RECORD +2224 -0
  1201. vellum_ai-1.13.5.dist-info/entry_points.txt +4 -0
  1202. vellum_cli/__init__.py +55 -4
  1203. vellum_cli/config.py +21 -5
  1204. vellum_cli/image_push.py +106 -8
  1205. vellum_cli/move.py +56 -0
  1206. vellum_cli/ping.py +6 -0
  1207. vellum_cli/pull.py +50 -14
  1208. vellum_cli/push.py +124 -34
  1209. vellum_cli/tests/conftest.py +13 -12
  1210. vellum_cli/tests/test_image_push.py +192 -21
  1211. vellum_cli/tests/test_image_push_error_handling.py +258 -0
  1212. vellum_cli/tests/test_init.py +7 -24
  1213. vellum_cli/tests/test_move.py +154 -0
  1214. vellum_cli/tests/test_ping.py +15 -0
  1215. vellum_cli/tests/test_pull.py +125 -129
  1216. vellum_cli/tests/test_push.py +693 -12
  1217. vellum_ee/assets/node-definitions.json +1348 -0
  1218. vellum_ee/scripts/generate_node_definitions.py +101 -0
  1219. vellum_ee/workflows/display/base.py +33 -58
  1220. vellum_ee/workflows/display/editor/types.py +3 -0
  1221. vellum_ee/workflows/display/exceptions.py +3 -0
  1222. vellum_ee/workflows/display/nodes/base_node_display.py +199 -58
  1223. vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +242 -3
  1224. vellum_ee/workflows/display/nodes/types.py +1 -0
  1225. vellum_ee/workflows/display/nodes/vellum/api_node.py +26 -13
  1226. vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py +8 -5
  1227. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +23 -7
  1228. vellum_ee/workflows/display/nodes/vellum/conditional_node.py +18 -7
  1229. vellum_ee/workflows/display/nodes/vellum/error_node.py +2 -4
  1230. vellum_ee/workflows/display/nodes/vellum/final_output_node.py +3 -14
  1231. vellum_ee/workflows/display/nodes/vellum/guardrail_node.py +2 -5
  1232. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +85 -44
  1233. vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +44 -18
  1234. vellum_ee/workflows/display/nodes/vellum/map_node.py +31 -15
  1235. vellum_ee/workflows/display/nodes/vellum/merge_node.py +2 -5
  1236. vellum_ee/workflows/display/nodes/vellum/note_node.py +20 -6
  1237. vellum_ee/workflows/display/nodes/vellum/prompt_deployment_node.py +13 -9
  1238. vellum_ee/workflows/display/nodes/vellum/retry_node.py +5 -6
  1239. vellum_ee/workflows/display/nodes/vellum/search_node.py +76 -19
  1240. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +46 -12
  1241. vellum_ee/workflows/display/nodes/vellum/templating_node.py +3 -6
  1242. vellum_ee/workflows/display/nodes/vellum/tests/test_api_node.py +65 -0
  1243. vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +236 -3
  1244. vellum_ee/workflows/display/nodes/vellum/tests/test_final_output_node.py +216 -0
  1245. vellum_ee/workflows/display/nodes/vellum/tests/test_inline_subworkflow_node.py +88 -0
  1246. vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py +44 -7
  1247. vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_deployment_node.py +71 -1
  1248. vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +120 -26
  1249. vellum_ee/workflows/display/nodes/vellum/tests/test_retry_node.py +1 -1
  1250. vellum_ee/workflows/display/nodes/vellum/tests/test_search_node.py +104 -0
  1251. vellum_ee/workflows/display/nodes/vellum/tests/test_subworkflow_deployment_node.py +28 -18
  1252. vellum_ee/workflows/display/nodes/vellum/tests/test_templating_node.py +2 -2
  1253. vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py +649 -49
  1254. vellum_ee/workflows/display/nodes/vellum/tests/test_try_node.py +2 -2
  1255. vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +114 -10
  1256. vellum_ee/workflows/display/nodes/vellum/try_node.py +5 -6
  1257. vellum_ee/workflows/display/nodes/vellum/utils.py +54 -12
  1258. vellum_ee/workflows/display/tests/test_base_workflow_display.py +396 -25
  1259. vellum_ee/workflows/display/tests/test_json_schema_validation.py +190 -0
  1260. vellum_ee/workflows/display/tests/test_mocks.py +912 -0
  1261. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/conftest.py +2 -2
  1262. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +114 -39
  1263. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +342 -90
  1264. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +24 -17
  1265. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +263 -65
  1266. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_trigger_serialization.py +69 -12
  1267. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +36 -305
  1268. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +92 -431
  1269. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +143 -429
  1270. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +3 -123
  1271. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +24 -110
  1272. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +12 -90
  1273. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +17 -86
  1274. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +363 -100
  1275. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +97 -315
  1276. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +66 -319
  1277. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +24 -99
  1278. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +54 -180
  1279. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +32 -88
  1280. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_set_state_node_serialization.py +86 -0
  1281. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +217 -142
  1282. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +34 -142
  1283. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +15 -8
  1284. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py +89 -0
  1285. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +184 -0
  1286. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_tool_wrapper_serialization.py +84 -0
  1287. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_mcp_serialization.py +104 -0
  1288. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_parent_input.py +89 -0
  1289. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py +71 -23
  1290. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_tool_wrapper_serialization.py +71 -0
  1291. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py +187 -0
  1292. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py +107 -0
  1293. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +2 -4
  1294. vellum_ee/workflows/display/tests/workflow_serialization/test_chat_message_dict_reference_serialization.py +129 -0
  1295. vellum_ee/workflows/display/tests/workflow_serialization/test_chat_message_trigger_serialization.py +412 -0
  1296. vellum_ee/workflows/display/tests/workflow_serialization/test_code_tool_node_reference_error.py +106 -0
  1297. vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +20 -47
  1298. vellum_ee/workflows/display/tests/workflow_serialization/test_duplicate_trigger_name_validation.py +208 -0
  1299. vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_map_reference_serialization.py +88 -0
  1300. vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_not_referenced_by_workflow_outputs.py +45 -0
  1301. vellum_ee/workflows/display/tests/workflow_serialization/test_infinite_loop_validation.py +66 -0
  1302. vellum_ee/workflows/display/tests/workflow_serialization/test_int_input_serialization.py +40 -0
  1303. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_serialization.py +300 -0
  1304. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_validation.py +173 -0
  1305. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_with_entrypoint_node_id.py +91 -0
  1306. vellum_ee/workflows/display/tests/workflow_serialization/test_list_vellum_document_serialization.py +69 -0
  1307. vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py +120 -0
  1308. vellum_ee/workflows/display/tests/workflow_serialization/test_map_node_with_terminal_nodes_serialization.py +62 -0
  1309. vellum_ee/workflows/display/tests/workflow_serialization/test_multi_trigger_same_node_serialization.py +210 -0
  1310. vellum_ee/workflows/display/tests/workflow_serialization/test_no_triggers_no_entrypoint_validation.py +64 -0
  1311. vellum_ee/workflows/display/tests/workflow_serialization/test_partial_workflow_meta_display_override.py +55 -0
  1312. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_dataset_mocks_serialization.py +268 -0
  1313. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_invalid_pdf_data_url.py +49 -0
  1314. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_validation_errors.py +112 -0
  1315. vellum_ee/workflows/display/tests/workflow_serialization/test_scheduled_trigger_serialization.py +276 -0
  1316. vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_any_serialization.py +49 -0
  1317. vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_in_unused_graphs_serialization.py +53 -0
  1318. vellum_ee/workflows/display/tests/workflow_serialization/test_trigger_display_from_display_class.py +153 -0
  1319. vellum_ee/workflows/display/tests/workflow_serialization/test_web_search_node_serialization.py +72 -0
  1320. vellum_ee/workflows/display/tests/workflow_serialization/test_workflow_input_parameterization_error.py +37 -0
  1321. vellum_ee/workflows/display/types.py +29 -2
  1322. vellum_ee/workflows/display/utils/auto_layout.py +130 -0
  1323. vellum_ee/workflows/display/utils/events.py +57 -0
  1324. vellum_ee/workflows/display/utils/exceptions.py +53 -0
  1325. vellum_ee/workflows/display/utils/expressions.py +669 -55
  1326. vellum_ee/workflows/display/utils/metadata.py +211 -0
  1327. vellum_ee/workflows/display/utils/registry.py +46 -0
  1328. vellum_ee/workflows/display/utils/tests/__init__.py +0 -0
  1329. vellum_ee/workflows/display/utils/tests/test_auto_layout.py +56 -0
  1330. vellum_ee/workflows/display/utils/tests/test_events.py +185 -0
  1331. vellum_ee/workflows/display/utils/tests/test_expressions.py +92 -0
  1332. vellum_ee/workflows/display/utils/tests/test_metadata.py +31 -0
  1333. vellum_ee/workflows/display/utils/triggers.py +153 -0
  1334. vellum_ee/workflows/display/utils/vellum.py +94 -5
  1335. vellum_ee/workflows/display/vellum.py +2 -128
  1336. vellum_ee/workflows/display/workflows/__init__.py +0 -1
  1337. vellum_ee/workflows/display/workflows/base_workflow_display.py +1224 -190
  1338. vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py +26 -0
  1339. vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +379 -41
  1340. vellum_ee/workflows/server/namespaces.py +18 -0
  1341. vellum_ee/workflows/server/virtual_file_loader.py +131 -6
  1342. vellum_ee/workflows/tests/local_workflow/display/nodes/final_output.py +1 -1
  1343. vellum_ee/workflows/tests/local_workflow/display/nodes/templating_node.py +1 -1
  1344. vellum_ee/workflows/tests/local_workflow/display/workflow.py +11 -14
  1345. vellum_ee/workflows/tests/test_display_meta.py +43 -0
  1346. vellum_ee/workflows/tests/test_registry.py +169 -0
  1347. vellum_ee/workflows/tests/test_serialize_module.py +432 -0
  1348. vellum_ee/workflows/tests/test_server.py +616 -44
  1349. vellum_ee/workflows/tests/test_virtual_files.py +48 -0
  1350. vellum/client/resources/release_reviews/client.py +0 -137
  1351. vellum/workflows/nodes/experimental/openai_chat_completion_node/__init__.py +0 -5
  1352. vellum/workflows/nodes/experimental/openai_chat_completion_node/node.py +0 -266
  1353. vellum/workflows/nodes/experimental/tool_calling_node/__init__.py +0 -3
  1354. vellum/workflows/nodes/experimental/tool_calling_node/node.py +0 -135
  1355. vellum/workflows/nodes/experimental/tool_calling_node/tests/test_node.py +0 -53
  1356. vellum/workflows/nodes/experimental/tool_calling_node/utils.py +0 -259
  1357. vellum_ai-0.14.63.dist-info/RECORD +0 -1719
  1358. vellum_ai-0.14.63.dist-info/entry_points.txt +0 -3
  1359. vellum_ee/workflows/display/workflows/vellum_workflow_display.py +0 -9
  1360. /vellum/{workflows/nodes/displayable/bases/inline_prompt_node → prompts}/constants.py +0 -0
  1361. {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/LICENSE +0 -0
  1362. {vellum_ai-0.14.63.dist-info → vellum_ai-1.13.5.dist-info}/WHEEL +0 -0
@@ -0,0 +1,4 @@
1
+ [console_scripts]
2
+ generate_node_definitions=vellum_ee.scripts.generate_node_definitions:main
3
+ vellum=vellum_cli:main
4
+
vellum_cli/__init__.py CHANGED
@@ -5,6 +5,7 @@ import click
5
5
  from vellum_cli.aliased_group import ClickAliasedGroup
6
6
  from vellum_cli.image_push import image_push_command
7
7
  from vellum_cli.init import init_command
8
+ from vellum_cli.move import move_command
8
9
  from vellum_cli.ping import ping_command
9
10
  from vellum_cli.pull import pull_command
10
11
  from vellum_cli.push import push_command
@@ -67,7 +68,8 @@ with the provided module or be available for use. The Workflow Sandbox must also
67
68
  @click.option("--deployment-label", type=str, help="Label to use for the Deployment")
68
69
  @click.option("--deployment-name", type=str, help="Unique name for the Deployment")
69
70
  @click.option("--deployment-description", type=str, help="Description for the Deployment")
70
- @click.option("--release-tag", type=list, help="Release Tag for the Deployment", multiple=True)
71
+ @click.option("--release-tag", help="Release Tag for the Deployment", multiple=True)
72
+ @click.option("--release-description", type=str, help="Description for the Release")
71
73
  @click.option(
72
74
  "--dry-run",
73
75
  is_flag=True,
@@ -87,6 +89,7 @@ def workflows_push(
87
89
  deployment_name: Optional[str],
88
90
  deployment_description: Optional[str],
89
91
  release_tag: Optional[List[str]],
92
+ release_description: Optional[str],
90
93
  dry_run: Optional[bool],
91
94
  strict: Optional[bool],
92
95
  workspace: Optional[str],
@@ -104,6 +107,7 @@ def workflows_push(
104
107
  deployment_name=deployment_name,
105
108
  deployment_description=deployment_description,
106
109
  release_tags=release_tag,
110
+ release_description=release_description,
107
111
  dry_run=dry_run,
108
112
  strict=strict,
109
113
  workspace=workspace,
@@ -117,7 +121,8 @@ def workflows_push(
117
121
  @click.option("--deployment-label", type=str, help="Label to use for the Deployment")
118
122
  @click.option("--deployment-name", type=str, help="Unique name for the Deployment")
119
123
  @click.option("--deployment-description", type=str, help="Description for the Deployment")
120
- @click.option("--release-tag", type=list, help="Release Tag for the Deployment", multiple=True)
124
+ @click.option("--release-tag", help="Release Tag for the Deployment", multiple=True)
125
+ @click.option("--release-description", type=str, help="Description for the Release")
121
126
  @click.option(
122
127
  "--dry-run",
123
128
  is_flag=True,
@@ -137,6 +142,7 @@ def push_module(
137
142
  deployment_name: Optional[str],
138
143
  deployment_description: Optional[str],
139
144
  release_tag: Optional[List[str]],
145
+ release_description: Optional[str],
140
146
  dry_run: Optional[bool],
141
147
  strict: Optional[bool],
142
148
  workspace: Optional[str],
@@ -152,6 +158,7 @@ def push_module(
152
158
  deployment_name=deployment_name,
153
159
  deployment_description=deployment_description,
154
160
  release_tags=release_tag,
161
+ release_description=release_description,
155
162
  dry_run=dry_run,
156
163
  strict=strict,
157
164
  workspace=workspace,
@@ -201,6 +208,11 @@ Helpful for running and debugging workflows locally.""",
201
208
  help="""Directory to pull the workflow into. If not specified, \
202
209
  the workflow will be pulled into the current working directory.""",
203
210
  )
211
+ @click.option(
212
+ "--release-tag",
213
+ type=str,
214
+ help="""Release tag to use when pulling from a deployment.""",
215
+ )
204
216
  def pull(
205
217
  ctx: click.Context,
206
218
  include_json: Optional[bool],
@@ -208,6 +220,7 @@ def pull(
208
220
  strict: Optional[bool],
209
221
  include_sandbox: Optional[bool],
210
222
  target_directory: Optional[str],
223
+ release_tag: Optional[str],
211
224
  ) -> None:
212
225
  """Pull Resources from Vellum"""
213
226
 
@@ -218,6 +231,7 @@ def pull(
218
231
  strict=strict,
219
232
  include_sandbox=include_sandbox,
220
233
  target_directory=target_directory,
234
+ release_tag=release_tag,
221
235
  )
222
236
 
223
237
 
@@ -264,6 +278,11 @@ the workflow will be pulled into the current working directory.""",
264
278
  type=str,
265
279
  help="The specific Workspace config to use when pulling",
266
280
  )
281
+ @click.option(
282
+ "--release-tag",
283
+ type=str,
284
+ help="""Release tag to use when pulling from a deployment.""",
285
+ )
267
286
  def workflows_pull(
268
287
  module: Optional[str],
269
288
  include_json: Optional[bool],
@@ -274,6 +293,7 @@ def workflows_pull(
274
293
  include_sandbox: Optional[bool],
275
294
  target_directory: Optional[str],
276
295
  workspace: Optional[str],
296
+ release_tag: Optional[str],
277
297
  ) -> None:
278
298
  """
279
299
  Pull Workflows from Vellum. If a module is provided, only the Workflow for that module will be pulled.
@@ -290,6 +310,7 @@ def workflows_pull(
290
310
  include_sandbox=include_sandbox,
291
311
  target_directory=target_directory,
292
312
  workspace=workspace,
313
+ release_tag=release_tag,
293
314
  )
294
315
 
295
316
 
@@ -325,6 +346,11 @@ Helpful for running and debugging resources locally.""",
325
346
  help="""Directory to pull the workflow into. If not specified, \
326
347
  the workflow will be pulled into the current working directory.""",
327
348
  )
349
+ @click.option(
350
+ "--release-tag",
351
+ type=str,
352
+ help="""Release tag to use when pulling from a deployment.""",
353
+ )
328
354
  def pull_module(
329
355
  ctx: click.Context,
330
356
  include_json: Optional[bool],
@@ -332,6 +358,7 @@ def pull_module(
332
358
  strict: Optional[bool],
333
359
  include_sandbox: Optional[bool],
334
360
  target_directory: Optional[str],
361
+ release_tag: Optional[str],
335
362
  ) -> None:
336
363
  """Pull a specific module from Vellum"""
337
364
 
@@ -343,6 +370,7 @@ def pull_module(
343
370
  strict=strict,
344
371
  include_sandbox=include_sandbox,
345
372
  target_directory=target_directory,
373
+ release_tag=release_tag,
346
374
  )
347
375
 
348
376
 
@@ -362,9 +390,32 @@ def images() -> None:
362
390
  "This field does not push multiple local tags of the passed in image.",
363
391
  )
364
392
  @click.option("--workspace", type=str, help="The specific Workspace config to use when pushing")
365
- def image_push(image: str, tag: Optional[List[str]] = None, workspace: Optional[str] = None) -> None:
393
+ @click.option("--source", type=str, help="Path to Dockerfile to build before pushing")
394
+ def image_push(
395
+ image: str, tag: Optional[List[str]] = None, workspace: Optional[str] = None, source: Optional[str] = None
396
+ ) -> None:
366
397
  """Push Docker image to Vellum"""
367
- image_push_command(image, tag, workspace)
398
+ image_push_command(image, tag, workspace, source)
399
+
400
+
401
+ @workflows.command(name="move")
402
+ @click.argument("old_module", required=True)
403
+ @click.argument("new_module", required=True)
404
+ @click.option("--workspace", type=str, help="The specific Workspace config to use when moving")
405
+ def workflows_move(
406
+ old_module: str,
407
+ new_module: str,
408
+ workspace: Optional[str],
409
+ ) -> None:
410
+ """
411
+ Move/rename a Workflow module. Updates both the filesystem structure and configuration.
412
+ """
413
+
414
+ move_command(
415
+ old_module=old_module,
416
+ new_module=new_module,
417
+ workspace=workspace,
418
+ )
368
419
 
369
420
 
370
421
  @workflows.command(name="init")
vellum_cli/config.py CHANGED
@@ -7,8 +7,8 @@ from typing import Dict, List, Literal, Optional, Union
7
7
 
8
8
  import tomli
9
9
 
10
- from vellum.core.pydantic_utilities import UniversalBaseModel
11
- from vellum.workflows.state.encoder import DefaultStateEncoder
10
+ from vellum.client.core.pydantic_utilities import UniversalBaseModel
11
+ from vellum.utils.json_encoder import VellumJsonEncoder
12
12
 
13
13
  LOCKFILE_PATH = "vellum.lock.json"
14
14
  PYPROJECT_TOML_PATH = "pyproject.toml"
@@ -36,6 +36,7 @@ class WorkflowDeploymentConfig(UniversalBaseModel):
36
36
  name: Optional[str] = None
37
37
  description: Optional[str] = None
38
38
  release_tags: Optional[List[str]] = None
39
+ release_description: Optional[str] = None
39
40
 
40
41
  def merge(self, other: "WorkflowDeploymentConfig") -> "WorkflowDeploymentConfig":
41
42
  return WorkflowDeploymentConfig(
@@ -44,6 +45,7 @@ class WorkflowDeploymentConfig(UniversalBaseModel):
44
45
  name=self.name or other.name,
45
46
  description=self.description or other.description,
46
47
  release_tags=self.release_tags or other.release_tags,
48
+ release_description=self.release_description or other.release_description,
47
49
  )
48
50
 
49
51
 
@@ -118,22 +120,36 @@ def merge_workflows_by_sandbox_id(
118
120
  else:
119
121
  # If the user defines a workflow in the pyproject.toml with a sandbox_id,
120
122
  # we merge the workflow with one of the ones in the lockfile with the same sandbox_id.
123
+ # First, try to find a lockfile workflow matching both sandbox_id AND workspace.
121
124
  other_workflow = next(
122
125
  (
123
126
  other_workflow
124
127
  for other_workflow in other_workflows
125
128
  if self_workflow.workflow_sandbox_id == other_workflow.workflow_sandbox_id
129
+ and self_workflow.workspace == other_workflow.workspace
126
130
  ),
127
131
  None,
128
132
  )
133
+ # If no exact match, fall back to matching by sandbox_id alone.
134
+ if other_workflow is None:
135
+ other_workflow = next(
136
+ (
137
+ other_workflow
138
+ for other_workflow in other_workflows
139
+ if self_workflow.workflow_sandbox_id == other_workflow.workflow_sandbox_id
140
+ ),
141
+ None,
142
+ )
129
143
  if other_workflow is not None:
130
144
  merged_workflows.append(self_workflow.merge(other_workflow))
131
145
  else:
132
146
  merged_workflows.append(self_workflow)
133
147
 
134
- workflow_sandbox_ids_so_far = {workflow.workflow_sandbox_id for workflow in merged_workflows}
148
+ # Use (workflow_sandbox_id, workspace) as the dedupe key to preserve workflows
149
+ # with the same sandbox_id but different workspaces.
150
+ workflow_keys_so_far = {(workflow.workflow_sandbox_id, workflow.workspace) for workflow in merged_workflows}
135
151
  for other_workflow in other_workflows:
136
- if other_workflow.workflow_sandbox_id not in workflow_sandbox_ids_so_far:
152
+ if (other_workflow.workflow_sandbox_id, other_workflow.workspace) not in workflow_keys_so_far:
137
153
  merged_workflows.append(other_workflow)
138
154
 
139
155
  return merged_workflows
@@ -147,7 +163,7 @@ class VellumCliConfig(UniversalBaseModel):
147
163
  def save(self) -> None:
148
164
  lockfile_path = os.path.join(os.getcwd(), LOCKFILE_PATH)
149
165
  with open(lockfile_path, "w") as f:
150
- json.dump(self.model_dump(), f, indent=2, cls=DefaultStateEncoder)
166
+ json.dump(self.model_dump(), f, indent=2, cls=VellumJsonEncoder)
151
167
  # Makes sure the file ends with a newline, consistent with most autoformatters
152
168
  f.write("\n")
153
169
 
vellum_cli/image_push.py CHANGED
@@ -9,17 +9,47 @@ import docker
9
9
  from docker import DockerClient
10
10
  from dotenv import load_dotenv
11
11
 
12
+ from vellum.client.core.api_error import ApiError
12
13
  from vellum.workflows.vellum_client import create_vellum_client, create_vellum_environment
13
14
  from vellum_cli.config import DEFAULT_WORKSPACE_CONFIG, load_vellum_cli_config
14
- from vellum_cli.logger import load_cli_logger
15
+ from vellum_cli.logger import handle_cli_error, load_cli_logger
15
16
 
16
17
  _SUPPORTED_ARCHITECTURE = "amd64"
17
18
 
18
19
 
19
- def image_push_command(image: str, tags: Optional[List[str]] = None, workspace: Optional[str] = None) -> None:
20
+ def image_push_command(
21
+ image: str, tags: Optional[List[str]] = None, workspace: Optional[str] = None, source: Optional[str] = None
22
+ ) -> None:
20
23
  load_dotenv(dotenv_path=os.path.join(os.getcwd(), ".env"))
21
24
  logger = load_cli_logger()
22
25
  config = load_vellum_cli_config()
26
+
27
+ logger.info("Cleaning up unused Docker images...")
28
+ try:
29
+ subprocess.run(
30
+ ["docker", "image", "prune", "--all", "-f", "--filter", "label=image-type=python-workflow-runtime"],
31
+ check=True,
32
+ )
33
+ logger.info("Docker image pruning completed successfully")
34
+ except subprocess.CalledProcessError as e:
35
+ logger.warning(f"Docker image pruning failed: {e}")
36
+
37
+ if source:
38
+ logger.info(f"Building Docker image from Dockerfile: {source}")
39
+
40
+ if not os.path.exists(source):
41
+ handle_cli_error(logger, "Dockerfile not found", f"Dockerfile does not exist: {source}")
42
+
43
+ build_result = subprocess.run(
44
+ ["docker", "buildx", "build", "-f", source, "--platform=linux/amd64", "-t", image, "."],
45
+ stdout=subprocess.PIPE,
46
+ stderr=subprocess.PIPE,
47
+ )
48
+
49
+ if build_result.returncode != 0:
50
+ handle_cli_error(logger, "Docker build failed", build_result.stderr.decode("utf-8"))
51
+
52
+ logger.info("Docker build completed successfully")
23
53
  workspace_config = next((w for w in config.workspaces if w.name == workspace), DEFAULT_WORKSPACE_CONFIG)
24
54
 
25
55
  api_key = os.getenv(workspace_config.api_key, None)
@@ -82,7 +112,41 @@ def image_push_command(image: str, tags: Optional[List[str]] = None, workspace:
82
112
  exit(1)
83
113
  else:
84
114
  logger.info("Authenticating...")
85
- auth = vellum_client.container_images.docker_service_token()
115
+ try:
116
+ auth = vellum_client.container_images.docker_service_token()
117
+ except ApiError as e:
118
+ if e.status_code == 401 or e.status_code == 403:
119
+ handle_cli_error(
120
+ logger,
121
+ title="Authentication failed",
122
+ message="Unable to authenticate with Vellum API. Please check your API key.",
123
+ suggestion="Make sure your VELLUM_API_KEY environment variable is set correctly.",
124
+ )
125
+ return
126
+ elif e.status_code == 400 and isinstance(e.body, dict) and "detail" in e.body:
127
+ handle_cli_error(
128
+ logger,
129
+ title="API request failed",
130
+ message=e.body["detail"],
131
+ )
132
+ return
133
+ elif e.status_code == 500:
134
+ handle_cli_error(
135
+ logger,
136
+ title="Server error",
137
+ message="The Vellum API failed with an unexpected server error.",
138
+ suggestion="Please try again later and contact support if the problem persists.",
139
+ )
140
+ return
141
+ else:
142
+ handle_cli_error(
143
+ logger,
144
+ title="API request failed",
145
+ message=f"Failed to get Docker service token from Vellum API (HTTP {e.status_code}).",
146
+ suggestion="Please check your configuration and try again. If the problem persists, "
147
+ "contact support.",
148
+ )
149
+ return
86
150
 
87
151
  docker_client.login(
88
152
  username="oauth2accesstoken",
@@ -143,11 +207,45 @@ def image_push_command(image: str, tags: Optional[List[str]] = None, workspace:
143
207
 
144
208
  logger.info(f"Updating Vellum metadata and validating image works in our system with image digest: {sha}...")
145
209
 
146
- vellum_client.container_images.push_container_image(
147
- name=image_name,
148
- sha=sha,
149
- tags=all_tags,
150
- )
210
+ try:
211
+ vellum_client.container_images.push_container_image(
212
+ name=image_name,
213
+ sha=sha,
214
+ tags=all_tags,
215
+ )
216
+ except ApiError as e:
217
+ if e.status_code == 401 or e.status_code == 403:
218
+ handle_cli_error(
219
+ logger,
220
+ title="Authentication failed",
221
+ message="Unable to push container image metadata to Vellum API. Please check your API key.",
222
+ suggestion="Make sure your VELLUM_API_KEY environment variable is set correctly.",
223
+ )
224
+ return
225
+ elif e.status_code == 400 and isinstance(e.body, dict) and "detail" in e.body:
226
+ handle_cli_error(
227
+ logger,
228
+ title="API request failed",
229
+ message=e.body["detail"],
230
+ )
231
+ return
232
+ elif e.status_code == 500:
233
+ handle_cli_error(
234
+ logger,
235
+ title="Server error",
236
+ message="The Vellum API failed with an unexpected server error while pushing container image metadata.",
237
+ suggestion="Please try again later and contact support if the problem persists.",
238
+ )
239
+ return
240
+ else:
241
+ handle_cli_error(
242
+ logger,
243
+ title="API request failed",
244
+ message=f"Failed to push container image metadata to Vellum API (HTTP {e.status_code}).",
245
+ suggestion="Please check your configuration and try again. If the problem persists, contact support.",
246
+ )
247
+ return
248
+
151
249
  logger.info(f"Image successfully pushed as {image_name} to vellum with tags: {all_tags}.")
152
250
 
153
251
 
vellum_cli/move.py ADDED
@@ -0,0 +1,56 @@
1
+ import os
2
+ import shutil
3
+ from typing import Optional
4
+
5
+ from dotenv import load_dotenv
6
+
7
+ from vellum_cli.config import DEFAULT_WORKSPACE_CONFIG, load_vellum_cli_config
8
+ from vellum_cli.logger import load_cli_logger
9
+ from vellum_cli.push import module_exists
10
+
11
+
12
+ def move_command(
13
+ old_module: str,
14
+ new_module: str,
15
+ workspace: Optional[str] = None,
16
+ ) -> None:
17
+ load_dotenv(dotenv_path=os.path.join(os.getcwd(), ".env"))
18
+ logger = load_cli_logger()
19
+ config = load_vellum_cli_config()
20
+
21
+ if not module_exists(old_module):
22
+ raise ValueError(f"Module '{old_module}' does not exist in the filesystem.")
23
+
24
+ if module_exists(new_module):
25
+ raise ValueError(f"Module '{new_module}' already exists. Cannot move to existing module.")
26
+
27
+ matching_configs = [w for w in config.workflows if w.module == old_module]
28
+
29
+ if workspace:
30
+ matching_configs = [w for w in matching_configs if w.workspace == workspace]
31
+ else:
32
+ matching_configs = [w for w in matching_configs if w.workspace == DEFAULT_WORKSPACE_CONFIG.name]
33
+
34
+ if not matching_configs:
35
+ workspace_msg = (
36
+ f" in workspace '{workspace}'" if workspace else f" in workspace '{DEFAULT_WORKSPACE_CONFIG.name}'"
37
+ )
38
+ raise ValueError(f"No workflow configuration found for module '{old_module}'{workspace_msg}.")
39
+
40
+ logger.info(f"Moving module from '{old_module}' to '{new_module}'...")
41
+
42
+ old_path = os.path.join(os.getcwd(), *old_module.split("."))
43
+ new_path = os.path.join(os.getcwd(), *new_module.split("."))
44
+
45
+ os.makedirs(os.path.dirname(new_path), exist_ok=True)
46
+
47
+ shutil.move(old_path, new_path)
48
+ logger.info(f"Moved filesystem directory from '{old_path}' to '{new_path}'")
49
+
50
+ for workflow_config in matching_configs:
51
+ workflow_config.module = new_module
52
+ logger.info(f"Updated workflow configuration: {workflow_config.workflow_sandbox_id}")
53
+
54
+ config.save()
55
+ logger.info("Updated vellum.lock.json file.")
56
+ logger.info(f"Successfully moved module from '{old_module}' to '{new_module}'")
vellum_cli/ping.py CHANGED
@@ -14,6 +14,7 @@ def ping_command():
14
14
  try:
15
15
  workspace = client.workspaces.workspace_identity()
16
16
  organization = client.organizations.organization_identity()
17
+ environment = client.environments.environment_identity()
17
18
  except ApiError as e:
18
19
  # If user did not provide an API key, we will get a 403 error
19
20
  if e.status_code == 401 or e.status_code == 403:
@@ -35,5 +36,10 @@ Organization:
35
36
  Workspace:
36
37
  ID: {workspace.id}
37
38
  Name: {workspace.name}
39
+
40
+ Environment:
41
+ ID: {environment.id}
42
+ Name: {environment.name}
43
+ Label: {environment.label}
38
44
  """
39
45
  )
vellum_cli/pull.py CHANGED
@@ -7,11 +7,11 @@ import zipfile
7
7
  from typing import Optional
8
8
 
9
9
  from dotenv import load_dotenv
10
- from pydash import snake_case
11
10
 
12
11
  from vellum.client.core.api_error import ApiError
13
12
  from vellum.client.core.pydantic_utilities import UniversalBaseModel
14
13
  from vellum.utils.uuid import is_valid_uuid
14
+ from vellum.workflows.utils.names import create_module_name
15
15
  from vellum.workflows.vellum_client import create_vellum_client
16
16
  from vellum_cli.config import (
17
17
  DEFAULT_WORKSPACE_CONFIG,
@@ -20,7 +20,7 @@ from vellum_cli.config import (
20
20
  WorkflowDeploymentConfig,
21
21
  load_vellum_cli_config,
22
22
  )
23
- from vellum_cli.logger import load_cli_logger
23
+ from vellum_cli.logger import handle_cli_error, load_cli_logger
24
24
 
25
25
  ERROR_LOG_FILE_NAME = "error.log"
26
26
  METADATA_FILE_NAME = "metadata.json"
@@ -41,7 +41,11 @@ class PullContentsMetadata(UniversalBaseModel):
41
41
  runner_config: Optional[RunnerConfig] = None
42
42
  deployment_id: Optional[UUID] = None
43
43
  deployment_name: Optional[str] = None
44
+ deployment_history_item_id: Optional[UUID] = None
45
+ release_tag_id: Optional[UUID] = None
46
+ release_tag_name: Optional[str] = None
44
47
  workflow_sandbox_id: Optional[UUID] = None
48
+ workflow_version_id: Optional[UUID] = None
45
49
 
46
50
 
47
51
  def _resolve_workflow_config(
@@ -141,6 +145,7 @@ def pull_command(
141
145
  include_sandbox: Optional[bool] = None,
142
146
  target_directory: Optional[str] = None,
143
147
  workspace: Optional[str] = None,
148
+ release_tag: Optional[str] = None,
144
149
  ) -> None:
145
150
  load_dotenv(dotenv_path=os.path.join(os.getcwd(), ".env"))
146
151
  logger = load_cli_logger()
@@ -194,6 +199,7 @@ def pull_command(
194
199
 
195
200
  response = client.workflows.pull(
196
201
  pk,
202
+ release_tag=release_tag,
197
203
  request_options={"additional_query_parameters": query_parameters},
198
204
  )
199
205
 
@@ -201,16 +207,42 @@ def pull_command(
201
207
  zip_bytes = b"".join(response)
202
208
  except ApiError as e:
203
209
  if e.status_code == 401 or e.status_code == 403:
204
- raise Exception("Please make sure your `VELLUM_API_KEY` environment variable is set correctly.")
210
+ handle_cli_error(
211
+ logger,
212
+ title="Authentication failed",
213
+ message="Unable to authenticate with the Vellum API.",
214
+ suggestion="Please make sure your `VELLUM_API_KEY` environment variable is set correctly and that you have access to this workflow.", # noqa: E501
215
+ )
216
+
217
+ if e.status_code == 404:
218
+ handle_cli_error(
219
+ logger,
220
+ title="Workflow not found",
221
+ message=f"The workflow with ID '{pk}' could not be found.",
222
+ suggestion="Please verify the workflow ID is correct and that you have access to it in your workspace.",
223
+ )
205
224
 
206
225
  if e.status_code == 500:
207
- raise Exception(
208
- "The Pull API failed with an unexpected error. Please try again later and contact support if the problem persists." # noqa: E501
226
+ handle_cli_error(
227
+ logger,
228
+ title="Server error occurred",
229
+ message="The Vellum API encountered an internal server error while processing your request.",
230
+ suggestion="Please try again in a few moments. If the problem persists, contact Vellum support with the workflow ID and timestamp.", # noqa: E501
209
231
  )
210
232
 
211
- # TODO: We should return an Origin header in to validate this case
212
- raise Exception(
213
- "The API we tried to pull is invalid. Please make sure your `VELLUM_API_URL` environment variable is set correctly." # noqa: E501
233
+ if e.status_code == 502 or e.status_code == 503 or e.status_code == 504:
234
+ handle_cli_error(
235
+ logger,
236
+ title="Service temporarily unavailable",
237
+ message="The Vellum API is temporarily unavailable or experiencing high load.",
238
+ suggestion="Please wait a moment and try again. If the issue continues, check the Vellum status page or contact support.", # noqa: E501
239
+ )
240
+
241
+ handle_cli_error(
242
+ logger,
243
+ title="API request failed",
244
+ message=f"The API request failed with status code {e.status_code}.",
245
+ suggestion="Please verify your `VELLUM_API_URL` environment variable is set correctly and try again.",
214
246
  )
215
247
 
216
248
  zip_buffer = io.BytesIO(zip_bytes)
@@ -231,10 +263,11 @@ def pull_command(
231
263
  workflow_config.container_image_tag = "latest"
232
264
  if not workflow_config.workflow_sandbox_id and pull_contents_metadata.workflow_sandbox_id:
233
265
  workflow_config.workflow_sandbox_id = str(pull_contents_metadata.workflow_sandbox_id)
234
- if not workflow_config.module and workflow_deployment and pull_contents_metadata.deployment_name:
235
- workflow_config.module = snake_case(pull_contents_metadata.deployment_name)
236
- if not workflow_config.module and pull_contents_metadata.label:
237
- workflow_config.module = snake_case(pull_contents_metadata.label)
266
+ if not workflow_config.module:
267
+ deployment_name = pull_contents_metadata.deployment_name if workflow_deployment else None
268
+ workflow_config.module = create_module_name(
269
+ deployment_name=deployment_name, label=pull_contents_metadata.label
270
+ )
238
271
 
239
272
  # Save or update the deployment info when pulling with --workflow-deployment
240
273
  if workflow_deployment:
@@ -299,8 +332,11 @@ def pull_command(
299
332
  logger.info(f"Writing to {target_file}...")
300
333
  target.write(content)
301
334
  except zipfile.BadZipFile:
302
- raise Exception(
303
- "The API we tried to pull from returned an invalid zip file. Please make sure your `VELLUM_API_URL` environment variable is set correctly." # noqa: E501
335
+ handle_cli_error(
336
+ logger,
337
+ title="Invalid response format",
338
+ message="The API returned an invalid zip file format.",
339
+ suggestion="Please verify your `VELLUM_API_URL` environment variable is set correctly and try again.",
304
340
  )
305
341
 
306
342
  if include_json: