vellum-ai 1.1.2__py3-none-any.whl → 1.1.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. vellum/__init__.py +18 -0
  2. vellum/client/README.md +77 -0
  3. vellum/client/__init__.py +149 -600
  4. vellum/client/core/__init__.py +2 -0
  5. vellum/client/core/api_error.py +13 -5
  6. vellum/client/core/client_wrapper.py +16 -4
  7. vellum/client/core/force_multipart.py +16 -0
  8. vellum/client/core/http_client.py +70 -24
  9. vellum/client/core/http_response.py +19 -11
  10. vellum/client/core/pydantic_utilities.py +71 -114
  11. vellum/client/core/serialization.py +6 -1
  12. vellum/client/errors/__init__.py +2 -0
  13. vellum/client/errors/bad_request_error.py +4 -3
  14. vellum/client/errors/forbidden_error.py +4 -3
  15. vellum/client/errors/internal_server_error.py +4 -3
  16. vellum/client/errors/not_found_error.py +4 -3
  17. vellum/client/raw_client.py +1041 -128
  18. vellum/client/reference.md +692 -19
  19. vellum/client/resources/__init__.py +2 -0
  20. vellum/client/resources/ad_hoc/__init__.py +2 -0
  21. vellum/client/resources/ad_hoc/client.py +37 -195
  22. vellum/client/resources/ad_hoc/raw_client.py +322 -31
  23. vellum/client/resources/container_images/__init__.py +2 -0
  24. vellum/client/resources/container_images/client.py +26 -49
  25. vellum/client/resources/container_images/raw_client.py +23 -24
  26. vellum/client/resources/deployments/__init__.py +2 -0
  27. vellum/client/resources/deployments/client.py +55 -102
  28. vellum/client/resources/deployments/raw_client.py +73 -66
  29. vellum/client/resources/deployments/types/__init__.py +2 -0
  30. vellum/client/resources/document_indexes/__init__.py +2 -0
  31. vellum/client/resources/document_indexes/client.py +43 -100
  32. vellum/client/resources/document_indexes/raw_client.py +42 -43
  33. vellum/client/resources/document_indexes/types/__init__.py +2 -0
  34. vellum/client/resources/documents/__init__.py +2 -0
  35. vellum/client/resources/documents/client.py +29 -52
  36. vellum/client/resources/documents/raw_client.py +51 -44
  37. vellum/client/resources/folder_entities/__init__.py +2 -0
  38. vellum/client/resources/folder_entities/client.py +16 -21
  39. vellum/client/resources/folder_entities/raw_client.py +15 -16
  40. vellum/client/resources/folder_entities/types/__init__.py +2 -0
  41. vellum/client/resources/metric_definitions/__init__.py +2 -0
  42. vellum/client/resources/metric_definitions/client.py +16 -27
  43. vellum/client/resources/metric_definitions/raw_client.py +17 -18
  44. vellum/client/resources/ml_models/__init__.py +2 -0
  45. vellum/client/resources/ml_models/client.py +7 -14
  46. vellum/client/resources/ml_models/raw_client.py +11 -12
  47. vellum/client/resources/organizations/__init__.py +2 -0
  48. vellum/client/resources/organizations/client.py +7 -12
  49. vellum/client/resources/organizations/raw_client.py +10 -11
  50. vellum/client/resources/prompts/__init__.py +2 -0
  51. vellum/client/resources/prompts/client.py +12 -19
  52. vellum/client/resources/prompts/raw_client.py +40 -33
  53. vellum/client/resources/sandboxes/__init__.py +2 -0
  54. vellum/client/resources/sandboxes/client.py +17 -34
  55. vellum/client/resources/sandboxes/raw_client.py +20 -21
  56. vellum/client/resources/test_suite_runs/__init__.py +2 -0
  57. vellum/client/resources/test_suite_runs/client.py +19 -34
  58. vellum/client/resources/test_suite_runs/raw_client.py +20 -21
  59. vellum/client/resources/test_suites/__init__.py +2 -0
  60. vellum/client/resources/test_suites/client.py +26 -100
  61. vellum/client/resources/test_suites/raw_client.py +172 -21
  62. vellum/client/resources/workflow_deployments/__init__.py +2 -0
  63. vellum/client/resources/workflow_deployments/client.py +61 -120
  64. vellum/client/resources/workflow_deployments/raw_client.py +48 -49
  65. vellum/client/resources/workflow_deployments/types/__init__.py +2 -0
  66. vellum/client/resources/workflow_executions/__init__.py +2 -0
  67. vellum/client/resources/workflow_executions/client.py +8 -13
  68. vellum/client/resources/workflow_executions/raw_client.py +11 -12
  69. vellum/client/resources/workflow_sandboxes/__init__.py +2 -0
  70. vellum/client/resources/workflow_sandboxes/client.py +14 -23
  71. vellum/client/resources/workflow_sandboxes/raw_client.py +16 -17
  72. vellum/client/resources/workflow_sandboxes/types/__init__.py +2 -0
  73. vellum/client/resources/workflows/__init__.py +2 -0
  74. vellum/client/resources/workflows/client.py +16 -16
  75. vellum/client/resources/workflows/raw_client.py +75 -57
  76. vellum/client/resources/workspace_secrets/__init__.py +2 -0
  77. vellum/client/resources/workspace_secrets/client.py +11 -28
  78. vellum/client/resources/workspace_secrets/raw_client.py +15 -16
  79. vellum/client/resources/workspaces/__init__.py +2 -0
  80. vellum/client/resources/workspaces/client.py +7 -12
  81. vellum/client/resources/workspaces/raw_client.py +10 -11
  82. vellum/client/types/__init__.py +18 -0
  83. vellum/client/types/ad_hoc_execute_prompt_event.py +3 -2
  84. vellum/client/types/ad_hoc_expand_meta.py +2 -2
  85. vellum/client/types/ad_hoc_fulfilled_prompt_execution_meta.py +3 -3
  86. vellum/client/types/ad_hoc_initiated_prompt_execution_meta.py +2 -2
  87. vellum/client/types/ad_hoc_rejected_prompt_execution_meta.py +3 -3
  88. vellum/client/types/ad_hoc_streaming_prompt_execution_meta.py +2 -2
  89. vellum/client/types/api_node_result.py +3 -3
  90. vellum/client/types/api_node_result_data.py +4 -4
  91. vellum/client/types/api_request_parent_context.py +11 -11
  92. vellum/client/types/array_chat_message_content.py +3 -3
  93. vellum/client/types/array_chat_message_content_item.py +7 -4
  94. vellum/client/types/array_chat_message_content_item_request.py +7 -4
  95. vellum/client/types/array_chat_message_content_request.py +3 -3
  96. vellum/client/types/array_input.py +12 -6
  97. vellum/client/types/array_vellum_value.py +4 -4
  98. vellum/client/types/array_vellum_value_request.py +4 -4
  99. vellum/client/types/audio_chat_message_content.py +3 -3
  100. vellum/client/types/audio_chat_message_content_request.py +3 -3
  101. vellum/client/types/audio_prompt_block.py +4 -4
  102. vellum/client/types/audio_vellum_value.py +3 -3
  103. vellum/client/types/audio_vellum_value_request.py +3 -3
  104. vellum/client/types/base_output.py +2 -2
  105. vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large.py +2 -2
  106. vellum/client/types/basic_vectorizer_intfloat_multilingual_e_5_large_request.py +2 -2
  107. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1.py +2 -2
  108. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1_request.py +2 -2
  109. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1.py +2 -2
  110. vellum/client/types/basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1_request.py +2 -2
  111. vellum/client/types/chat_history_input.py +3 -3
  112. vellum/client/types/chat_history_input_request.py +3 -3
  113. vellum/client/types/chat_history_vellum_value.py +3 -3
  114. vellum/client/types/chat_history_vellum_value_request.py +3 -3
  115. vellum/client/types/chat_message.py +4 -4
  116. vellum/client/types/chat_message_content.py +7 -4
  117. vellum/client/types/chat_message_content_request.py +7 -4
  118. vellum/client/types/chat_message_prompt_block.py +7 -7
  119. vellum/client/types/chat_message_request.py +4 -4
  120. vellum/client/types/code_execution_node_array_result.py +11 -5
  121. vellum/client/types/code_execution_node_chat_history_result.py +3 -3
  122. vellum/client/types/code_execution_node_error_result.py +3 -3
  123. vellum/client/types/code_execution_node_function_call_result.py +3 -3
  124. vellum/client/types/code_execution_node_json_result.py +2 -2
  125. vellum/client/types/code_execution_node_number_result.py +2 -2
  126. vellum/client/types/code_execution_node_result.py +10 -4
  127. vellum/client/types/code_execution_node_result_data.py +10 -4
  128. vellum/client/types/code_execution_node_result_output.py +6 -5
  129. vellum/client/types/code_execution_node_search_results_result.py +3 -3
  130. vellum/client/types/code_execution_node_string_result.py +2 -2
  131. vellum/client/types/code_execution_package.py +2 -2
  132. vellum/client/types/code_executor_input.py +7 -6
  133. vellum/client/types/code_executor_response.py +11 -5
  134. vellum/client/types/code_executor_secret_input.py +3 -3
  135. vellum/client/types/code_resource_definition.py +3 -3
  136. vellum/client/types/compile_prompt_deployment_expand_meta_request.py +2 -2
  137. vellum/client/types/compile_prompt_meta.py +2 -2
  138. vellum/client/types/conditional_node_result.py +3 -3
  139. vellum/client/types/conditional_node_result_data.py +2 -2
  140. vellum/client/types/container_image_build_config.py +3 -3
  141. vellum/client/types/container_image_container_image_tag.py +2 -2
  142. vellum/client/types/container_image_read.py +5 -5
  143. vellum/client/types/create_test_suite_test_case_request.py +9 -3
  144. vellum/client/types/deployment_history_item.py +10 -4
  145. vellum/client/types/deployment_provider_payload_response.py +4 -4
  146. vellum/client/types/deployment_read.py +10 -4
  147. vellum/client/types/deployment_release_tag_deployment_history_item.py +2 -2
  148. vellum/client/types/deployment_release_tag_read.py +4 -4
  149. vellum/client/types/docker_service_token.py +2 -2
  150. vellum/client/types/document_chat_message_content.py +3 -3
  151. vellum/client/types/document_chat_message_content_request.py +3 -3
  152. vellum/client/types/document_document_to_document_index.py +3 -3
  153. vellum/client/types/document_index_chunking.py +1 -0
  154. vellum/client/types/document_index_chunking_request.py +1 -0
  155. vellum/client/types/document_index_indexing_config.py +4 -4
  156. vellum/client/types/document_index_indexing_config_request.py +4 -4
  157. vellum/client/types/document_index_read.py +4 -4
  158. vellum/client/types/document_prompt_block.py +4 -4
  159. vellum/client/types/document_read.py +4 -4
  160. vellum/client/types/document_vellum_value.py +3 -3
  161. vellum/client/types/document_vellum_value_request.py +3 -3
  162. vellum/client/types/enriched_normalized_completion.py +3 -3
  163. vellum/client/types/ephemeral_prompt_cache_config.py +3 -3
  164. vellum/client/types/error_input.py +3 -3
  165. vellum/client/types/error_vellum_value.py +3 -3
  166. vellum/client/types/error_vellum_value_request.py +3 -3
  167. vellum/client/types/execute_api_request_bearer_token.py +1 -0
  168. vellum/client/types/execute_api_request_headers_value.py +1 -0
  169. vellum/client/types/execute_api_response.py +5 -5
  170. vellum/client/types/execute_prompt_event.py +3 -2
  171. vellum/client/types/execute_prompt_response.py +1 -0
  172. vellum/client/types/execute_workflow_response.py +10 -4
  173. vellum/client/types/execute_workflow_workflow_result_event.py +1 -0
  174. vellum/client/types/execution_array_vellum_value.py +12 -6
  175. vellum/client/types/execution_chat_history_vellum_value.py +3 -3
  176. vellum/client/types/execution_error_vellum_value.py +3 -3
  177. vellum/client/types/execution_function_call_vellum_value.py +3 -3
  178. vellum/client/types/execution_json_vellum_value.py +3 -3
  179. vellum/client/types/execution_number_vellum_value.py +3 -3
  180. vellum/client/types/execution_search_results_vellum_value.py +3 -3
  181. vellum/client/types/execution_string_vellum_value.py +3 -3
  182. vellum/client/types/execution_thinking_vellum_value.py +3 -3
  183. vellum/client/types/execution_vellum_value.py +6 -5
  184. vellum/client/types/external_input_descriptor.py +3 -3
  185. vellum/client/types/external_parent_context.py +11 -11
  186. vellum/client/types/external_test_case_execution.py +10 -4
  187. vellum/client/types/external_test_case_execution_request.py +10 -4
  188. vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15.py +2 -2
  189. vellum/client/types/fast_embed_vectorizer_baai_bge_small_en_v_15_request.py +2 -2
  190. vellum/client/types/folder_entity.py +4 -3
  191. vellum/client/types/folder_entity_dataset.py +3 -3
  192. vellum/client/types/folder_entity_dataset_data.py +3 -3
  193. vellum/client/types/folder_entity_document_index.py +3 -3
  194. vellum/client/types/folder_entity_document_index_data.py +4 -4
  195. vellum/client/types/folder_entity_folder.py +3 -3
  196. vellum/client/types/folder_entity_folder_data.py +2 -2
  197. vellum/client/types/folder_entity_prompt_sandbox.py +3 -3
  198. vellum/client/types/folder_entity_prompt_sandbox_data.py +3 -3
  199. vellum/client/types/folder_entity_test_suite.py +3 -3
  200. vellum/client/types/folder_entity_test_suite_data.py +3 -3
  201. vellum/client/types/folder_entity_workflow_sandbox.py +3 -3
  202. vellum/client/types/folder_entity_workflow_sandbox_data.py +3 -3
  203. vellum/client/types/fulfilled_ad_hoc_execute_prompt_event.py +4 -4
  204. vellum/client/types/fulfilled_execute_prompt_event.py +4 -4
  205. vellum/client/types/fulfilled_execute_prompt_response.py +3 -3
  206. vellum/client/types/fulfilled_execute_workflow_workflow_result_event.py +11 -5
  207. vellum/client/types/fulfilled_prompt_execution_meta.py +3 -3
  208. vellum/client/types/fulfilled_workflow_node_result_event.py +12 -6
  209. vellum/client/types/function_call.py +2 -2
  210. vellum/client/types/function_call_chat_message_content.py +3 -3
  211. vellum/client/types/function_call_chat_message_content_request.py +3 -3
  212. vellum/client/types/function_call_chat_message_content_value.py +2 -2
  213. vellum/client/types/function_call_chat_message_content_value_request.py +2 -2
  214. vellum/client/types/function_call_input.py +3 -3
  215. vellum/client/types/function_call_prompt_block.py +4 -4
  216. vellum/client/types/function_call_request.py +2 -2
  217. vellum/client/types/function_call_vellum_value.py +3 -3
  218. vellum/client/types/function_call_vellum_value_request.py +3 -3
  219. vellum/client/types/function_definition.py +4 -4
  220. vellum/client/types/generate_options_request.py +3 -3
  221. vellum/client/types/generate_request.py +2 -2
  222. vellum/client/types/generate_response.py +3 -3
  223. vellum/client/types/generate_result.py +3 -3
  224. vellum/client/types/generate_result_data.py +3 -3
  225. vellum/client/types/generate_result_error.py +3 -3
  226. vellum/client/types/generate_stream_response.py +3 -3
  227. vellum/client/types/generate_stream_result.py +4 -4
  228. vellum/client/types/generate_stream_result_data.py +3 -3
  229. vellum/client/types/google_vertex_ai_vectorizer_config.py +2 -2
  230. vellum/client/types/google_vertex_ai_vectorizer_config_request.py +2 -2
  231. vellum/client/types/google_vertex_ai_vectorizer_gemini_embedding_001.py +3 -3
  232. vellum/client/types/google_vertex_ai_vectorizer_gemini_embedding_001_request.py +3 -3
  233. vellum/client/types/google_vertex_ai_vectorizer_text_embedding_004.py +3 -3
  234. vellum/client/types/google_vertex_ai_vectorizer_text_embedding_004_request.py +3 -3
  235. vellum/client/types/google_vertex_ai_vectorizer_text_multilingual_embedding_002.py +3 -3
  236. vellum/client/types/google_vertex_ai_vectorizer_text_multilingual_embedding_002_request.py +3 -3
  237. vellum/client/types/hkunlp_instructor_xl_vectorizer.py +3 -3
  238. vellum/client/types/hkunlp_instructor_xl_vectorizer_request.py +3 -3
  239. vellum/client/types/image_chat_message_content.py +3 -3
  240. vellum/client/types/image_chat_message_content_request.py +3 -3
  241. vellum/client/types/image_prompt_block.py +4 -4
  242. vellum/client/types/image_vellum_value.py +3 -3
  243. vellum/client/types/image_vellum_value_request.py +3 -3
  244. vellum/client/types/indexing_config_vectorizer.py +7 -6
  245. vellum/client/types/indexing_config_vectorizer_request.py +7 -6
  246. vellum/client/types/initiated_ad_hoc_execute_prompt_event.py +3 -3
  247. vellum/client/types/initiated_execute_prompt_event.py +3 -3
  248. vellum/client/types/initiated_prompt_execution_meta.py +2 -2
  249. vellum/client/types/initiated_workflow_node_result_event.py +12 -6
  250. vellum/client/types/instructor_vectorizer_config.py +2 -2
  251. vellum/client/types/instructor_vectorizer_config_request.py +2 -2
  252. vellum/client/types/invoked_port.py +2 -2
  253. vellum/client/types/jinja_prompt_block.py +4 -4
  254. vellum/client/types/json_input.py +3 -3
  255. vellum/client/types/json_input_request.py +3 -3
  256. vellum/client/types/json_vellum_value.py +2 -2
  257. vellum/client/types/json_vellum_value_request.py +2 -2
  258. vellum/client/types/map_node_result.py +3 -3
  259. vellum/client/types/map_node_result_data.py +3 -3
  260. vellum/client/types/merge_node_result.py +3 -3
  261. vellum/client/types/merge_node_result_data.py +2 -2
  262. vellum/client/types/metadata_filter_config_request.py +12 -6
  263. vellum/client/types/metadata_filter_rule_request.py +5 -5
  264. vellum/client/types/metadata_filters_request.py +1 -0
  265. vellum/client/types/metric_definition_execution.py +10 -4
  266. vellum/client/types/metric_definition_history_item.py +10 -4
  267. vellum/client/types/metric_definition_input.py +3 -2
  268. vellum/client/types/metric_node_result.py +2 -2
  269. vellum/client/types/ml_model_read.py +6 -3
  270. vellum/client/types/ml_model_usage.py +2 -2
  271. vellum/client/types/ml_model_usage_wrapper.py +3 -3
  272. vellum/client/types/named_scenario_input_chat_history_variable_value_request.py +3 -3
  273. vellum/client/types/named_scenario_input_json_variable_value_request.py +2 -2
  274. vellum/client/types/named_scenario_input_request.py +3 -2
  275. vellum/client/types/named_scenario_input_string_variable_value_request.py +2 -2
  276. vellum/client/types/named_test_case_array_variable_value.py +11 -5
  277. vellum/client/types/named_test_case_array_variable_value_request.py +11 -5
  278. vellum/client/types/named_test_case_chat_history_variable_value.py +3 -3
  279. vellum/client/types/named_test_case_chat_history_variable_value_request.py +3 -3
  280. vellum/client/types/named_test_case_error_variable_value.py +3 -3
  281. vellum/client/types/named_test_case_error_variable_value_request.py +3 -3
  282. vellum/client/types/named_test_case_function_call_variable_value.py +3 -3
  283. vellum/client/types/named_test_case_function_call_variable_value_request.py +3 -3
  284. vellum/client/types/named_test_case_json_variable_value.py +2 -2
  285. vellum/client/types/named_test_case_json_variable_value_request.py +2 -2
  286. vellum/client/types/named_test_case_number_variable_value.py +2 -2
  287. vellum/client/types/named_test_case_number_variable_value_request.py +2 -2
  288. vellum/client/types/named_test_case_search_results_variable_value.py +3 -3
  289. vellum/client/types/named_test_case_search_results_variable_value_request.py +3 -3
  290. vellum/client/types/named_test_case_string_variable_value.py +2 -2
  291. vellum/client/types/named_test_case_string_variable_value_request.py +2 -2
  292. vellum/client/types/named_test_case_variable_value.py +6 -5
  293. vellum/client/types/named_test_case_variable_value_request.py +6 -5
  294. vellum/client/types/node_execution_fulfilled_body.py +4 -4
  295. vellum/client/types/node_execution_fulfilled_event.py +22 -16
  296. vellum/client/types/node_execution_initiated_body.py +3 -3
  297. vellum/client/types/node_execution_initiated_event.py +22 -16
  298. vellum/client/types/node_execution_paused_body.py +3 -3
  299. vellum/client/types/node_execution_paused_event.py +22 -16
  300. vellum/client/types/node_execution_rejected_body.py +4 -4
  301. vellum/client/types/node_execution_rejected_event.py +22 -16
  302. vellum/client/types/node_execution_resumed_body.py +3 -3
  303. vellum/client/types/node_execution_resumed_event.py +22 -16
  304. vellum/client/types/node_execution_span.py +21 -13
  305. vellum/client/types/node_execution_span_attributes.py +2 -2
  306. vellum/client/types/node_execution_streaming_body.py +4 -4
  307. vellum/client/types/node_execution_streaming_event.py +22 -16
  308. vellum/client/types/node_input_compiled_array_value.py +11 -5
  309. vellum/client/types/node_input_compiled_chat_history_value.py +3 -3
  310. vellum/client/types/node_input_compiled_error_value.py +3 -3
  311. vellum/client/types/node_input_compiled_function_call_value.py +3 -3
  312. vellum/client/types/node_input_compiled_json_value.py +2 -2
  313. vellum/client/types/node_input_compiled_number_value.py +2 -2
  314. vellum/client/types/node_input_compiled_search_results_value.py +3 -3
  315. vellum/client/types/node_input_compiled_secret_value.py +3 -3
  316. vellum/client/types/node_input_compiled_string_value.py +2 -2
  317. vellum/client/types/node_input_variable_compiled_value.py +6 -5
  318. vellum/client/types/node_output_compiled_array_value.py +12 -6
  319. vellum/client/types/node_output_compiled_chat_history_value.py +3 -3
  320. vellum/client/types/node_output_compiled_error_value.py +3 -3
  321. vellum/client/types/node_output_compiled_function_call_value.py +3 -3
  322. vellum/client/types/node_output_compiled_json_value.py +3 -3
  323. vellum/client/types/node_output_compiled_number_value.py +3 -3
  324. vellum/client/types/node_output_compiled_search_results_value.py +3 -3
  325. vellum/client/types/node_output_compiled_string_value.py +3 -3
  326. vellum/client/types/node_output_compiled_thinking_value.py +3 -3
  327. vellum/client/types/node_output_compiled_value.py +6 -5
  328. vellum/client/types/node_parent_context.py +12 -12
  329. vellum/client/types/normalized_log_probs.py +3 -3
  330. vellum/client/types/normalized_token_log_probs.py +2 -2
  331. vellum/client/types/number_input.py +3 -3
  332. vellum/client/types/number_vellum_value.py +2 -2
  333. vellum/client/types/number_vellum_value_request.py +2 -2
  334. vellum/client/types/open_ai_vectorizer_config.py +3 -3
  335. vellum/client/types/open_ai_vectorizer_config_request.py +3 -3
  336. vellum/client/types/open_ai_vectorizer_text_embedding_3_large.py +3 -3
  337. vellum/client/types/open_ai_vectorizer_text_embedding_3_large_request.py +3 -3
  338. vellum/client/types/open_ai_vectorizer_text_embedding_3_small.py +3 -3
  339. vellum/client/types/open_ai_vectorizer_text_embedding_3_small_request.py +3 -3
  340. vellum/client/types/open_ai_vectorizer_text_embedding_ada_002.py +3 -3
  341. vellum/client/types/open_ai_vectorizer_text_embedding_ada_002_request.py +3 -3
  342. vellum/client/types/organization_read.py +4 -4
  343. vellum/client/types/paginated_container_image_read_list.py +3 -3
  344. vellum/client/types/paginated_deployment_release_tag_read_list.py +3 -3
  345. vellum/client/types/paginated_document_index_read_list.py +3 -3
  346. vellum/client/types/paginated_folder_entity_list.py +3 -3
  347. vellum/client/types/paginated_slim_deployment_read_list.py +10 -4
  348. vellum/client/types/paginated_slim_document_list.py +3 -3
  349. vellum/client/types/paginated_slim_workflow_deployment_list.py +10 -4
  350. vellum/client/types/paginated_test_suite_run_execution_list.py +10 -4
  351. vellum/client/types/paginated_test_suite_test_case_list.py +10 -4
  352. vellum/client/types/paginated_workflow_release_tag_read_list.py +3 -3
  353. vellum/client/types/paginated_workflow_sandbox_example_list.py +3 -3
  354. vellum/client/types/parent_context.py +5 -5
  355. vellum/client/types/pdf_search_result_meta_source.py +2 -2
  356. vellum/client/types/pdf_search_result_meta_source_request.py +2 -2
  357. vellum/client/types/plain_text_prompt_block.py +4 -4
  358. vellum/client/types/price.py +3 -3
  359. vellum/client/types/prompt_block.py +9 -6
  360. vellum/client/types/prompt_deployment_expand_meta_request.py +2 -2
  361. vellum/client/types/prompt_deployment_input_request.py +3 -2
  362. vellum/client/types/prompt_deployment_parent_context.py +11 -11
  363. vellum/client/types/prompt_deployment_release.py +6 -6
  364. vellum/client/types/prompt_deployment_release_prompt_deployment.py +2 -2
  365. vellum/client/types/prompt_deployment_release_prompt_version.py +4 -4
  366. vellum/client/types/prompt_exec_config.py +15 -9
  367. vellum/client/types/prompt_execution_meta.py +3 -3
  368. vellum/client/types/prompt_node_execution_meta.py +3 -3
  369. vellum/client/types/prompt_node_result.py +3 -3
  370. vellum/client/types/prompt_node_result_data.py +3 -3
  371. vellum/client/types/prompt_output.py +3 -2
  372. vellum/client/types/prompt_parameters.py +2 -2
  373. vellum/client/types/prompt_push_response.py +2 -2
  374. vellum/client/types/prompt_request_chat_history_input.py +3 -3
  375. vellum/client/types/prompt_request_input.py +3 -2
  376. vellum/client/types/prompt_request_json_input.py +3 -3
  377. vellum/client/types/prompt_request_string_input.py +3 -3
  378. vellum/client/types/prompt_settings.py +2 -2
  379. vellum/client/types/prompt_version_build_config_sandbox.py +2 -2
  380. vellum/client/types/raw_prompt_execution_overrides_request.py +2 -2
  381. vellum/client/types/reducto_chunker_config.py +2 -2
  382. vellum/client/types/reducto_chunker_config_request.py +2 -2
  383. vellum/client/types/reducto_chunking.py +3 -3
  384. vellum/client/types/reducto_chunking_request.py +3 -3
  385. vellum/client/types/rejected_ad_hoc_execute_prompt_event.py +4 -4
  386. vellum/client/types/rejected_execute_prompt_event.py +4 -4
  387. vellum/client/types/rejected_execute_prompt_response.py +3 -3
  388. vellum/client/types/rejected_execute_workflow_workflow_result_event.py +4 -4
  389. vellum/client/types/rejected_prompt_execution_meta.py +3 -3
  390. vellum/client/types/rejected_workflow_node_result_event.py +12 -6
  391. vellum/client/types/release_created_by.py +2 -2
  392. vellum/client/types/release_environment.py +2 -2
  393. vellum/client/types/release_release_tag.py +3 -3
  394. vellum/client/types/release_review_reviewer.py +2 -2
  395. vellum/client/types/release_tag_release.py +2 -2
  396. vellum/client/types/replace_test_suite_test_case_request.py +9 -3
  397. vellum/client/types/rich_text_child_block.py +2 -1
  398. vellum/client/types/rich_text_prompt_block.py +4 -4
  399. vellum/client/types/sandbox_scenario.py +3 -3
  400. vellum/client/types/scenario_input.py +3 -2
  401. vellum/client/types/scenario_input_chat_history_variable_value.py +3 -3
  402. vellum/client/types/scenario_input_json_variable_value.py +2 -2
  403. vellum/client/types/scenario_input_string_variable_value.py +2 -2
  404. vellum/client/types/search_filters_request.py +11 -5
  405. vellum/client/types/search_node_result.py +3 -3
  406. vellum/client/types/search_node_result_data.py +3 -3
  407. vellum/client/types/search_request_options_request.py +13 -7
  408. vellum/client/types/search_response.py +3 -3
  409. vellum/client/types/search_result.py +3 -3
  410. vellum/client/types/search_result_document.py +2 -2
  411. vellum/client/types/search_result_document_request.py +2 -2
  412. vellum/client/types/search_result_merging_request.py +2 -2
  413. vellum/client/types/search_result_meta.py +3 -3
  414. vellum/client/types/search_result_meta_request.py +3 -3
  415. vellum/client/types/search_result_request.py +3 -3
  416. vellum/client/types/search_results_input.py +3 -3
  417. vellum/client/types/search_results_vellum_value.py +3 -3
  418. vellum/client/types/search_results_vellum_value_request.py +3 -3
  419. vellum/client/types/search_weights_request.py +2 -2
  420. vellum/client/types/sentence_chunker_config.py +2 -2
  421. vellum/client/types/sentence_chunker_config_request.py +2 -2
  422. vellum/client/types/sentence_chunking.py +3 -3
  423. vellum/client/types/sentence_chunking_request.py +3 -3
  424. vellum/client/types/slim_deployment_read.py +10 -4
  425. vellum/client/types/slim_document.py +5 -5
  426. vellum/client/types/slim_document_document_to_document_index.py +3 -3
  427. vellum/client/types/slim_release_review.py +4 -4
  428. vellum/client/types/slim_workflow_deployment.py +11 -5
  429. vellum/client/types/slim_workflow_execution_read.py +21 -15
  430. vellum/client/types/span_link.py +12 -12
  431. vellum/client/types/streaming_ad_hoc_execute_prompt_event.py +4 -4
  432. vellum/client/types/streaming_execute_prompt_event.py +3 -3
  433. vellum/client/types/streaming_prompt_execution_meta.py +2 -2
  434. vellum/client/types/streaming_workflow_node_result_event.py +12 -6
  435. vellum/client/types/string_chat_message_content.py +2 -2
  436. vellum/client/types/string_chat_message_content_request.py +2 -2
  437. vellum/client/types/string_input.py +3 -3
  438. vellum/client/types/string_input_request.py +3 -3
  439. vellum/client/types/string_vellum_value.py +2 -2
  440. vellum/client/types/string_vellum_value_request.py +2 -2
  441. vellum/client/types/submit_completion_actual_request.py +3 -3
  442. vellum/client/types/submit_workflow_execution_actual_request.py +3 -2
  443. vellum/client/types/subworkflow_node_result.py +3 -3
  444. vellum/client/types/subworkflow_node_result_data.py +2 -2
  445. vellum/client/types/templating_node_array_result.py +11 -5
  446. vellum/client/types/templating_node_chat_history_result.py +3 -3
  447. vellum/client/types/templating_node_error_result.py +3 -3
  448. vellum/client/types/templating_node_function_call_result.py +3 -3
  449. vellum/client/types/templating_node_json_result.py +2 -2
  450. vellum/client/types/templating_node_number_result.py +2 -2
  451. vellum/client/types/templating_node_result.py +10 -4
  452. vellum/client/types/templating_node_result_data.py +10 -4
  453. vellum/client/types/templating_node_result_output.py +6 -5
  454. vellum/client/types/templating_node_search_results_result.py +3 -3
  455. vellum/client/types/templating_node_string_result.py +2 -2
  456. vellum/client/types/terminal_node_array_result.py +11 -5
  457. vellum/client/types/terminal_node_chat_history_result.py +2 -2
  458. vellum/client/types/terminal_node_error_result.py +2 -2
  459. vellum/client/types/terminal_node_function_call_result.py +2 -2
  460. vellum/client/types/terminal_node_json_result.py +2 -2
  461. vellum/client/types/terminal_node_number_result.py +2 -2
  462. vellum/client/types/terminal_node_result.py +10 -4
  463. vellum/client/types/terminal_node_result_data.py +10 -4
  464. vellum/client/types/terminal_node_result_output.py +6 -5
  465. vellum/client/types/terminal_node_search_results_result.py +2 -2
  466. vellum/client/types/terminal_node_string_result.py +2 -2
  467. vellum/client/types/test_case_array_variable_value.py +11 -5
  468. vellum/client/types/test_case_chat_history_variable_value.py +3 -3
  469. vellum/client/types/test_case_error_variable_value.py +3 -3
  470. vellum/client/types/test_case_function_call_variable_value.py +3 -3
  471. vellum/client/types/test_case_json_variable_value.py +2 -2
  472. vellum/client/types/test_case_number_variable_value.py +2 -2
  473. vellum/client/types/test_case_search_results_variable_value.py +3 -3
  474. vellum/client/types/test_case_string_variable_value.py +2 -2
  475. vellum/client/types/test_case_variable_value.py +6 -5
  476. vellum/client/types/test_suite_run_deployment_release_tag_exec_config.py +3 -3
  477. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data.py +3 -3
  478. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_data_request.py +3 -3
  479. vellum/client/types/test_suite_run_deployment_release_tag_exec_config_request.py +3 -3
  480. vellum/client/types/test_suite_run_exec_config.py +2 -1
  481. vellum/client/types/test_suite_run_exec_config_request.py +2 -1
  482. vellum/client/types/test_suite_run_execution.py +11 -5
  483. vellum/client/types/test_suite_run_execution_array_output.py +11 -5
  484. vellum/client/types/test_suite_run_execution_chat_history_output.py +3 -3
  485. vellum/client/types/test_suite_run_execution_error_output.py +3 -3
  486. vellum/client/types/test_suite_run_execution_function_call_output.py +3 -3
  487. vellum/client/types/test_suite_run_execution_json_output.py +2 -2
  488. vellum/client/types/test_suite_run_execution_metric_definition.py +2 -2
  489. vellum/client/types/test_suite_run_execution_metric_result.py +11 -5
  490. vellum/client/types/test_suite_run_execution_number_output.py +2 -2
  491. vellum/client/types/test_suite_run_execution_output.py +6 -5
  492. vellum/client/types/test_suite_run_execution_search_results_output.py +3 -3
  493. vellum/client/types/test_suite_run_execution_string_output.py +2 -2
  494. vellum/client/types/test_suite_run_external_exec_config.py +10 -4
  495. vellum/client/types/test_suite_run_external_exec_config_data.py +10 -4
  496. vellum/client/types/test_suite_run_external_exec_config_data_request.py +10 -4
  497. vellum/client/types/test_suite_run_external_exec_config_request.py +10 -4
  498. vellum/client/types/test_suite_run_metric_array_output.py +11 -5
  499. vellum/client/types/test_suite_run_metric_error_output.py +3 -3
  500. vellum/client/types/test_suite_run_metric_json_output.py +2 -2
  501. vellum/client/types/test_suite_run_metric_number_output.py +2 -2
  502. vellum/client/types/test_suite_run_metric_output.py +5 -4
  503. vellum/client/types/test_suite_run_metric_string_output.py +2 -2
  504. vellum/client/types/test_suite_run_progress.py +2 -2
  505. vellum/client/types/test_suite_run_prompt_sandbox_exec_config_data_request.py +3 -3
  506. vellum/client/types/test_suite_run_prompt_sandbox_exec_config_request.py +3 -3
  507. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config.py +3 -3
  508. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data.py +3 -3
  509. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_data_request.py +3 -3
  510. vellum/client/types/test_suite_run_prompt_sandbox_history_item_exec_config_request.py +3 -3
  511. vellum/client/types/test_suite_run_read.py +12 -6
  512. vellum/client/types/test_suite_run_test_suite.py +2 -2
  513. vellum/client/types/test_suite_run_workflow_release_tag_exec_config.py +3 -3
  514. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_data.py +3 -3
  515. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_data_request.py +3 -3
  516. vellum/client/types/test_suite_run_workflow_release_tag_exec_config_request.py +3 -3
  517. vellum/client/types/test_suite_run_workflow_sandbox_exec_config_data_request.py +3 -3
  518. vellum/client/types/test_suite_run_workflow_sandbox_exec_config_request.py +3 -3
  519. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config.py +3 -3
  520. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data.py +3 -3
  521. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_data_request.py +3 -3
  522. vellum/client/types/test_suite_run_workflow_sandbox_history_item_exec_config_request.py +3 -3
  523. vellum/client/types/test_suite_test_case.py +10 -4
  524. vellum/client/types/test_suite_test_case_bulk_operation_request.py +2 -1
  525. vellum/client/types/test_suite_test_case_bulk_result.py +2 -1
  526. vellum/client/types/test_suite_test_case_create_bulk_operation_request.py +10 -4
  527. vellum/client/types/test_suite_test_case_created_bulk_result.py +3 -3
  528. vellum/client/types/test_suite_test_case_created_bulk_result_data.py +2 -2
  529. vellum/client/types/test_suite_test_case_delete_bulk_operation_data_request.py +2 -2
  530. vellum/client/types/test_suite_test_case_delete_bulk_operation_request.py +3 -3
  531. vellum/client/types/test_suite_test_case_deleted_bulk_result.py +3 -3
  532. vellum/client/types/test_suite_test_case_deleted_bulk_result_data.py +2 -2
  533. vellum/client/types/test_suite_test_case_rejected_bulk_result.py +2 -2
  534. vellum/client/types/test_suite_test_case_replace_bulk_operation_request.py +10 -4
  535. vellum/client/types/test_suite_test_case_replaced_bulk_result.py +3 -3
  536. vellum/client/types/test_suite_test_case_replaced_bulk_result_data.py +2 -2
  537. vellum/client/types/test_suite_test_case_upsert_bulk_operation_request.py +10 -4
  538. vellum/client/types/thinking_vellum_value.py +3 -3
  539. vellum/client/types/thinking_vellum_value_request.py +3 -3
  540. vellum/client/types/token_overlapping_window_chunker_config.py +2 -2
  541. vellum/client/types/token_overlapping_window_chunker_config_request.py +2 -2
  542. vellum/client/types/token_overlapping_window_chunking.py +3 -3
  543. vellum/client/types/token_overlapping_window_chunking_request.py +3 -3
  544. vellum/client/types/upload_document_response.py +3 -3
  545. vellum/client/types/upsert_test_suite_test_case_request.py +9 -3
  546. vellum/client/types/variable_prompt_block.py +4 -4
  547. vellum/client/types/vellum_audio.py +3 -3
  548. vellum/client/types/vellum_audio_request.py +3 -3
  549. vellum/client/types/vellum_code_resource_definition.py +2 -2
  550. vellum/client/types/vellum_document.py +2 -2
  551. vellum/client/types/vellum_document_request.py +2 -2
  552. vellum/client/types/vellum_error.py +3 -3
  553. vellum/client/types/vellum_error_request.py +3 -3
  554. vellum/client/types/vellum_image.py +2 -2
  555. vellum/client/types/vellum_image_request.py +2 -2
  556. vellum/client/types/vellum_node_execution_event.py +4 -3
  557. vellum/client/types/vellum_sdk_error.py +3 -3
  558. vellum/client/types/vellum_secret.py +2 -2
  559. vellum/client/types/vellum_span.py +2 -1
  560. vellum/client/types/vellum_value.py +11 -8
  561. vellum/client/types/vellum_value_logical_condition_group_request.py +6 -6
  562. vellum/client/types/vellum_value_logical_condition_request.py +13 -7
  563. vellum/client/types/vellum_value_logical_expression_request.py +2 -1
  564. vellum/client/types/vellum_value_request.py +11 -8
  565. vellum/client/types/vellum_variable.py +13 -7
  566. vellum/client/types/vellum_variable_extensions.py +2 -2
  567. vellum/client/types/vellum_variable_type.py +2 -1
  568. vellum/client/types/vellum_video.py +24 -0
  569. vellum/client/types/vellum_video_request.py +24 -0
  570. vellum/client/types/vellum_workflow_execution_event.py +4 -3
  571. vellum/client/types/video_chat_message_content.py +25 -0
  572. vellum/client/types/video_chat_message_content_request.py +25 -0
  573. vellum/client/types/video_prompt_block.py +29 -0
  574. vellum/client/types/video_vellum_value.py +25 -0
  575. vellum/client/types/video_vellum_value_request.py +25 -0
  576. vellum/client/types/workflow_deployment_event_executions_response.py +18 -12
  577. vellum/client/types/workflow_deployment_history_item.py +10 -4
  578. vellum/client/types/workflow_deployment_parent_context.py +11 -11
  579. vellum/client/types/workflow_deployment_read.py +11 -5
  580. vellum/client/types/workflow_deployment_release.py +13 -7
  581. vellum/client/types/workflow_deployment_release_workflow_deployment.py +2 -2
  582. vellum/client/types/workflow_deployment_release_workflow_version.py +10 -4
  583. vellum/client/types/workflow_error.py +1 -0
  584. vellum/client/types/workflow_event_error.py +3 -3
  585. vellum/client/types/workflow_event_execution_read.py +22 -16
  586. vellum/client/types/workflow_execution_actual.py +10 -4
  587. vellum/client/types/workflow_execution_actual_chat_history_request.py +2 -2
  588. vellum/client/types/workflow_execution_actual_json_request.py +2 -2
  589. vellum/client/types/workflow_execution_actual_string_request.py +2 -2
  590. vellum/client/types/workflow_execution_detail.py +22 -16
  591. vellum/client/types/workflow_execution_fulfilled_body.py +3 -3
  592. vellum/client/types/workflow_execution_fulfilled_event.py +22 -16
  593. vellum/client/types/workflow_execution_initiated_body.py +3 -3
  594. vellum/client/types/workflow_execution_initiated_event.py +22 -16
  595. vellum/client/types/workflow_execution_node_result_event.py +10 -4
  596. vellum/client/types/workflow_execution_paused_body.py +4 -4
  597. vellum/client/types/workflow_execution_paused_event.py +22 -16
  598. vellum/client/types/workflow_execution_rejected_body.py +4 -4
  599. vellum/client/types/workflow_execution_rejected_event.py +22 -16
  600. vellum/client/types/workflow_execution_resumed_body.py +3 -3
  601. vellum/client/types/workflow_execution_resumed_event.py +22 -16
  602. vellum/client/types/workflow_execution_snapshotted_body.py +3 -3
  603. vellum/client/types/workflow_execution_snapshotted_event.py +22 -16
  604. vellum/client/types/workflow_execution_span.py +20 -12
  605. vellum/client/types/workflow_execution_span_attributes.py +2 -2
  606. vellum/client/types/workflow_execution_streaming_body.py +4 -4
  607. vellum/client/types/workflow_execution_streaming_event.py +22 -16
  608. vellum/client/types/workflow_execution_usage_calculation_error.py +3 -3
  609. vellum/client/types/workflow_execution_usage_calculation_fulfilled_body.py +22 -0
  610. vellum/client/types/workflow_execution_usage_result.py +3 -3
  611. vellum/client/types/workflow_execution_view_online_eval_metric_result.py +10 -4
  612. vellum/client/types/workflow_execution_workflow_result_event.py +10 -4
  613. vellum/client/types/workflow_expand_meta_request.py +2 -2
  614. vellum/client/types/workflow_initialization_error.py +2 -2
  615. vellum/client/types/workflow_node_result_data.py +8 -7
  616. vellum/client/types/workflow_node_result_event.py +3 -2
  617. vellum/client/types/workflow_output.py +6 -5
  618. vellum/client/types/workflow_output_array.py +12 -6
  619. vellum/client/types/workflow_output_chat_history.py +3 -3
  620. vellum/client/types/workflow_output_error.py +3 -3
  621. vellum/client/types/workflow_output_function_call.py +3 -3
  622. vellum/client/types/workflow_output_image.py +3 -3
  623. vellum/client/types/workflow_output_json.py +3 -3
  624. vellum/client/types/workflow_output_number.py +3 -3
  625. vellum/client/types/workflow_output_search_results.py +3 -3
  626. vellum/client/types/workflow_output_string.py +3 -3
  627. vellum/client/types/workflow_parent_context.py +12 -12
  628. vellum/client/types/workflow_push_deployment_config_request.py +2 -2
  629. vellum/client/types/workflow_push_response.py +2 -2
  630. vellum/client/types/workflow_release_tag_read.py +4 -4
  631. vellum/client/types/workflow_release_tag_workflow_deployment_history_item.py +2 -2
  632. vellum/client/types/workflow_request_chat_history_input_request.py +3 -3
  633. vellum/client/types/workflow_request_input_request.py +3 -2
  634. vellum/client/types/workflow_request_json_input_request.py +3 -3
  635. vellum/client/types/workflow_request_number_input_request.py +3 -3
  636. vellum/client/types/workflow_request_string_input_request.py +3 -3
  637. vellum/client/types/workflow_result_event.py +13 -7
  638. vellum/client/types/workflow_result_event_output_data.py +7 -6
  639. vellum/client/types/workflow_result_event_output_data_array.py +12 -6
  640. vellum/client/types/workflow_result_event_output_data_chat_history.py +3 -3
  641. vellum/client/types/workflow_result_event_output_data_error.py +3 -3
  642. vellum/client/types/workflow_result_event_output_data_function_call.py +3 -3
  643. vellum/client/types/workflow_result_event_output_data_json.py +3 -3
  644. vellum/client/types/workflow_result_event_output_data_number.py +3 -3
  645. vellum/client/types/workflow_result_event_output_data_search_results.py +3 -3
  646. vellum/client/types/workflow_result_event_output_data_string.py +3 -3
  647. vellum/client/types/workflow_sandbox_example.py +2 -2
  648. vellum/client/types/workflow_sandbox_parent_context.py +11 -11
  649. vellum/client/types/workflow_stream_event.py +2 -1
  650. vellum/client/types/workspace_read.py +3 -3
  651. vellum/client/types/workspace_secret_read.py +3 -3
  652. vellum/core/force_multipart.py +3 -0
  653. vellum/prompts/blocks/compilation.py +22 -10
  654. vellum/types/vellum_video.py +3 -0
  655. vellum/types/vellum_video_request.py +3 -0
  656. vellum/types/video_chat_message_content.py +3 -0
  657. vellum/types/video_chat_message_content_request.py +3 -0
  658. vellum/types/video_prompt_block.py +3 -0
  659. vellum/types/video_vellum_value.py +3 -0
  660. vellum/types/video_vellum_value_request.py +3 -0
  661. vellum/types/workflow_execution_usage_calculation_fulfilled_body.py +3 -0
  662. vellum/workflows/events/node.py +25 -10
  663. vellum/workflows/events/tests/test_event.py +19 -19
  664. vellum/workflows/events/workflow.py +11 -0
  665. vellum/workflows/graph/graph.py +103 -1
  666. vellum/workflows/graph/tests/test_graph.py +99 -0
  667. vellum/workflows/nodes/bases/base.py +9 -1
  668. vellum/workflows/nodes/displayable/bases/utils.py +4 -2
  669. vellum/workflows/nodes/displayable/tool_calling_node/node.py +19 -18
  670. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py +17 -7
  671. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_utils.py +7 -7
  672. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +47 -80
  673. vellum/workflows/references/environment_variable.py +10 -0
  674. vellum/workflows/runner/runner.py +18 -2
  675. vellum/workflows/state/context.py +101 -12
  676. vellum/workflows/state/encoder.py +2 -4
  677. vellum/workflows/types/definition.py +11 -1
  678. vellum/workflows/types/tests/test_definition.py +19 -0
  679. vellum/workflows/utils/functions.py +1 -1
  680. vellum/workflows/utils/vellum_variables.py +9 -5
  681. vellum/workflows/workflows/base.py +12 -5
  682. {vellum_ai-1.1.2.dist-info → vellum_ai-1.1.4.dist-info}/METADATA +2 -2
  683. {vellum_ai-1.1.2.dist-info → vellum_ai-1.1.4.dist-info}/RECORD +693 -675
  684. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +1 -1
  685. vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +55 -1
  686. vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py +164 -47
  687. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_mcp_serialization.py +15 -49
  688. vellum_ee/workflows/display/types.py +14 -1
  689. vellum_ee/workflows/display/utils/expressions.py +13 -4
  690. vellum_ee/workflows/display/workflows/base_workflow_display.py +6 -19
  691. {vellum_ai-1.1.2.dist-info → vellum_ai-1.1.4.dist-info}/LICENSE +0 -0
  692. {vellum_ai-1.1.2.dist-info → vellum_ai-1.1.4.dist-info}/WHEEL +0 -0
  693. {vellum_ai-1.1.2.dist-info → vellum_ai-1.1.4.dist-info}/entry_points.txt +0 -0
