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
@@ -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 .api_error import ApiError
4
6
  from .client_wrapper import AsyncClientWrapper, BaseClientWrapper, SyncClientWrapper
5
7
  from .datetime_utils import serialize_datetime
@@ -1,15 +1,23 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- import typing
3
+ from typing import Any, Dict, Optional
4
4
 
5
5
 
6
6
  class ApiError(Exception):
7
- status_code: typing.Optional[int]
8
- body: typing.Any
7
+ headers: Optional[Dict[str, str]]
8
+ status_code: Optional[int]
9
+ body: Any
9
10
 
10
- def __init__(self, *, status_code: typing.Optional[int] = None, body: typing.Any = None):
11
+ def __init__(
12
+ self,
13
+ *,
14
+ headers: Optional[Dict[str, str]] = None,
15
+ status_code: Optional[int] = None,
16
+ body: Any = None,
17
+ ) -> None:
18
+ self.headers = headers
11
19
  self.status_code = status_code
12
20
  self.body = body
13
21
 
14
22
  def __str__(self) -> str:
15
- return f"status_code: {self.status_code}, body: {self.body}"
23
+ return f"headers: {self.headers}, status_code: {self.status_code}, body: {self.body}"
@@ -15,26 +15,32 @@ class BaseClientWrapper:
15
15
  *,
16
16
  api_version: typing.Optional[ApiVersionEnum] = None,
17
17
  api_key: str,
18
+ headers: typing.Optional[typing.Dict[str, str]] = None,
18
19
  environment: VellumEnvironment,
19
20
  timeout: typing.Optional[float] = None,
20
21
  ):
21
22
  self._api_version = api_version
22
23
  self.api_key = api_key
24
+ self._headers = headers
23
25
  self._environment = environment
24
26
  self._timeout = timeout
25
27
 
26
28
  def get_headers(self) -> typing.Dict[str, str]:
27
29
  headers: typing.Dict[str, str] = {
28
- "User-Agent": "vellum-ai/1.1.2",
30
+ "User-Agent": "vellum-ai/1.1.4",
29
31
  "X-Fern-Language": "Python",
30
32
  "X-Fern-SDK-Name": "vellum-ai",
31
- "X-Fern-SDK-Version": "1.1.2",
33
+ "X-Fern-SDK-Version": "1.1.4",
34
+ **(self.get_custom_headers() or {}),
32
35
  }
33
36
  if self._api_version is not None:
34
37
  headers["X-API-Version"] = self._api_version
35
38
  headers["X-API-KEY"] = self.api_key
36
39
  return headers
37
40
 
41
+ def get_custom_headers(self) -> typing.Optional[typing.Dict[str, str]]:
42
+ return self._headers
43
+
38
44
  def get_environment(self) -> VellumEnvironment:
39
45
  return self._environment
40
46
 
@@ -48,11 +54,14 @@ class SyncClientWrapper(BaseClientWrapper):
48
54
  *,
49
55
  api_version: typing.Optional[ApiVersionEnum] = None,
50
56
  api_key: str,
57
+ headers: typing.Optional[typing.Dict[str, str]] = None,
51
58
  environment: VellumEnvironment,
52
59
  timeout: typing.Optional[float] = None,
53
60
  httpx_client: httpx.Client,
54
61
  ):
55
- super().__init__(api_version=api_version, api_key=api_key, environment=environment, timeout=timeout)
62
+ super().__init__(
63
+ api_version=api_version, api_key=api_key, headers=headers, environment=environment, timeout=timeout
64
+ )
56
65
  self.httpx_client = HttpClient(
57
66
  httpx_client=httpx_client, base_headers=self.get_headers, base_timeout=self.get_timeout
58
67
  )
@@ -64,11 +73,14 @@ class AsyncClientWrapper(BaseClientWrapper):
64
73
  *,
65
74
  api_version: typing.Optional[ApiVersionEnum] = None,
66
75
  api_key: str,
76
+ headers: typing.Optional[typing.Dict[str, str]] = None,
67
77
  environment: VellumEnvironment,
68
78
  timeout: typing.Optional[float] = None,
69
79
  httpx_client: httpx.AsyncClient,
70
80
  ):
71
- super().__init__(api_version=api_version, api_key=api_key, environment=environment, timeout=timeout)
81
+ super().__init__(
82
+ api_version=api_version, api_key=api_key, headers=headers, environment=environment, timeout=timeout
83
+ )
72
84
  self.httpx_client = AsyncHttpClient(
73
85
  httpx_client=httpx_client, base_headers=self.get_headers, base_timeout=self.get_timeout
74
86
  )
@@ -0,0 +1,16 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+
4
+ class ForceMultipartDict(dict):
5
+ """
6
+ A dictionary subclass that always evaluates to True in boolean contexts.
7
+
8
+ This is used to force multipart/form-data encoding in HTTP requests even when
9
+ the dictionary is empty, which would normally evaluate to False.
10
+ """
11
+
12
+ def __bool__(self):
13
+ return True
14
+
15
+
16
+ FORCE_MULTIPART = ForceMultipartDict()
@@ -11,10 +11,12 @@ from random import random
11
11
 
