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

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

Potentially problematic release.


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

Files changed (275) hide show
  1. vellum/__init__.py +18 -0
  2. vellum/client/README.md +1 -1
  3. vellum/client/core/client_wrapper.py +2 -2
  4. vellum/client/core/force_multipart.py +4 -2
  5. vellum/client/core/http_response.py +1 -1
  6. vellum/client/core/pydantic_utilities.py +7 -4
  7. vellum/client/errors/too_many_requests_error.py +1 -2
  8. vellum/client/reference.md +677 -76
  9. vellum/client/resources/container_images/client.py +299 -0
  10. vellum/client/resources/container_images/raw_client.py +286 -0
  11. vellum/client/resources/documents/client.py +20 -10
  12. vellum/client/resources/documents/raw_client.py +20 -10
  13. vellum/client/resources/events/raw_client.py +4 -4
  14. vellum/client/resources/integration_auth_configs/client.py +2 -0
  15. vellum/client/resources/integration_auth_configs/raw_client.py +2 -0
  16. vellum/client/resources/integration_providers/client.py +28 -2
  17. vellum/client/resources/integration_providers/raw_client.py +24 -0
  18. vellum/client/resources/integrations/client.py +52 -4
  19. vellum/client/resources/integrations/raw_client.py +61 -0
  20. vellum/client/resources/workflow_deployments/client.py +156 -0
  21. vellum/client/resources/workflow_deployments/raw_client.py +334 -0
  22. vellum/client/resources/workflows/client.py +212 -8
  23. vellum/client/resources/workflows/raw_client.py +343 -6
  24. vellum/client/types/__init__.py +18 -0
  25. vellum/client/types/api_actor_type_enum.py +1 -1
  26. vellum/client/types/check_workflow_execution_status_error.py +21 -0
  27. vellum/client/types/check_workflow_execution_status_response.py +29 -0
  28. vellum/client/types/code_execution_package_request.py +21 -0
  29. vellum/client/types/composio_execute_tool_request.py +5 -0
  30. vellum/client/types/composio_tool_definition.py +1 -0
  31. vellum/client/types/container_image_build_config.py +1 -0
  32. vellum/client/types/container_image_container_image_tag.py +1 -0
  33. vellum/client/types/dataset_row_push_request.py +3 -0
  34. vellum/client/types/document_document_to_document_index.py +1 -0
  35. vellum/client/types/integration_name.py +24 -0
  36. vellum/client/types/node_execution_fulfilled_body.py +1 -0
  37. vellum/client/types/node_execution_log_body.py +24 -0
  38. vellum/client/types/node_execution_log_event.py +47 -0
  39. vellum/client/types/prompt_deployment_release_prompt_deployment.py +1 -0
  40. vellum/client/types/runner_config_request.py +24 -0
  41. vellum/client/types/severity_enum.py +5 -0
  42. vellum/client/types/slim_composio_tool_definition.py +1 -0
  43. vellum/client/types/slim_document_document_to_document_index.py +2 -0
  44. vellum/client/types/type_checker_enum.py +5 -0
  45. vellum/client/types/vellum_audio.py +5 -1
  46. vellum/client/types/vellum_audio_request.py +5 -1
  47. vellum/client/types/vellum_document.py +5 -1
  48. vellum/client/types/vellum_document_request.py +5 -1
  49. vellum/client/types/vellum_image.py +5 -1
  50. vellum/client/types/vellum_image_request.py +5 -1
  51. vellum/client/types/vellum_node_execution_event.py +2 -0
  52. vellum/client/types/vellum_variable.py +5 -0
  53. vellum/client/types/vellum_variable_extensions.py +1 -0
  54. vellum/client/types/vellum_variable_type.py +1 -0
  55. vellum/client/types/vellum_video.py +5 -1
  56. vellum/client/types/vellum_video_request.py +5 -1
  57. vellum/client/types/workflow_deployment_release_workflow_deployment.py +1 -0
  58. vellum/client/types/workflow_event.py +2 -0
  59. vellum/client/types/workflow_execution_fulfilled_body.py +1 -0
  60. vellum/client/types/workflow_result_event_output_data_array.py +1 -1
  61. vellum/client/types/workflow_result_event_output_data_chat_history.py +1 -1
  62. vellum/client/types/workflow_result_event_output_data_error.py +1 -1
  63. vellum/client/types/workflow_result_event_output_data_function_call.py +1 -1
  64. vellum/client/types/workflow_result_event_output_data_json.py +1 -1
  65. vellum/client/types/workflow_result_event_output_data_number.py +1 -1
  66. vellum/client/types/workflow_result_event_output_data_search_results.py +1 -1
  67. vellum/client/types/workflow_result_event_output_data_string.py +1 -1
  68. vellum/client/types/workflow_sandbox_execute_node_response.py +8 -0
  69. vellum/plugins/vellum_mypy.py +37 -2
  70. vellum/types/check_workflow_execution_status_error.py +3 -0
  71. vellum/types/check_workflow_execution_status_response.py +3 -0
  72. vellum/types/code_execution_package_request.py +3 -0
  73. vellum/types/node_execution_log_body.py +3 -0
  74. vellum/types/node_execution_log_event.py +3 -0
  75. vellum/types/runner_config_request.py +3 -0
  76. vellum/types/severity_enum.py +3 -0
  77. vellum/types/type_checker_enum.py +3 -0
  78. vellum/types/workflow_sandbox_execute_node_response.py +3 -0
  79. vellum/utils/files/mixin.py +26 -0
  80. vellum/utils/files/tests/test_mixin.py +62 -0
  81. vellum/utils/tests/test_vellum_client.py +95 -0
  82. vellum/utils/uuid.py +19 -2
  83. vellum/utils/vellum_client.py +10 -3
  84. vellum/workflows/__init__.py +7 -1
  85. vellum/workflows/descriptors/base.py +86 -0
  86. vellum/workflows/descriptors/tests/test_utils.py +9 -0
  87. vellum/workflows/errors/tests/__init__.py +0 -0
  88. vellum/workflows/errors/tests/test_types.py +52 -0
  89. vellum/workflows/errors/types.py +1 -0
  90. vellum/workflows/events/node.py +24 -0
  91. vellum/workflows/events/tests/test_event.py +123 -0
  92. vellum/workflows/events/types.py +2 -1
  93. vellum/workflows/events/workflow.py +28 -2
  94. vellum/workflows/expressions/add.py +3 -0
  95. vellum/workflows/expressions/tests/test_add.py +24 -0
  96. vellum/workflows/graph/graph.py +26 -5
  97. vellum/workflows/graph/tests/test_graph.py +228 -1
  98. vellum/workflows/inputs/base.py +22 -6
  99. vellum/workflows/inputs/dataset_row.py +121 -16
  100. vellum/workflows/inputs/tests/test_inputs.py +3 -3
  101. vellum/workflows/integrations/tests/test_vellum_integration_service.py +84 -0
  102. vellum/workflows/integrations/vellum_integration_service.py +12 -1
  103. vellum/workflows/loaders/base.py +2 -0
  104. vellum/workflows/nodes/bases/base.py +37 -16
  105. vellum/workflows/nodes/bases/tests/test_base_node.py +104 -1
  106. vellum/workflows/nodes/core/inline_subworkflow_node/node.py +1 -0
  107. vellum/workflows/nodes/core/inline_subworkflow_node/tests/test_node.py +1 -1
  108. vellum/workflows/nodes/core/map_node/node.py +7 -5
  109. vellum/workflows/nodes/core/map_node/tests/test_node.py +33 -0
  110. vellum/workflows/nodes/core/retry_node/node.py +1 -0
  111. vellum/workflows/nodes/core/try_node/node.py +1 -0
  112. vellum/workflows/nodes/displayable/api_node/node.py +3 -2
  113. vellum/workflows/nodes/displayable/api_node/tests/test_api_node.py +38 -0
  114. vellum/workflows/nodes/displayable/bases/api_node/node.py +1 -1
  115. vellum/workflows/nodes/displayable/bases/base_prompt_node/node.py +18 -1
  116. vellum/workflows/nodes/displayable/bases/inline_prompt_node/node.py +109 -2
  117. vellum/workflows/nodes/displayable/bases/prompt_deployment_node.py +13 -2
  118. vellum/workflows/nodes/displayable/code_execution_node/node.py +9 -15
  119. vellum/workflows/nodes/displayable/code_execution_node/tests/test_node.py +65 -24
  120. vellum/workflows/nodes/displayable/code_execution_node/utils.py +3 -0
  121. vellum/workflows/nodes/displayable/final_output_node/node.py +24 -69
  122. vellum/workflows/nodes/displayable/final_output_node/tests/test_node.py +53 -3
  123. vellum/workflows/nodes/displayable/note_node/node.py +4 -1
  124. vellum/workflows/nodes/displayable/subworkflow_deployment_node/node.py +16 -5
  125. vellum/workflows/nodes/displayable/tests/test_text_prompt_deployment_node.py +47 -0
  126. vellum/workflows/nodes/displayable/tool_calling_node/node.py +74 -34
  127. vellum/workflows/nodes/displayable/tool_calling_node/tests/test_node.py +204 -8
  128. vellum/workflows/nodes/displayable/tool_calling_node/utils.py +92 -71
  129. vellum/workflows/nodes/mocks.py +47 -213
  130. vellum/workflows/nodes/tests/test_mocks.py +0 -177
  131. vellum/workflows/nodes/utils.py +23 -8
  132. vellum/workflows/outputs/base.py +36 -3
  133. vellum/workflows/references/environment_variable.py +1 -11
  134. vellum/workflows/references/lazy.py +8 -0
  135. vellum/workflows/references/state_value.py +24 -1
  136. vellum/workflows/references/tests/test_lazy.py +58 -0
  137. vellum/workflows/references/trigger.py +8 -3
  138. vellum/workflows/references/workflow_input.py +8 -0
  139. vellum/workflows/resolvers/resolver.py +13 -3
  140. vellum/workflows/resolvers/tests/test_resolver.py +31 -0
  141. vellum/workflows/runner/runner.py +159 -14
  142. vellum/workflows/runner/tests/__init__.py +0 -0
  143. vellum/workflows/runner/tests/test_runner.py +170 -0
  144. vellum/workflows/sandbox.py +7 -8
  145. vellum/workflows/state/base.py +89 -30
  146. vellum/workflows/state/context.py +74 -3
  147. vellum/workflows/state/tests/test_state.py +269 -1
  148. vellum/workflows/tests/test_dataset_row.py +8 -7
  149. vellum/workflows/tests/test_sandbox.py +97 -8
  150. vellum/workflows/triggers/__init__.py +2 -1
  151. vellum/workflows/triggers/base.py +160 -28
  152. vellum/workflows/triggers/chat_message.py +141 -0
  153. vellum/workflows/triggers/integration.py +12 -0
  154. vellum/workflows/triggers/manual.py +3 -1
  155. vellum/workflows/triggers/schedule.py +3 -1
  156. vellum/workflows/triggers/tests/test_chat_message.py +257 -0
  157. vellum/workflows/types/core.py +18 -0
  158. vellum/workflows/types/definition.py +6 -13
  159. vellum/workflows/types/generics.py +12 -0
  160. vellum/workflows/types/tests/test_utils.py +12 -0
  161. vellum/workflows/types/utils.py +32 -2
  162. vellum/workflows/types/workflow_metadata.py +124 -0
  163. vellum/workflows/utils/functions.py +152 -16
  164. vellum/workflows/utils/pydantic_schema.py +19 -1
  165. vellum/workflows/utils/tests/test_functions.py +123 -8
  166. vellum/workflows/utils/tests/test_validate.py +79 -0
  167. vellum/workflows/utils/tests/test_vellum_variables.py +62 -2
  168. vellum/workflows/utils/uuids.py +90 -0
  169. vellum/workflows/utils/validate.py +108 -0
  170. vellum/workflows/utils/vellum_variables.py +96 -16
  171. vellum/workflows/workflows/base.py +177 -35
  172. vellum/workflows/workflows/tests/test_base_workflow.py +51 -0
  173. {vellum_ai-1.11.2.dist-info → vellum_ai-1.13.5.dist-info}/METADATA +6 -1
  174. {vellum_ai-1.11.2.dist-info → vellum_ai-1.13.5.dist-info}/RECORD +274 -227
  175. vellum_cli/__init__.py +21 -0
  176. vellum_cli/config.py +16 -2
  177. vellum_cli/pull.py +2 -0
  178. vellum_cli/push.py +23 -10
  179. vellum_cli/tests/conftest.py +8 -13
  180. vellum_cli/tests/test_image_push.py +4 -11
  181. vellum_cli/tests/test_pull.py +83 -68
  182. vellum_cli/tests/test_push.py +251 -2
  183. vellum_ee/assets/node-definitions.json +225 -12
  184. vellum_ee/scripts/generate_node_definitions.py +15 -3
  185. vellum_ee/workflows/display/base.py +4 -3
  186. vellum_ee/workflows/display/nodes/base_node_display.py +44 -11
  187. vellum_ee/workflows/display/nodes/tests/test_base_node_display.py +93 -0
  188. vellum_ee/workflows/display/nodes/types.py +1 -0
  189. vellum_ee/workflows/display/nodes/vellum/__init__.py +0 -2
  190. vellum_ee/workflows/display/nodes/vellum/base_adornment_node.py +5 -2
  191. vellum_ee/workflows/display/nodes/vellum/code_execution_node.py +1 -1
  192. vellum_ee/workflows/display/nodes/vellum/inline_prompt_node.py +10 -2
  193. vellum_ee/workflows/display/nodes/vellum/inline_subworkflow_node.py +17 -14
  194. vellum_ee/workflows/display/nodes/vellum/map_node.py +2 -0
  195. vellum_ee/workflows/display/nodes/vellum/note_node.py +18 -3
  196. vellum_ee/workflows/display/nodes/vellum/subworkflow_deployment_node.py +37 -14
  197. vellum_ee/workflows/display/nodes/vellum/tests/test_code_execution_node.py +62 -2
  198. vellum_ee/workflows/display/nodes/vellum/tests/test_final_output_node.py +136 -0
  199. vellum_ee/workflows/display/nodes/vellum/tests/test_note_node.py +44 -7
  200. vellum_ee/workflows/display/nodes/vellum/tests/test_prompt_node.py +5 -13
  201. vellum_ee/workflows/display/nodes/vellum/tests/test_subworkflow_deployment_node.py +27 -17
  202. vellum_ee/workflows/display/nodes/vellum/tests/test_tool_calling_node.py +145 -22
  203. vellum_ee/workflows/display/nodes/vellum/tests/test_utils.py +107 -2
  204. vellum_ee/workflows/display/nodes/vellum/utils.py +54 -12
  205. vellum_ee/workflows/display/tests/test_base_workflow_display.py +13 -16
  206. vellum_ee/workflows/display/tests/test_json_schema_validation.py +190 -0
  207. vellum_ee/workflows/display/tests/test_mocks.py +912 -0
  208. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_adornments_serialization.py +14 -2
  209. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_attributes_serialization.py +109 -0
  210. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_outputs_serialization.py +3 -0
  211. vellum_ee/workflows/display/tests/workflow_serialization/generic_nodes/test_ports_serialization.py +187 -1
  212. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_api_node_serialization.py +34 -325
  213. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_code_execution_node_serialization.py +42 -393
  214. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_conditional_node_serialization.py +13 -315
  215. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_default_state_serialization.py +2 -122
  216. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_error_node_serialization.py +24 -115
  217. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_generic_node_serialization.py +4 -93
  218. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_guardrail_node_serialization.py +7 -80
  219. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_prompt_node_serialization.py +9 -101
  220. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_inline_subworkflow_serialization.py +77 -308
  221. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_map_node_serialization.py +62 -324
  222. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_merge_node_serialization.py +3 -82
  223. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_prompt_deployment_serialization.py +4 -142
  224. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_search_node_serialization.py +1 -61
  225. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_set_state_node_serialization.py +4 -4
  226. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_subworkflow_deployment_serialization.py +205 -134
  227. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_templating_node_serialization.py +34 -146
  228. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_terminal_node_serialization.py +2 -0
  229. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_composio_serialization.py +8 -6
  230. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_serialization.py +137 -266
  231. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_inline_workflow_tool_wrapper_serialization.py +84 -0
  232. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_mcp_serialization.py +55 -16
  233. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_serialization.py +15 -1
  234. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_tool_wrapper_serialization.py +71 -0
  235. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_vellum_integration_serialization.py +119 -0
  236. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_tool_calling_node_workflow_deployment_serialization.py +1 -1
  237. vellum_ee/workflows/display/tests/workflow_serialization/test_basic_try_node_serialization.py +0 -2
  238. vellum_ee/workflows/display/tests/workflow_serialization/test_chat_message_dict_reference_serialization.py +22 -1
  239. vellum_ee/workflows/display/tests/workflow_serialization/test_chat_message_trigger_serialization.py +412 -0
  240. vellum_ee/workflows/display/tests/workflow_serialization/test_code_tool_node_reference_error.py +106 -0
  241. vellum_ee/workflows/display/tests/workflow_serialization/test_complex_terminal_node_serialization.py +9 -41
  242. vellum_ee/workflows/display/tests/workflow_serialization/test_duplicate_trigger_name_validation.py +208 -0
  243. vellum_ee/workflows/display/tests/workflow_serialization/test_final_output_node_not_referenced_by_workflow_outputs.py +45 -0
  244. vellum_ee/workflows/display/tests/workflow_serialization/test_infinite_loop_validation.py +66 -0
  245. vellum_ee/workflows/display/tests/workflow_serialization/test_int_input_serialization.py +40 -0
  246. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_serialization.py +8 -14
  247. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_validation.py +173 -0
  248. vellum_ee/workflows/display/tests/workflow_serialization/test_integration_trigger_with_entrypoint_node_id.py +16 -13
  249. vellum_ee/workflows/display/tests/workflow_serialization/test_list_vellum_document_serialization.py +5 -1
  250. vellum_ee/workflows/display/tests/workflow_serialization/test_manual_trigger_serialization.py +12 -2
  251. vellum_ee/workflows/display/tests/workflow_serialization/test_multi_trigger_same_node_serialization.py +111 -0
  252. vellum_ee/workflows/display/tests/workflow_serialization/test_no_triggers_no_entrypoint_validation.py +64 -0
  253. vellum_ee/workflows/display/tests/workflow_serialization/test_partial_workflow_meta_display_override.py +55 -0
  254. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_dataset_mocks_serialization.py +268 -0
  255. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_invalid_pdf_data_url.py +49 -0
  256. vellum_ee/workflows/display/tests/workflow_serialization/test_sandbox_validation_errors.py +112 -0
  257. vellum_ee/workflows/display/tests/workflow_serialization/test_scheduled_trigger_serialization.py +25 -16
  258. vellum_ee/workflows/display/tests/workflow_serialization/test_terminal_node_in_unused_graphs_serialization.py +53 -0
  259. vellum_ee/workflows/display/utils/exceptions.py +34 -0
  260. vellum_ee/workflows/display/utils/expressions.py +463 -52
  261. vellum_ee/workflows/display/utils/metadata.py +98 -33
  262. vellum_ee/workflows/display/utils/tests/test_metadata.py +31 -0
  263. vellum_ee/workflows/display/utils/triggers.py +153 -0
  264. vellum_ee/workflows/display/utils/vellum.py +59 -5
  265. vellum_ee/workflows/display/workflows/base_workflow_display.py +656 -254
  266. vellum_ee/workflows/display/workflows/get_vellum_workflow_display_class.py +26 -0
  267. vellum_ee/workflows/display/workflows/tests/test_workflow_display.py +77 -29
  268. vellum_ee/workflows/server/namespaces.py +18 -0
  269. vellum_ee/workflows/tests/test_display_meta.py +2 -0
  270. vellum_ee/workflows/tests/test_serialize_module.py +174 -7
  271. vellum_ee/workflows/tests/test_server.py +0 -3
  272. vellum_ee/workflows/display/nodes/vellum/function_node.py +0 -14
  273. {vellum_ai-1.11.2.dist-info → vellum_ai-1.13.5.dist-info}/LICENSE +0 -0
  274. {vellum_ai-1.11.2.dist-info → vellum_ai-1.13.5.dist-info}/WHEEL +0 -0
  275. {vellum_ai-1.11.2.dist-info → vellum_ai-1.13.5.dist-info}/entry_points.txt +0 -0