@@ -2,98 +2,76 @@
2
2
 
3
3
  # nopycln: file
4
4
  import datetime as dt
5
- import typing
6
5
  from collections import defaultdict
6
+ from typing import Any, Callable, ClassVar, Dict, List, Mapping, Optional, Set, Tuple, Type, TypeVar, Union, cast
7
7
 
8
8
  import pydantic
9
9
  import logging
10
- import typing_extensions
11
- from .datetime_utils import serialize_datetime
12
- from .serialization import convert_and_respect_annotation_metadata
13
10
 
14
11
  logger = logging.getLogger(__name__)
15
12
 
16
13
  IS_PYDANTIC_V2 = pydantic.VERSION.startswith("2.")
17
14
 
18
15
  if IS_PYDANTIC_V2:
19
- # isort will try to reformat the comments on these imports, which breaks mypy
20
- # isort: off
21
- from pydantic.v1.datetime_parse import ( # type: ignore # pyright: ignore[reportMissingImports] # Pydantic v2
22
- parse_date as parse_date,
23
- )
24
- from pydantic.v1.datetime_parse import ( # pyright: ignore[reportMissingImports] # Pydantic v2
25
- parse_datetime as parse_datetime,
26
- )
27
- from pydantic.v1.json import ( # type: ignore # pyright: ignore[reportMissingImports] # Pydantic v2
28
- ENCODERS_BY_TYPE as encoders_by_type,
29
- )
30
- from pydantic.v1.typing import ( # type: ignore # pyright: ignore[reportMissingImports] # Pydantic v2
31
- get_args as get_args,
32
- )
33
- from pydantic.v1.typing import ( # pyright: ignore[reportMissingImports] # Pydantic v2
34
- get_origin as get_origin,
35
- )
36
- from pydantic.v1.typing import ( # pyright: ignore[reportMissingImports] # Pydantic v2
37
- is_literal_type as is_literal_type,
38
- )
39
- from pydantic.v1.typing import ( # pyright: ignore[reportMissingImports] # Pydantic v2
40
- is_union as is_union,
41
- )
42
- from pydantic.v1.fields import ModelField as ModelField # type: ignore # pyright: ignore[reportMissingImports] # Pydantic v2
16
+ from pydantic.v1.datetime_parse import parse_date as parse_date
17
+ from pydantic.v1.datetime_parse import parse_datetime as parse_datetime
18
+ from pydantic.v1.fields import ModelField as ModelField
19
+ from pydantic.v1.json import ENCODERS_BY_TYPE as encoders_by_type # type: ignore[attr-defined]
20
+ from pydantic.v1.typing import get_args as get_args
21
+ from pydantic.v1.typing import get_origin as get_origin
22
+ from pydantic.v1.typing import is_literal_type as is_literal_type
23
+ from pydantic.v1.typing import is_union as is_union
43
24
  else:
44
- from pydantic.datetime_parse import parse_date as parse_date # type: ignore # Pydantic v1
45
- from pydantic.datetime_parse import parse_datetime as parse_datetime # type: ignore # Pydantic v1
46
- from pydantic.fields import ModelField as ModelField # type: ignore # Pydantic v1
47
- from pydantic.json import ENCODERS_BY_TYPE as encoders_by_type # type: ignore # Pydantic v1
48
- from pydantic.typing import get_args as get_args # type: ignore # Pydantic v1
49
- from pydantic.typing import get_origin as get_origin # type: ignore # Pydantic v1
50
- from pydantic.typing import is_literal_type as is_literal_type # type: ignore # Pydantic v1
51
- from pydantic.typing import is_union as is_union # type: ignore # Pydantic v1
52
-
53
- # isort: on
25
+ from pydantic.datetime_parse import parse_date as parse_date # type: ignore[no-redef]
26
+ from pydantic.datetime_parse import parse_datetime as parse_datetime # type: ignore[no-redef]
27
+ from pydantic.fields import ModelField as ModelField # type: ignore[attr-defined, no-redef]
28
+ from pydantic.json import ENCODERS_BY_TYPE as encoders_by_type # type: ignore[no-redef]
29
+ from pydantic.typing import get_args as get_args # type: ignore[no-redef]
30
+ from pydantic.typing import get_origin as get_origin # type: ignore[no-redef]
31
+ from pydantic.typing import is_literal_type as is_literal_type # type: ignore[no-redef]
32
+ from pydantic.typing import is_union as is_union # type: ignore[no-redef]
54
33
 