12
12
  import httpx
13
13
  from .file import File, convert_file_dict_to_httpx_tuples
14
+ from .force_multipart import FORCE_MULTIPART
14
15
  from .jsonable_encoder import jsonable_encoder
15
16
  from .query_encoder import encode_query
16
17
  from .remove_none_from_dict import remove_none_from_dict
17
18
  from .request_options import RequestOptions
19
+ from httpx._types import RequestFiles
18
20
 
19
21
  INITIAL_RETRY_DELAY_SECONDS = 0.5
20
22
  MAX_RETRY_DELAY_SECONDS = 10
@@ -178,11 +180,17 @@ class HttpClient:
178
180
  json: typing.Optional[typing.Any] = None,
179
181
  data: typing.Optional[typing.Any] = None,
180
182
  content: typing.Optional[typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]] = None,
181
- files: typing.Optional[typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]] = None,
183
+ files: typing.Optional[
184
+ typing.Union[
185
+ typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]],
186
+ typing.List[typing.Tuple[str, File]],
187
+ ]
188
+ ] = None,
182
189
  headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
183
190
  request_options: typing.Optional[RequestOptions] = None,
184
191
  retries: int = 2,
185
192
  omit: typing.Optional[typing.Any] = None,
193
+ force_multipart: typing.Optional[bool] = None,
186
194
  ) -> httpx.Response:
187
195
  base_url = self.get_base_url(base_url)
188
196
  timeout = (
@@ -193,6 +201,15 @@ class HttpClient:
193
201
 
194
202
  json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
195
203
 
204
+ request_files: typing.Optional[RequestFiles] = (
205
+ convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
206
+ if (files is not None and files is not omit and isinstance(files, dict))
207
+ else None
208
+ )
209
+
210
+ if (request_files is None or len(request_files) == 0) and force_multipart:
211
+ request_files = FORCE_MULTIPART
212
+
196
213
  response = self.httpx_client.request(
197
214
  method=method,
198
215
  url=urllib.parse.urljoin(f"{base_url}/", path),
@@ -225,11 +242,7 @@ class HttpClient:
225
242
  json=json_body,
226
243
  data=data_body,
227
244
  content=content,
228
- files=(
229
- convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
230
- if (files is not None and files is not omit)
231
- else None
232
- ),
245
+ files=request_files,
233
246
  timeout=timeout,
234
247
  )
235
248
 
@@ -264,11 +277,17 @@ class HttpClient:
264
277
  json: typing.Optional[typing.Any] = None,
265
278
  data: typing.Optional[typing.Any] = None,
266
279
  content: typing.Optional[typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]] = None,
267
- files: typing.Optional[typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]] = None,
280
+ files: typing.Optional[
281
+ typing.Union[
282
+ typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]],
283
+ typing.List[typing.Tuple[str, File]],
284
+ ]
285
+ ] = None,
268
286
  headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
269
287
  request_options: typing.Optional[RequestOptions] = None,
270
288
  retries: int = 2,
271
289
  omit: typing.Optional[typing.Any] = None,
290
+ force_multipart: typing.Optional[bool] = None,
272
291
  ) -> typing.Iterator[httpx.Response]:
273
292
  base_url = self.get_base_url(base_url)
274
293
  timeout = (
@@ -277,6 +296,15 @@ class HttpClient:
277
296
  else self.base_timeout()
278
297
  )
279
298
 
299
+ request_files: typing.Optional[RequestFiles] = (
300
+ convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
301
+ if (files is not None and files is not omit and isinstance(files, dict))
302
+ else None
303
+ )
304
+
305
+ if (request_files is None or len(request_files) == 0) and force_multipart:
306
+ request_files = FORCE_MULTIPART
307
+
280
308
  json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
281
309
 
282
310
  with self.httpx_client.stream(
@@ -311,11 +339,7 @@ class HttpClient:
311
339
  json=json_body,
312
340
  data=data_body,
313
341
  content=content,
314
- files=(
315
- convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
316
- if (files is not None and files is not omit)
317
- else None
318
- ),
342
+ files=request_files,
319
343
  timeout=timeout,
320
344
  ) as stream:
321
345
  yield stream
@@ -354,11 +378,17 @@ class AsyncHttpClient:
354
378
  json: typing.Optional[typing.Any] = None,
355
379
  data: typing.Optional[typing.Any] = None,
356
380
  content: typing.Optional[typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]] = None,
357
- files: typing.Optional[typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]] = None,
381
+ files: typing.Optional[
382
+ typing.Union[
383
+ typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]],
384
+ typing.List[typing.Tuple[str, File]],
385
+ ]
386
+ ] = None,
358
387
  headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
359
388
  request_options: typing.Optional[RequestOptions] = None,
360
389
  retries: int = 2,
361
390
  omit: typing.Optional[typing.Any] = None,
391
+ force_multipart: typing.Optional[bool] = None,
362
392
  ) -> httpx.Response:
363
393
  base_url = self.get_base_url(base_url)