@@ -11,12 +11,19 @@ from ...core.http_response import AsyncHttpResponse, HttpResponse
11
11
  from ...core.jsonable_encoder import jsonable_encoder
12
12
  from ...core.pydantic_utilities import parse_obj_as
13
13
  from ...core.request_options import RequestOptions
14
+ from ...core.serialization import convert_and_respect_annotation_metadata
14
15
  from ...errors.bad_request_error import BadRequestError
16
+ from ...errors.internal_server_error import InternalServerError
17
+ from ...errors.not_found_error import NotFoundError
18
+ from ...types.check_workflow_execution_status_response import CheckWorkflowExecutionStatusResponse
15
19
  from ...types.dataset_row_push_request import DatasetRowPushRequest
20
+ from ...types.runner_config_request import RunnerConfigRequest
21
+ from ...types.type_checker_enum import TypeCheckerEnum
16
22
  from ...types.workflow_push_deployment_config_request import WorkflowPushDeploymentConfigRequest
17
23
  from ...types.workflow_push_exec_config import WorkflowPushExecConfig
18
24
  from ...types.workflow_push_response import WorkflowPushResponse
19
25
  from ...types.workflow_resolved_state import WorkflowResolvedState
26
+ from ...types.workflow_sandbox_execute_node_response import WorkflowSandboxExecuteNodeResponse
20
27
 