34
+ from .datetime_utils import serialize_datetime
35
+ from .serialization import convert_and_respect_annotation_metadata
36
+ from typing_extensions import TypeAlias
55
37
 
56
- T = typing.TypeVar("T")
57
- Model = typing.TypeVar("Model", bound=pydantic.BaseModel)
58
- type_adapter_cache: typing.Dict[typing.Type, pydantic.TypeAdapter] = {}
38
+ T = TypeVar("T")
39
+ Model = TypeVar("Model", bound=pydantic.BaseModel)
40
+ type_adapter_cache: Dict[Type, pydantic.TypeAdapter] = {}
59
41
  annotated_types = {"ExecuteApiResponse"}
60
42
 
61
43
 
62
- def parse_obj_as(type_: typing.Type[T], object_: typing.Any, convert_metadata: bool = False) -> T:
44
+ def parse_obj_as(type_: Type[T], object_: Any) -> T:
63
45
  if hasattr(type_, "__name__") and type_.__name__ in annotated_types:
64
46
  dealiased_object = convert_and_respect_annotation_metadata(object_=object_, annotation=type_, direction="read")
65
47
  else:
66
48
  dealiased_object = object_
67
49
  if IS_PYDANTIC_V2:
68
- adapter = pydantic.TypeAdapter(type_) if type_ not in type_adapter_cache else type_adapter_cache[type_] # type: ignore # Pydantic v2
50
+ adapter = pydantic.TypeAdapter(type_) if type_ not in type_adapter_cache else type_adapter_cache[type_] # type: ignore[attr-defined]
69
51
  if type_ not in type_adapter_cache:
70
52
  type_adapter_cache[type_] = adapter
71
53
  return adapter.validate_python(dealiased_object)
72
- else:
73
- return pydantic.parse_obj_as(type_, dealiased_object)
54
+ return pydantic.parse_obj_as(type_, dealiased_object)
74
55
 
75
56
 
76
- def to_jsonable_with_fallback(
77
- obj: typing.Any, fallback_serializer: typing.Callable[[typing.Any], typing.Any]
78
- ) -> typing.Any:
57
+ def to_jsonable_with_fallback(obj: Any, fallback_serializer: Callable[[Any], Any]) -> Any:
79
58
  if IS_PYDANTIC_V2:
80
59
  from pydantic_core import to_jsonable_python
81
60
 
82
61
  return to_jsonable_python(obj, fallback=fallback_serializer)
83
- else:
84
- return fallback_serializer(obj)
62
+ return fallback_serializer(obj)
85
63
 
86
64
 
87
65
  class UniversalBaseModel(pydantic.BaseModel):
88
66
  if IS_PYDANTIC_V2:
89
- model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
67
+ model_config: ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( # type: ignore[typeddict-unknown-key]
90
68
  # Allow fields beginning with `model_` to be used in the model
91
69
  protected_namespaces=(),
92
- ) # type: ignore # Pydantic v2
70
+ )
93
71
 