364
394
  timeout = (
@@ -367,6 +397,15 @@ class AsyncHttpClient:
367
397
  else self.base_timeout()
368
398
  )
369
399
 
400
+ request_files: typing.Optional[RequestFiles] = (
401
+ convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
402
+ if (files is not None and files is not omit and isinstance(files, dict))
403
+ else None
404
+ )
405
+
406
+ if (request_files is None or len(request_files) == 0) and force_multipart:
407
+ request_files = FORCE_MULTIPART
408
+
370
409
  json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
371
410
 
372
411
  # Add the input to each of these and do None-safety checks
@@ -402,11 +441,7 @@ class AsyncHttpClient:
402
441
  json=json_body,
403
442
  data=data_body,
404
443
  content=content,
405
- files=(
406
- convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
407
- if files is not None
408
- else None
409
- ),
444
+ files=request_files,
410
445
  timeout=timeout,
411
446
  )
412
447
 
@@ -440,11 +475,17 @@ class AsyncHttpClient:
440
475
  json: typing.Optional[typing.Any] = None,
441
476
  data: typing.Optional[typing.Any] = None,
442
477
  content: typing.Optional[typing.Union[bytes, typing.Iterator[bytes], typing.AsyncIterator[bytes]]] = None,
443
- files: typing.Optional[typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]]] = None,
478
+ files: typing.Optional[
479
+ typing.Union[
480
+ typing.Dict[str, typing.Optional[typing.Union[File, typing.List[File]]]],
481
+ typing.List[typing.Tuple[str, File]],
482
+ ]
483
+ ] = None,
444
484
  headers: typing.Optional[typing.Dict[str, typing.Any]] = None,
445
485
  request_options: typing.Optional[RequestOptions] = None,
446
486
  retries: int = 2,
447
487
  omit: typing.Optional[typing.Any] = None,
488
+ force_multipart: typing.Optional[bool] = None,
448
489
  ) -> typing.AsyncIterator[httpx.Response]:
449
490
  base_url = self.get_base_url(base_url)
450
491
  timeout = (
@@ -453,6 +494,15 @@ class AsyncHttpClient:
453
494
  else self.base_timeout()
454
495
  )
455
496
 
497
+ request_files: typing.Optional[RequestFiles] = (
498
+ convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
499
+ if (files is not None and files is not omit and isinstance(files, dict))
500
+ else None
501
+ )
502
+
503
+ if (request_files is None or len(request_files) == 0) and force_multipart:
504
+ request_files = FORCE_MULTIPART
505
+
456
506
  json_body, data_body = get_request_body(json=json, data=data, request_options=request_options, omit=omit)
457
507
 
458
508
  async with self.httpx_client.stream(
@@ -487,11 +537,7 @@ class AsyncHttpClient:
487
537
  json=json_body,
488
538
  data=data_body,
489
539
  content=content,
490
- files=(
491
- convert_file_dict_to_httpx_tuples(remove_omit_from_dict(remove_none_from_dict(files), omit))
492
- if files is not None
493
- else None
494
- ),
540
+ files=request_files,
495
541
  timeout=timeout,
496
542
  ) as stream:
497
543
  yield stream
@@ -5,20 +5,31 @@ from typing import Dict, Generic, TypeVar
5
5
  import httpx
6
6
 
7
7
  T = TypeVar("T")
8
+ """Generic to represent the underlying type of the data wrapped by the HTTP response."""
8
9
 
9
10
 
10
- class HttpResponse(Generic[T]):
11
+ class BaseHttpResponse:
12
+ """Minimalist HTTP response wrapper that exposes response headers."""
13
+
11
14
  _response: httpx.Response
12
- _data: T
13
15
 
14
- def __init__(self, response: httpx.Response, data: T):
16
+ def __init__(self, response: httpx.Response):
15
17
  self._response = response
16
- self._data = data
17
18
 
18
19
  @property
19
20
  def headers(self) -> Dict[str, str]:
20
21
  return dict(self._response.headers)
21
22
 
23
+
24
+ class HttpResponse(Generic[T], BaseHttpResponse):
25
+ """HTTP response wrapper that exposes response headers and data."""
26
+
27
+ _data: T
28
+
29
+ def __init__(self, response: httpx.Response, data: T):
30
+ super().__init__(response)
31
+ self._data = data
32
+
22
33
  @property
23
34
  def data(self) -> T:
24
35
  return self._data
@@ -27,18 +38,15 @@ class HttpResponse(Generic[T]):
27
38
  self._response.close()
28
39
 
29
40
 
30
- class AsyncHttpResponse(Generic[T]):
31
- _response: httpx.Response
41
+ class AsyncHttpResponse(Generic[T], BaseHttpResponse):
42
+ """HTTP response wrapper that exposes response headers and data."""
43
+
32
44
  _data: T
33
45
 
34
46
  def __init__(self, response: httpx.Response, data: T):
35
- self._response = response
47
+ super().__init__(response)
36
48
  self._data = data
37
49
 
38
- @property
39
- def headers(self) -> Dict[str, str]:
40
- return dict(self._response.headers)
41
-
42
50
  @property
43
51
  def data(self) -> T:
44
52
  return self._data