21
28
  # this is used as the default value for optional parameters
22
29
  OMIT = typing.cast(typing.Any, ...)
@@ -156,10 +163,160 @@ class RawWorkflowsClient:
156
163
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
157
164
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
158
165
 
166
+ def execute_node(
167
+ self,
168
+ *,
169
+ files: typing.Dict[str, str],
170
+ node: str,
171
+ inputs: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
172
+ request_options: typing.Optional[RequestOptions] = None,
173
+ ) -> HttpResponse[WorkflowSandboxExecuteNodeResponse]:
174
+ """
175
+ Parameters
176
+ ----------
177
+ files : typing.Dict[str, str]
178
+
179
+ node : str
180
+
181
+ inputs : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
182
+
183
+ request_options : typing.Optional[RequestOptions]
184
+ Request-specific configuration.
185
+
186
+ Returns
187
+ -------
188
+ HttpResponse[WorkflowSandboxExecuteNodeResponse]
189
+
190
+ """
191
+ _response = self._client_wrapper.httpx_client.request(
192
+ "v1/workflows/execute-node",
193
+ base_url=self._client_wrapper.get_environment().default,
194
+ method="POST",
195
+ json={
196
+ "files": files,
197
+ "node": node,
198
+ "inputs": inputs,
199
+ },
200
+ headers={
201
+ "content-type": "application/json",
202
+ },
203
+ request_options=request_options,
204
+ omit=OMIT,
205
+ )
206
+ try:
207
+ if 200 <= _response.status_code < 300:
208
+ _data = typing.cast(
209
+ WorkflowSandboxExecuteNodeResponse,
210
+ parse_obj_as(
211
+ type_=WorkflowSandboxExecuteNodeResponse, # type: ignore
212
+ object_=_response.json(),
213
+ ),
214
+ )
215
+ return HttpResponse(response=_response, data=_data)
216
+ if _response.status_code == 400:
217
+ raise BadRequestError(
218
+ headers=dict(_response.headers),
219
+ body=typing.cast(
220
+ typing.Optional[typing.Any],
221
+ parse_obj_as(
222
+ type_=typing.Optional[typing.Any], # type: ignore
223
+ object_=_response.json(),
224
+ ),
225
+ ),
226
+ )
227
+ if _response.status_code == 500:
228
+ raise InternalServerError(
229
+ headers=dict(_response.headers),
230
+ body=typing.cast(
231
+ typing.Optional[typing.Any],
232
+ parse_obj_as(
233
+ type_=typing.Optional[typing.Any], # type: ignore
234
+ object_=_response.json(),
235
+ ),
236
+ ),
237
+ )
238
+ _response_json = _response.json()
239
+ except JSONDecodeError:
240
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
241
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
242
+
243
+ def workflow_execution_status(
244
+ self, execution_id: str, *, request_options: typing.Optional[RequestOptions] = None
245
+ ) -> HttpResponse[CheckWorkflowExecutionStatusResponse]:
246
+ """
247
+ Checks if a workflow execution is currently executing (not fulfilled, not rejected, and has no end time).
248
+ Uses the ClickHouse Prime summary materialized view.
249
+
250
+ Parameters
251
+ ----------
252
+ execution_id : str
253
+
254
+ request_options : typing.Optional[RequestOptions]
255
+ Request-specific configuration.
256
+
257
+ Returns
258
+ -------
259
+ HttpResponse[CheckWorkflowExecutionStatusResponse]
260
+
261
+ """
262
+ _response = self._client_wrapper.httpx_client.request(
263
+ f"v1/workflows/executions/{jsonable_encoder(execution_id)}/status",
264
+ base_url=self._client_wrapper.get_environment().predict,
265
+ method="GET",
266
+ request_options=request_options,
267
+ )
268
+ try:
269
+ if 200 <= _response.status_code < 300:
270
+ _data = typing.cast(
271
+ CheckWorkflowExecutionStatusResponse,
272
+ parse_obj_as(
273
+ type_=CheckWorkflowExecutionStatusResponse, # type: ignore
274
+ object_=_response.json(),
275
+ ),
276
+ )
277
+ return HttpResponse(response=_response, data=_data)
278
+ if _response.status_code == 400:
279
+ raise BadRequestError(
280
+ headers=dict(_response.headers),
281
+ body=typing.cast(
282
+ typing.Optional[typing.Any],
283
+ parse_obj_as(
284
+ type_=typing.Optional[typing.Any], # type: ignore
285
+ object_=_response.json(),
286
+ ),
287
+ ),
288
+ )
289
+ if _response.status_code == 404:
290
+ raise NotFoundError(
291
+ headers=dict(_response.headers),
292
+ body=typing.cast(
293
+ typing.Optional[typing.Any],
294
+ parse_obj_as(
295
+ type_=typing.Optional[typing.Any], # type: ignore
296
+ object_=_response.json(),
297
+ ),
298
+ ),
299
+ )
300
+ if _response.status_code == 500:
301
+ raise InternalServerError(
302
+ headers=dict(_response.headers),
303
+ body=typing.cast(
304
+ typing.Optional[typing.Any],
305
+ parse_obj_as(
306
+ type_=typing.Optional[typing.Any], # type: ignore
307
+ object_=_response.json(),
308
+ ),
309
+ ),
310
+ )
311
+ _response_json = _response.json()
312
+ except JSONDecodeError:
313
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
314
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
315
+
159
316
  def push(
160
317
  self,
161
318
  *,
162
- exec_config: WorkflowPushExecConfig,
319
+ exec_config: typing.Optional[WorkflowPushExecConfig] = OMIT,
163
320
  workflow_sandbox_id: typing.Optional[str] = OMIT,
164
321
  deployment_config: typing.Optional[WorkflowPushDeploymentConfigRequest] = OMIT,
165
322
  artifact: typing.Optional[core.File] = OMIT,
@@ -171,8 +328,8 @@ class RawWorkflowsClient:
171
328
  """
172
329
  Parameters
173
330
  ----------
174
- exec_config : WorkflowPushExecConfig
175
- The execution configuration of the workflow.
331
+ exec_config : typing.Optional[WorkflowPushExecConfig]
332
+ The execution configuration of the workflow. If not provided, it will be derived from the artifact.
176
333
 
177
334
  workflow_sandbox_id : typing.Optional[str]
178
335
 
@@ -235,6 +392,8 @@ class RawWorkflowsClient:
235
392
  *,
236
393
  files: typing.Dict[str, typing.Optional[typing.Any]],
237
394
  module: typing.Optional[str] = OMIT,
395
+ runner_config: typing.Optional[RunnerConfigRequest] = OMIT,
396
+ type_checker: typing.Optional[TypeCheckerEnum] = OMIT,
238
397
  request_options: typing.Optional[RequestOptions] = None,
239
398
  ) -> HttpResponse[typing.Dict[str, typing.Optional[typing.Any]]]:
240
399
  """
@@ -246,6 +405,15 @@ class RawWorkflowsClient:
246
405
 
247
406
  module : typing.Optional[str]
248
407
 
408
+ runner_config : typing.Optional[RunnerConfigRequest]
409
+
410
+ type_checker : typing.Optional[TypeCheckerEnum]
411
+ Optional type checker to run during serialization. Supported values: mypy, zuban, default.
412
+
413
+ * `mypy` - Mypy
414
+ * `zuban` - Zuban
415
+ * `default` - Default
416
+
249
417
  request_options : typing.Optional[RequestOptions]
250
418
  Request-specific configuration.
251
419
 
@@ -261,6 +429,10 @@ class RawWorkflowsClient:
261
429
  json={
262
430
  "files": files,
263
431
  "module": module,
432
+ "runner_config": convert_and_respect_annotation_metadata(
433
+ object_=runner_config, annotation=typing.Optional[RunnerConfigRequest], direction="write"
434
+ ),
435
+ "type_checker": type_checker,
264
436
  },
265
437
  headers={
266
438
  "content-type": "application/json",
@@ -419,10 +591,160 @@ class AsyncRawWorkflowsClient:
419
591
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
420
592
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
421
593
 
594
+ async def execute_node(
595
+ self,
596
+ *,
597
+ files: typing.Dict[str, str],
598
+ node: str,
599
+ inputs: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
600
+ request_options: typing.Optional[RequestOptions] = None,
601
+ ) -> AsyncHttpResponse[WorkflowSandboxExecuteNodeResponse]:
602
+ """
603
+ Parameters
604
+ ----------
605
+ files : typing.Dict[str, str]
606
+
607
+ node : str
608
+
609
+ inputs : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
610
+
611
+ request_options : typing.Optional[RequestOptions]
612
+ Request-specific configuration.
613
+
614
+ Returns
615
+ -------
616
+ AsyncHttpResponse[WorkflowSandboxExecuteNodeResponse]
617
+
618
+ """
619
+ _response = await self._client_wrapper.httpx_client.request(
620
+ "v1/workflows/execute-node",
621
+ base_url=self._client_wrapper.get_environment().default,
622
+ method="POST",
623
+ json={
624
+ "files": files,
625
+ "node": node,
626
+ "inputs": inputs,
627
+ },
628
+ headers={
629
+ "content-type": "application/json",
630
+ },
631
+ request_options=request_options,
632
+ omit=OMIT,
633
+ )
634
+ try:
635
+ if 200 <= _response.status_code < 300:
636
+ _data = typing.cast(
637
+ WorkflowSandboxExecuteNodeResponse,
638
+ parse_obj_as(
639
+ type_=WorkflowSandboxExecuteNodeResponse, # type: ignore
640
+ object_=_response.json(),
641
+ ),
642
+ )
643
+ return AsyncHttpResponse(response=_response, data=_data)
644
+ if _response.status_code == 400:
645
+ raise BadRequestError(
646
+ headers=dict(_response.headers),
647
+ body=typing.cast(
648
+ typing.Optional[typing.Any],
649
+ parse_obj_as(
650
+ type_=typing.Optional[typing.Any], # type: ignore
651
+ object_=_response.json(),
652
+ ),
653
+ ),
654
+ )
655
+ if _response.status_code == 500:
656
+ raise InternalServerError(
657
+ headers=dict(_response.headers),
658
+ body=typing.cast(
659
+ typing.Optional[typing.Any],
660
+ parse_obj_as(
661
+ type_=typing.Optional[typing.Any], # type: ignore
662
+ object_=_response.json(),
663
+ ),
664
+ ),
665
+ )
666
+ _response_json = _response.json()
667
+ except JSONDecodeError:
668
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
669
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
670
+
671
+ async def workflow_execution_status(
672
+ self, execution_id: str, *, request_options: typing.Optional[RequestOptions] = None
673
+ ) -> AsyncHttpResponse[CheckWorkflowExecutionStatusResponse]:
674
+ """
675
+ Checks if a workflow execution is currently executing (not fulfilled, not rejected, and has no end time).
676
+ Uses the ClickHouse Prime summary materialized view.
677
+
678
+ Parameters
679
+ ----------
680
+ execution_id : str
681
+
682
+ request_options : typing.Optional[RequestOptions]
683
+ Request-specific configuration.
684
+
685
+ Returns
686
+ -------
687
+ AsyncHttpResponse[CheckWorkflowExecutionStatusResponse]
688
+
689
+ """
690
+ _response = await self._client_wrapper.httpx_client.request(
691
+ f"v1/workflows/executions/{jsonable_encoder(execution_id)}/status",
692
+ base_url=self._client_wrapper.get_environment().predict,
693
+ method="GET",
694
+ request_options=request_options,
695
+ )
696
+ try:
697
+ if 200 <= _response.status_code < 300:
698
+ _data = typing.cast(
699
+ CheckWorkflowExecutionStatusResponse,
700
+ parse_obj_as(
701
+ type_=CheckWorkflowExecutionStatusResponse, # type: ignore
702
+ object_=_response.json(),
703
+ ),
704
+ )
705
+ return AsyncHttpResponse(response=_response, data=_data)
706
+ if _response.status_code == 400:
707
+ raise BadRequestError(
708
+ headers=dict(_response.headers),
709
+ body=typing.cast(
710
+ typing.Optional[typing.Any],
711
+ parse_obj_as(
712
+ type_=typing.Optional[typing.Any], # type: ignore
713
+ object_=_response.json(),
714
+ ),
715
+ ),
716
+ )
717
+ if _response.status_code == 404:
718
+ raise NotFoundError(
719
+ headers=dict(_response.headers),
720
+ body=typing.cast(
721
+ typing.Optional[typing.Any],
722
+ parse_obj_as(
723
+ type_=typing.Optional[typing.Any], # type: ignore
724
+ object_=_response.json(),
725
+ ),
726
+ ),
727
+ )
728
+ if _response.status_code == 500:
729
+ raise InternalServerError(
730
+ headers=dict(_response.headers),
731
+ body=typing.cast(
732
+ typing.Optional[typing.Any],
733
+ parse_obj_as(
734
+ type_=typing.Optional[typing.Any], # type: ignore
735
+ object_=_response.json(),
736
+ ),
737
+ ),
738
+ )
739
+ _response_json = _response.json()
740
+ except JSONDecodeError:
741
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
742
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
743
+
422
744
  async def push(
423
745
  self,
424
746
  *,
425
- exec_config: WorkflowPushExecConfig,
747
+ exec_config: typing.Optional[WorkflowPushExecConfig] = OMIT,
426
748
  workflow_sandbox_id: typing.Optional[str] = OMIT,
427
749
  deployment_config: typing.Optional[WorkflowPushDeploymentConfigRequest] = OMIT,
428
750
  artifact: typing.Optional[core.File] = OMIT,
@@ -434,8 +756,8 @@ class AsyncRawWorkflowsClient:
434
756
  """
435
757
  Parameters
436
758
  ----------
437
- exec_config : WorkflowPushExecConfig
438
- The execution configuration of the workflow.
759
+ exec_config : typing.Optional[WorkflowPushExecConfig]
760
+ The execution configuration of the workflow. If not provided, it will be derived from the artifact.
439
761
 
440
762
  workflow_sandbox_id : typing.Optional[str]
441
763
 
@@ -498,6 +820,8 @@ class AsyncRawWorkflowsClient:
498
820
  *,
499
821
  files: typing.Dict[str, typing.Optional[typing.Any]],
500
822
  module: typing.Optional[str] = OMIT,
823
+ runner_config: typing.Optional[RunnerConfigRequest] = OMIT,
824
+ type_checker: typing.Optional[TypeCheckerEnum] = OMIT,
501
825
  request_options: typing.Optional[RequestOptions] = None,
502
826
  ) -> AsyncHttpResponse[typing.Dict[str, typing.Optional[typing.Any]]]:
503
827
  """
@@ -509,6 +833,15 @@ class AsyncRawWorkflowsClient:
509
833
 
510
834
  module : typing.Optional[str]
511
835
 
836
+ runner_config : typing.Optional[RunnerConfigRequest]
837
+
838
+ type_checker : typing.Optional[TypeCheckerEnum]
839
+ Optional type checker to run during serialization. Supported values: mypy, zuban, default.
840
+
841
+ * `mypy` - Mypy
842
+ * `zuban` - Zuban
843
+ * `default` - Default
844
+
512
845
  request_options : typing.Optional[RequestOptions]
513
846
  Request-specific configuration.
514
847
 
@@ -524,6 +857,10 @@ class AsyncRawWorkflowsClient:
524
857
  json={
525
858
  "files": files,
526
859
  "module": module,
860
+ "runner_config": convert_and_respect_annotation_metadata(
861
+ object_=runner_config, annotation=typing.Optional[RunnerConfigRequest], direction="write"
862
+ ),
863
+ "type_checker": type_checker,
527
864
  },
528
865
  headers={
529
866
  "content-type": "application/json",
@@ -55,6 +55,8 @@ from .chat_message_content_request import ChatMessageContentRequest
55
55
  from .chat_message_prompt_block import ChatMessagePromptBlock
56
56
  from .chat_message_request import ChatMessageRequest
57
57
  from .chat_message_role import ChatMessageRole
58
+ from .check_workflow_execution_status_error import CheckWorkflowExecutionStatusError
59
+ from .check_workflow_execution_status_response import CheckWorkflowExecutionStatusResponse
58
60
  from .code_execution_node_array_result import CodeExecutionNodeArrayResult
59
61
  from .code_execution_node_chat_history_result import CodeExecutionNodeChatHistoryResult
60
62
  from .code_execution_node_error_result import CodeExecutionNodeErrorResult
@@ -67,6 +69,7 @@ from .code_execution_node_result_output import CodeExecutionNodeResultOutput
67
69
  from .code_execution_node_search_results_result import CodeExecutionNodeSearchResultsResult
68
70
  from .code_execution_node_string_result import CodeExecutionNodeStringResult
69
71
  from .code_execution_package import CodeExecutionPackage
72
+ from .code_execution_package_request import CodeExecutionPackageRequest
70
73
  from .code_execution_runtime import CodeExecutionRuntime
71
74
  from .code_executor_input import CodeExecutorInput
72
75
  from .code_executor_response import CodeExecutorResponse
@@ -308,6 +311,8 @@ from .node_execution_fulfilled_body import NodeExecutionFulfilledBody
308
311
  from .node_execution_fulfilled_event import NodeExecutionFulfilledEvent
309
312
  from .node_execution_initiated_body import NodeExecutionInitiatedBody
310
313
  from .node_execution_initiated_event import NodeExecutionInitiatedEvent
314
+ from .node_execution_log_body import NodeExecutionLogBody
315
+ from .node_execution_log_event import NodeExecutionLogEvent
311
316
  from .node_execution_paused_body import NodeExecutionPausedBody
312
317
  from .node_execution_paused_event import NodeExecutionPausedEvent
313
318
  from .node_execution_rejected_body import NodeExecutionRejectedBody
@@ -427,6 +432,7 @@ from .release_tag_source import ReleaseTagSource
427
432
  from .replace_test_suite_test_case_request import ReplaceTestSuiteTestCaseRequest
428
433
  from .rich_text_child_block import RichTextChildBlock
429
434
  from .rich_text_prompt_block import RichTextPromptBlock
435
+ from .runner_config_request import RunnerConfigRequest
430
436
  from .sandbox_scenario import SandboxScenario
431
437
  from .scenario_input import ScenarioInput
432
438
  from .scenario_input_audio_variable_value import ScenarioInputAudioVariableValue
@@ -458,6 +464,7 @@ from .sentence_chunker_config import SentenceChunkerConfig
458
464
  from .sentence_chunker_config_request import SentenceChunkerConfigRequest
459
465
  from .sentence_chunking import SentenceChunking
460
466
  from .sentence_chunking_request import SentenceChunkingRequest
467
+ from .severity_enum import SeverityEnum
461
468
  from .slim_composio_tool_definition import SlimComposioToolDefinition
462
469
  from .slim_deployment_read import SlimDeploymentRead
463
470
  from .slim_document import SlimDocument
@@ -603,6 +610,7 @@ from .token_overlapping_window_chunker_config import TokenOverlappingWindowChunk
603
610
  from .token_overlapping_window_chunker_config_request import TokenOverlappingWindowChunkerConfigRequest
604
611
  from .token_overlapping_window_chunking import TokenOverlappingWindowChunking
605
612
  from .token_overlapping_window_chunking_request import TokenOverlappingWindowChunkingRequest
613
+ from .type_checker_enum import TypeCheckerEnum
606
614
  from .unit_enum import UnitEnum
607
615
  from .update_active_workspace_response import UpdateActiveWorkspaceResponse
608
616
  from .upload_document_response import UploadDocumentResponse
@@ -733,6 +741,7 @@ from .workflow_result_event_output_data_string import WorkflowResultEventOutputD
733
741
  from .workflow_result_event_state import WorkflowResultEventState
734
742
  from .workflow_sandbox_display_data import WorkflowSandboxDisplayData
735
743
  from .workflow_sandbox_example import WorkflowSandboxExample
744
+ from .workflow_sandbox_execute_node_response import WorkflowSandboxExecuteNodeResponse
736
745
  from .workflow_sandbox_parent_context import WorkflowSandboxParentContext
737
746
  from .workflow_stream_event import WorkflowStreamEvent
738
747
  from .workspace_display_config import WorkspaceDisplayConfig
@@ -785,6 +794,8 @@ __all__ = [
785
794
  "ChatMessagePromptBlock",
786
795
  "ChatMessageRequest",
787
796
  "ChatMessageRole",
797
+ "CheckWorkflowExecutionStatusError",
798
+ "CheckWorkflowExecutionStatusResponse",
788
799
  "CodeExecutionNodeArrayResult",
789
800
  "CodeExecutionNodeChatHistoryResult",
790
801
  "CodeExecutionNodeErrorResult",
@@ -797,6 +808,7 @@ __all__ = [
797
808
  "CodeExecutionNodeSearchResultsResult",
798
809
  "CodeExecutionNodeStringResult",
799
810
  "CodeExecutionPackage",
811
+ "CodeExecutionPackageRequest",
800
812
  "CodeExecutionRuntime",
801
813
  "CodeExecutorInput",
802
814
  "CodeExecutorResponse",
@@ -1034,6 +1046,8 @@ __all__ = [
1034
1046
  "NodeExecutionFulfilledEvent",
1035
1047
  "NodeExecutionInitiatedBody",
1036
1048
  "NodeExecutionInitiatedEvent",
1049
+ "NodeExecutionLogBody",
1050
+ "NodeExecutionLogEvent",
1037
1051
  "NodeExecutionPausedBody",
1038
1052
  "NodeExecutionPausedEvent",
1039
1053
  "NodeExecutionRejectedBody",
@@ -1153,6 +1167,7 @@ __all__ = [
1153
1167
  "ReplaceTestSuiteTestCaseRequest",
1154
1168
  "RichTextChildBlock",
1155
1169
  "RichTextPromptBlock",
1170
+ "RunnerConfigRequest",
1156
1171
  "SandboxScenario",
1157
1172
  "ScenarioInput",
1158
1173
  "ScenarioInputAudioVariableValue",
@@ -1184,6 +1199,7 @@ __all__ = [
1184
1199
  "SentenceChunkerConfigRequest",
1185
1200
  "SentenceChunking",
1186
1201
  "SentenceChunkingRequest",
1202
+ "SeverityEnum",
1187
1203
  "SlimComposioToolDefinition",
1188
1204
  "SlimDeploymentRead",
1189
1205
  "SlimDocument",
@@ -1313,6 +1329,7 @@ __all__ = [
1313
1329
  "TokenOverlappingWindowChunkerConfigRequest",
1314
1330
  "TokenOverlappingWindowChunking",
1315
1331
  "TokenOverlappingWindowChunkingRequest",
1332
+ "TypeCheckerEnum",
1316
1333
  "UnitEnum",
1317
1334
  "UpdateActiveWorkspaceResponse",
1318
1335
  "UploadDocumentResponse",
@@ -1443,6 +1460,7 @@ __all__ = [
1443
1460
  "WorkflowResultEventState",
1444
1461
  "WorkflowSandboxDisplayData",
1445
1462
  "WorkflowSandboxExample",
1463
+ "WorkflowSandboxExecuteNodeResponse",
1446
1464
  "WorkflowSandboxParentContext",
1447
1465
  "WorkflowStreamEvent",
1448
1466
  "WorkspaceDisplayConfig",
@@ -3,5 +3,5 @@
3
3
  import typing
4
4
 
5
5
  ApiActorTypeEnum = typing.Union[
6
- typing.Literal["WORKSPACE_API_KEY", "ENVIRONMENT_API_KEY", "JWT", "SERVICE_TOKEN"], typing.Any
6
+ typing.Literal["ANONYMOUS", "WORKSPACE_API_KEY", "ENVIRONMENT_API_KEY", "JWT", "SERVICE_TOKEN"], typing.Any
7
7
  ]
@@ -0,0 +1,21 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .workflow_execution_event_error_code import WorkflowExecutionEventErrorCode
8
+
9
+
10
+ class CheckWorkflowExecutionStatusError(UniversalBaseModel):
11
+ message: typing.Optional[str] = None
12
+ code: typing.Optional[WorkflowExecutionEventErrorCode] = None
13
+
14
+ if IS_PYDANTIC_V2:
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
16
+ else:
17
+
18
+ class Config:
19
+ frozen = True
20
+ smart_union = True
21
+ extra = pydantic.Extra.allow
@@ -0,0 +1,29 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .check_workflow_execution_status_error import CheckWorkflowExecutionStatusError
8
+ from .workflow_result_event_state import WorkflowResultEventState
9
+
10
+
11
+ class CheckWorkflowExecutionStatusResponse(UniversalBaseModel):
12
+ """
13
+ Response serializer for workflow execution status check.
14
+ """
15
+
16
+ status: WorkflowResultEventState
17
+ outputs: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
18
+ error: typing.Optional[CheckWorkflowExecutionStatusError] = None
19
+ execution_id: str
20
+ execution_detail_url: typing.Optional[str] = None
21
+
22
+ if IS_PYDANTIC_V2:
23
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
24
+ else:
25
+
26
+ class Config:
27
+ frozen = True
28
+ smart_union = True
29
+ extra = pydantic.Extra.allow
@@ -0,0 +1,21 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class CodeExecutionPackageRequest(UniversalBaseModel):
10
+ version: str
11
+ name: str
12
+ repository: typing.Optional[str] = None
13
+
14
+ if IS_PYDANTIC_V2:
15
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
16
+ else:
17
+
18
+ class Config:
19
+ frozen = True
20
+ smart_union = True
21
+ extra = pydantic.Extra.allow
@@ -13,6 +13,11 @@ class ComposioExecuteToolRequest(UniversalBaseModel):
13
13
 
14
14
  provider: typing.Literal["COMPOSIO"] = "COMPOSIO"
15
15
  arguments: typing.Dict[str, typing.Optional[typing.Any]]
16
+ toolkit_version: typing.Optional[str] = None
17
+ integration_name: typing.Optional[str] = None
18
+ integration: typing.Optional[str] = None
19
+ tool_name: typing.Optional[str] = None
20
+ tool: typing.Optional[str] = None
16
21
 
17
22
  if IS_PYDANTIC_V2:
18
23
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -19,6 +19,7 @@ class ComposioToolDefinition(UniversalBaseModel):
19
19
  description: str
20
20
  input_parameters: typing.Dict[str, typing.Optional[typing.Any]]
21
21
  output_parameters: typing.Dict[str, typing.Optional[typing.Any]]
22
+ toolkit_version: str
22
23
 
23
24
  if IS_PYDANTIC_V2:
24
25
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -10,6 +10,7 @@ from .code_execution_package import CodeExecutionPackage
10
10
  class ContainerImageBuildConfig(UniversalBaseModel):
11
11
  packages: typing.List[CodeExecutionPackage]
12
12
  user_script: typing.Optional[str] = None
13
+ hotswappable_version: typing.Optional[str] = None
13
14
 
14
15
  if IS_PYDANTIC_V2:
15
16
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -10,6 +10,7 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
10
10
  class ContainerImageContainerImageTag(UniversalBaseModel):
11
11
  name: str
12
12
  modified: dt.datetime
13
+ history_item_sha: typing.Optional[str] = None
13
14
 
14
15
  if IS_PYDANTIC_V2:
15
16
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
@@ -7,8 +7,11 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
7
 
8
8
 
9
9
  class DatasetRowPushRequest(UniversalBaseModel):
10
+ id: typing.Optional[str] = None
10
11
  label: str
11
12
  inputs: typing.Dict[str, typing.Optional[typing.Any]]
13
+ mocks: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None
14
+ workflow_trigger_id: typing.Optional[str] = None
12
15
 
13
16
  if IS_PYDANTIC_V2:
14
17
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2