94
- @pydantic.model_serializer(mode="wrap", when_used="json") # type: ignore # Pydantic v2
95
- def serialize_model(self, handler: pydantic.SerializerFunctionWrapHandler) -> typing.Any: # type: ignore # Pydantic v2
96
- serialized = handler(self)
72
+ @pydantic.model_serializer(mode="plain", when_used="json") # type: ignore[attr-defined]
73
+ def serialize_model(self) -> Any: # type: ignore[name-defined]
74
+ serialized = self.model_dump()
97
75
  data = {k: serialize_datetime(v) if isinstance(v, dt.datetime) else v for k, v in serialized.items()}
98
76
  return data
99
77
 
@@ -104,34 +82,28 @@ class UniversalBaseModel(pydantic.BaseModel):
104
82
  json_encoders = {dt.datetime: serialize_datetime}
105
83
 
106
84
  @classmethod
107
- def model_construct(
108
- cls: typing.Type["Model"], _fields_set: typing.Optional[typing.Set[str]] = None, **values: typing.Any
109
- ) -> "Model":
85
+ def model_construct(cls: Type["Model"], _fields_set: Optional[Set[str]] = None, **values: Any) -> "Model":
110
86
  dealiased_object = convert_and_respect_annotation_metadata(object_=values, annotation=cls, direction="read")
111
87
  return cls.construct(_fields_set, **dealiased_object)
112
88
 
113
89
  @classmethod
114
- def construct(
115
- cls: typing.Type["Model"], _fields_set: typing.Optional[typing.Set[str]] = None, **values: typing.Any
116
- ) -> "Model":
90
+ def construct(cls: Type["Model"], _fields_set: Optional[Set[str]] = None, **values: Any) -> "Model":
117
91
  dealiased_object = convert_and_respect_annotation_metadata(object_=values, annotation=cls, direction="read")
118
92
  if IS_PYDANTIC_V2:
119
- return super().model_construct(_fields_set, **dealiased_object) # type: ignore # Pydantic v2
120
- else:
121
- return super().construct(_fields_set, **dealiased_object)
93
+ return super().model_construct(_fields_set, **dealiased_object) # type: ignore[misc]
94
+ return super().construct(_fields_set, **dealiased_object)
122
95
 
123
- def json(self, **kwargs: typing.Any) -> str:
124
- kwargs_with_defaults: typing.Any = {
96
+ def json(self, **kwargs: Any) -> str:
97
+ kwargs_with_defaults = {
125
98
  "by_alias": True,
126
99
  "exclude_unset": True,
127
100
  **kwargs,
128
101
  }
129
102
  if IS_PYDANTIC_V2:
130
- return super().model_dump_json(**kwargs_with_defaults) # type: ignore # Pydantic v2
131
- else:
132
- return super().json(**kwargs_with_defaults)
103
+ return super().model_dump_json(**kwargs_with_defaults) # type: ignore[misc]
104
+ return super().json(**kwargs_with_defaults)
133
105
 
134
- def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
106
+ def dict(self, **kwargs: Any) -> Dict[str, Any]:
135
107
  """
136
108
  Override the default dict method to `exclude_unset` by default. This function patches
137
109
  `exclude_unset` to work include fields within non-None default values.
@@ -142,25 +114,21 @@ class UniversalBaseModel(pydantic.BaseModel):
142
114
  # We'd ideally do the same for Pydantic V2, but it shells out to a library to serialize models
143
115
  # that we have less control over, and this is less intrusive than custom serializers for now.
144
116
  if IS_PYDANTIC_V2:
145
- kwargs = {
146
- **kwargs,
147
- "warnings": False,
148
- }
149
- kwargs_with_defaults_exclude_unset: typing.Any = {
117
+ kwargs_with_defaults_exclude_unset = {
150
118
  **kwargs,
151
119
  "by_alias": True,
152
120
  "exclude_unset": True,
153
121
  "exclude_none": False,
154
122
  }
155
- kwargs_with_defaults_exclude_none: typing.Any = {
123
+ kwargs_with_defaults_exclude_none = {
156
124
  **kwargs,
157
125
  "by_alias": True,
158
126
  "exclude_none": True,
159
127
  "exclude_unset": False,
160
128
  }
161
129
  dict_dump = deep_union_pydantic_dicts(
162
- super().model_dump(**kwargs_with_defaults_exclude_unset), # type: ignore # Pydantic v2
163
- super().model_dump(**kwargs_with_defaults_exclude_none), # type: ignore # Pydantic v2
130
+ super().model_dump(**kwargs_with_defaults_exclude_unset), # type: ignore[misc]
131
+ super().model_dump(**kwargs_with_defaults_exclude_none), # type: ignore[misc]
164
132
  )
165
133
 
166
134
  else:
@@ -180,7 +148,7 @@ class UniversalBaseModel(pydantic.BaseModel):
180
148
  if default is not None:
181
149
  self.__fields_set__.add(name)
182
150
 
183
- kwargs_with_defaults_exclude_unset_include_fields: typing.Any = {
151
+ kwargs_with_defaults_exclude_unset_include_fields = {
184
152
  "by_alias": True,
185
153
  "exclude_unset": True,
186
154
  "include": _fields_set,
@@ -192,12 +160,10 @@ class UniversalBaseModel(pydantic.BaseModel):
192
160
  return convert_and_respect_annotation_metadata(object_=dict_dump, annotation=self.__class__, direction="write")
193
161
 
194
162
 
195
- def _union_list_of_pydantic_dicts(
196
- source: typing.List[typing.Any], destination: typing.List[typing.Any]
197
- ) -> typing.List[typing.Any]:
198
- converted_list: typing.List[typing.Any] = []
163
+ def _union_list_of_pydantic_dicts(source: List[Any], destination: List[Any]) -> List[Any]:
164
+ converted_list: List[Any] = []
199
165
  for i, item in enumerate(source):
200
- destination_value = destination[i] # type: ignore
166
+ destination_value = destination[i]
201
167
  if isinstance(item, dict):
202
168
  converted_list.append(deep_union_pydantic_dicts(item, destination_value))
203
169
  elif isinstance(item, list):
@@ -207,9 +173,7 @@ def _union_list_of_pydantic_dicts(
207
173
  return converted_list
208
174
 
209
175
 
210
- def deep_union_pydantic_dicts(
211
- source: typing.Dict[str, typing.Any], destination: typing.Dict[str, typing.Any]
212
- ) -> typing.Dict[str, typing.Any]:
176
+ def deep_union_pydantic_dicts(source: Dict[str, Any], destination: Dict[str, Any]) -> Dict[str, Any]:
213
177
  for key, value in source.items():
214
178
  node = destination.setdefault(key, {})
215
179
  if isinstance(value, dict):
@@ -227,18 +191,16 @@ def deep_union_pydantic_dicts(
227
191
 
228
192
  if IS_PYDANTIC_V2:
229
193
 
230
- class V2RootModel(UniversalBaseModel, pydantic.RootModel): # type: ignore # Pydantic v2
194
+ class V2RootModel(UniversalBaseModel, pydantic.RootModel): # type: ignore[misc, name-defined, type-arg]
231
195
  pass
232
196
 
233
- UniversalRootModel: typing_extensions.TypeAlias = V2RootModel # type: ignore
197
+ UniversalRootModel: TypeAlias = V2RootModel # type: ignore[misc]
234
198
  else:
235
- UniversalRootModel: typing_extensions.TypeAlias = UniversalBaseModel # type: ignore
199
+ UniversalRootModel: TypeAlias = UniversalBaseModel # type: ignore[misc, no-redef]
236
200
 
237
201
 
238
- def encode_by_type(o: typing.Any) -> typing.Any:
239
- encoders_by_class_tuples: typing.Dict[typing.Callable[[typing.Any], typing.Any], typing.Tuple[typing.Any, ...]] = (
240
- defaultdict(tuple)
241
- )
202
+ def encode_by_type(o: Any) -> Any:
203
+ encoders_by_class_tuples: Dict[Callable[[Any], Any], Tuple[Any, ...]] = defaultdict(tuple)
242
204
  for type_, encoder in encoders_by_type.items():
243
205
  encoders_by_class_tuples[encoder] += (type_,)
244
206
 
@@ -249,9 +211,9 @@ def encode_by_type(o: typing.Any) -> typing.Any:
249
211
  return encoder(o)
250
212
 
251
213
 
252
- def update_forward_refs(model: typing.Type["Model"], **localns: typing.Any) -> None:
214
+ def update_forward_refs(model: Type["Model"], **localns: Any) -> None:
253
215
  if IS_PYDANTIC_V2:
254
- model.model_rebuild(raise_errors=False) # type: ignore # Pydantic v2
216
+ model.model_rebuild(raise_errors=False) # type: ignore[attr-defined]
255
217
  else:
256
218
  try:
257
219
  model.update_forward_refs(**localns)
@@ -260,46 +222,41 @@ def update_forward_refs(model: typing.Type["Model"], **localns: typing.Any) -> N
260
222
 
261
223
 
262
224
  # Mirrors Pydantic's internal typing
263
- AnyCallable = typing.Callable[..., typing.Any]
225
+ AnyCallable = Callable[..., Any]
264
226
 
265
227
 
266
228
  def universal_root_validator(
267
229
  pre: bool = False,
268
- ) -> typing.Callable[[AnyCallable], AnyCallable]:
230
+ ) -> Callable[[AnyCallable], AnyCallable]:
269
231
  def decorator(func: AnyCallable) -> AnyCallable:
270
232
  if IS_PYDANTIC_V2:
271
- return pydantic.model_validator(mode="before" if pre else "after")(func) # type: ignore # Pydantic v2
272
- else:
273
- return pydantic.root_validator(pre=pre)(func) # type: ignore # Pydantic v1
233
+ return cast(AnyCallable, pydantic.model_validator(mode="before" if pre else "after")(func)) # type: ignore[attr-defined]
234
+ return cast(AnyCallable, pydantic.root_validator(pre=pre)(func)) # type: ignore[call-overload]
274
235
 
275
236
  return decorator
276
237
 
277
238
 
278
- def universal_field_validator(field_name: str, pre: bool = False) -> typing.Callable[[AnyCallable], AnyCallable]:
239
+ def universal_field_validator(field_name: str, pre: bool = False) -> Callable[[AnyCallable], AnyCallable]:
279
240
  def decorator(func: AnyCallable) -> AnyCallable:
280
241
  if IS_PYDANTIC_V2:
281
- return pydantic.field_validator(field_name, mode="before" if pre else "after")(func) # type: ignore # Pydantic v2
282
- else:
283
- return pydantic.validator(field_name, pre=pre)(func) # type: ignore # Pydantic v1
242
+ return cast(AnyCallable, pydantic.field_validator(field_name, mode="before" if pre else "after")(func)) # type: ignore[attr-defined]
243
+ return cast(AnyCallable, pydantic.validator(field_name, pre=pre)(func))
284
244
 
285
245
  return decorator
286
246
 
287
247
 
288
- PydanticField = typing.Union[ModelField, pydantic.fields.FieldInfo]
248
+ PydanticField = Union[ModelField, pydantic.fields.FieldInfo]
289
249
 
290
250
 
291
- def _get_model_fields(
292
- model: typing.Type["Model"],
293
- ) -> typing.Mapping[str, PydanticField]:
251
+ def _get_model_fields(model: Type["Model"]) -> Mapping[str, PydanticField]:
294
252
  if IS_PYDANTIC_V2:
295
- return model.model_fields # type: ignore # Pydantic v2
296
- else:
297
- return model.__fields__ # type: ignore # Pydantic v1
253
+ return cast(Mapping[str, PydanticField], model.model_fields) # type: ignore[attr-defined]
254
+ return cast(Mapping[str, PydanticField], model.__fields__)
298
255
 
299
256
 
300
- def _get_field_default(field: PydanticField) -> typing.Any:
257
+ def _get_field_default(field: PydanticField) -> Any:
301
258
  try:
302
- value = field.get_default() # type: ignore # Pydantic < v1.10.15
259
+ value = field.get_default() # type: ignore[union-attr]
303
260
  except:
304
261
  value = field.default
305
262
  if IS_PYDANTIC_V2:
@@ -160,7 +160,12 @@ def _convert_mapping(
160
160
  direction: typing.Literal["read", "write"],
161
161
  ) -> typing.Mapping[str, object]:
162
162
  converted_object: typing.Dict[str, object] = {}
163
- annotations = typing_extensions.get_type_hints(expected_type, include_extras=True)
163
+ try:
164
+ annotations = typing_extensions.get_type_hints(expected_type, include_extras=True)
165
+ except NameError:
166
+ # The TypedDict contains a circular reference, so
167
+ # we use the __annotations__ attribute directly.
168
+ annotations = getattr(expected_type, "__annotations__", {})
164
169
  aliases_to_field_names = _get_alias_to_field_name(annotations)
165
170
  for key, value in object_.items():
166
171
  if direction == "read" and key in aliases_to_field_names:
@@ -1,5 +1,7 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ # isort: skip_file
4
+
3
5
  from .bad_request_error import BadRequestError
4
6
  from .forbidden_error import ForbiddenError
5
7
  from .internal_server_error import InternalServerError
@@ -1,9 +1,10 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- from ..core.api_error import ApiError
4
3
  import typing
5
4
 
5
+ from ..core.api_error import ApiError
6
+
6
7
 
7
8
  class BadRequestError(ApiError):
8
- def __init__(self, body: typing.Optional[typing.Any]):
9
- super().__init__(status_code=400, body=body)
9
+ def __init__(self, body: typing.Optional[typing.Any], headers: typing.Optional[typing.Dict[str, str]] = None):
10
+ super().__init__(status_code=400, headers=headers, body=body)
@@ -1,9 +1,10 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- from ..core.api_error import ApiError
4
3
  import typing
5
4
 
5
+ from ..core.api_error import ApiError
6
+
6
7
 
7
8
  class ForbiddenError(ApiError):
8
- def __init__(self, body: typing.Optional[typing.Any]):
9
- super().__init__(status_code=403, body=body)
9
+ def __init__(self, body: typing.Optional[typing.Any], headers: typing.Optional[typing.Dict[str, str]] = None):
10
+ super().__init__(status_code=403, headers=headers, body=body)
@@ -1,9 +1,10 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- from ..core.api_error import ApiError
4
3
  import typing
5
4
 
5
+ from ..core.api_error import ApiError
6
+
6
7
 
7
8
  class InternalServerError(ApiError):
8
- def __init__(self, body: typing.Optional[typing.Any]):
9
- super().__init__(status_code=500, body=body)
9
+ def __init__(self, body: typing.Optional[typing.Any], headers: typing.Optional[typing.Dict[str, str]] = None):
10
+ super().__init__(status_code=500, headers=headers, body=body)
@@ -1,9 +1,10 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- from ..core.api_error import ApiError
4
3
  import typing
5
4
 
5
+ from ..core.api_error import ApiError
6
+
6
7
 
7
8
  class NotFoundError(ApiError):
8
- def __init__(self, body: typing.Optional[typing.Any]):
9
- super().__init__(status_code=404, body=body)
9
+ def __init__(self, body: typing.Optional[typing.Any], headers: typing.Optional[typing.Dict[str, str]] = None):
10
+ super().__init__(status_code=404, headers=headers, body=body)