conductor-python 1.3.2__tar.gz → 1.3.4__tar.gz

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 (252) hide show
  1. conductor_python-1.3.4/PKG-INFO +533 -0
  2. conductor_python-1.3.4/README.md +499 -0
  3. {conductor_python-1.3.2 → conductor_python-1.3.4}/pyproject.toml +1 -1
  4. conductor_python-1.3.4/src/conductor/client/ai/configuration.py +22 -0
  5. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/ai/orchestrator.py +1 -1
  6. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/automator/json_schema_generator.py +7 -5
  7. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/automator/task_handler.py +230 -19
  8. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/configuration/configuration.py +1 -1
  9. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/async_rest.py +88 -60
  10. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/rest.py +95 -60
  11. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/telemetry/metrics_collector.py +107 -76
  12. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/telemetry/model/metric_documentation.py +1 -0
  13. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/telemetry/model/metric_name.py +1 -0
  14. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/__init__.py +36 -0
  15. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/call_mcp_tool.py +49 -0
  16. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/chat_message.py +52 -0
  17. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/generate_audio.py +69 -0
  18. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/generate_image.py +73 -0
  19. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/list_mcp_tools.py +43 -0
  20. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_chat_complete.py +157 -0
  21. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_generate_embeddings.py +52 -0
  22. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_index_documents.py +83 -0
  23. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_index_text.py +79 -0
  24. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_query_embeddings.py +52 -0
  25. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_search_embeddings.py +64 -0
  26. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_search_index.py +64 -0
  27. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_store_embeddings.py +65 -0
  28. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/llm_text_complete.py +96 -0
  29. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/tool_call.py +44 -0
  30. conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/tool_spec.py +49 -0
  31. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/task_type.py +7 -1
  32. conductor_python-1.3.2/PKG-INFO +0 -1111
  33. conductor_python-1.3.2/README.md +0 -1077
  34. conductor_python-1.3.2/src/conductor/client/ai/configuration.py +0 -13
  35. conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks/llm_chat_complete.py +0 -58
  36. conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks/llm_generate_embeddings.py +0 -22
  37. conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks/llm_index_documents.py +0 -67
  38. conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks/llm_index_text.py +0 -46
  39. conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks/llm_query_embeddings.py +0 -26
  40. conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks/llm_search_index.py +0 -28
  41. conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks/llm_text_complete.py +0 -52
  42. conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks/utils/__init__.py +0 -0
  43. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/__init__.py +0 -0
  44. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/__init__.py +0 -0
  45. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/ai/__init__.py +0 -0
  46. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/ai/integrations.py +0 -0
  47. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/authorization_client.py +0 -0
  48. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/automator/__init__.py +0 -0
  49. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/automator/async_task_runner.py +0 -0
  50. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/automator/task_runner.py +0 -0
  51. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/automator/utils.py +0 -0
  52. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/configuration/__init__.py +0 -0
  53. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/configuration/settings/__init__.py +0 -0
  54. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/configuration/settings/authentication_settings.py +0 -0
  55. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/configuration/settings/metrics_settings.py +0 -0
  56. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/context/__init__.py +0 -0
  57. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/context/task_context.py +0 -0
  58. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/__init__.py +0 -0
  59. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/conductor_event.py +0 -0
  60. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/event_client.py +0 -0
  61. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/event_dispatcher.py +0 -0
  62. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/listener_register.py +0 -0
  63. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/listeners.py +0 -0
  64. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/queue/__init__.py +0 -0
  65. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/queue/kafka_queue_configuration.py +0 -0
  66. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/queue/queue_configuration.py +0 -0
  67. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/queue/queue_worker_configuration.py +0 -0
  68. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/sync_event_dispatcher.py +0 -0
  69. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/sync_listener_register.py +0 -0
  70. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/task_events.py +0 -0
  71. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/task_runner_events.py +0 -0
  72. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/event/workflow_events.py +0 -0
  73. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/exceptions/__init__.py +0 -0
  74. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/exceptions/api_error.py +0 -0
  75. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/exceptions/api_exception_handler.py +0 -0
  76. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/helpers/__init__.py +0 -0
  77. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/helpers/helper.py +0 -0
  78. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/__init__.py +0 -0
  79. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/__init__.py +0 -0
  80. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/application_resource_api.py +0 -0
  81. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/async_task_resource_api.py +0 -0
  82. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/authorization_resource_api.py +0 -0
  83. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/event_resource_api.py +0 -0
  84. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/gateway_auth_resource_api.py +0 -0
  85. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/group_resource_api.py +0 -0
  86. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/integration_resource_api.py +0 -0
  87. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/metadata_resource_api.py +0 -0
  88. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/prompt_resource_api.py +0 -0
  89. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/role_resource_api.py +0 -0
  90. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/scheduler_resource_api.py +0 -0
  91. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/schema_resource_api.py +0 -0
  92. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/secret_resource_api.py +0 -0
  93. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/service_registry_resource_api.py +0 -0
  94. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/task_resource_api.py +0 -0
  95. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/token_resource_api.py +0 -0
  96. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/user_resource_api.py +0 -0
  97. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/workflow_bulk_resource_api.py +0 -0
  98. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api/workflow_resource_api.py +0 -0
  99. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/api_client.py +0 -0
  100. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/async_api_client.py +0 -0
  101. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/__init__.py +0 -0
  102. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/action.py +0 -0
  103. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/auditable.py +0 -0
  104. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/authentication_config.py +0 -0
  105. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/authorization_request.py +0 -0
  106. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/bulk_response.py +0 -0
  107. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/circuit_breaker_transition_response.py +0 -0
  108. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/conductor_application.py +0 -0
  109. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/conductor_user.py +0 -0
  110. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/correlation_ids_search_request.py +0 -0
  111. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/create_or_update_application_request.py +0 -0
  112. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/create_or_update_role_request.py +0 -0
  113. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/event_handler.py +0 -0
  114. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/external_storage_location.py +0 -0
  115. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/generate_token_request.py +0 -0
  116. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/group.py +0 -0
  117. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/health.py +0 -0
  118. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/health_check_status.py +0 -0
  119. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/integration.py +0 -0
  120. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/integration_api.py +0 -0
  121. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/integration_api_update.py +0 -0
  122. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/integration_def.py +0 -0
  123. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/integration_update.py +0 -0
  124. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/permission.py +0 -0
  125. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/poll_data.py +0 -0
  126. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/prompt_template.py +0 -0
  127. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/prompt_test_request.py +0 -0
  128. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/proto_registry_entry.py +0 -0
  129. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/rate_limit.py +0 -0
  130. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/request_param.py +0 -0
  131. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/rerun_workflow_request.py +0 -0
  132. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/response.py +0 -0
  133. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/role.py +0 -0
  134. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/save_schedule_request.py +0 -0
  135. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/schema_def.py +0 -0
  136. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/scrollable_search_result_workflow_summary.py +0 -0
  137. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_task.py +0 -0
  138. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_task_summary.py +0 -0
  139. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_workflow.py +0 -0
  140. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_workflow_schedule_execution_model.py +0 -0
  141. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/search_result_workflow_summary.py +0 -0
  142. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/service_method.py +0 -0
  143. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/service_registry.py +0 -0
  144. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/signal_response.py +0 -0
  145. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/skip_task_request.py +0 -0
  146. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/start_workflow.py +0 -0
  147. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/start_workflow_request.py +0 -0
  148. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/state_change_event.py +0 -0
  149. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/sub_workflow_params.py +0 -0
  150. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/subject_ref.py +0 -0
  151. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/tag_object.py +0 -0
  152. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/tag_string.py +0 -0
  153. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/target_ref.py +0 -0
  154. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/task.py +0 -0
  155. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/task_def.py +0 -0
  156. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/task_details.py +0 -0
  157. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/task_exec_log.py +0 -0
  158. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/task_result.py +0 -0
  159. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/task_result_status.py +0 -0
  160. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/task_summary.py +0 -0
  161. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/terminate_workflow.py +0 -0
  162. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/token.py +0 -0
  163. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/update_workflow_variables.py +0 -0
  164. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/upsert_group_request.py +0 -0
  165. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/upsert_user_request.py +0 -0
  166. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow.py +0 -0
  167. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_def.py +0 -0
  168. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_run.py +0 -0
  169. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_schedule.py +0 -0
  170. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_schedule_execution_model.py +0 -0
  171. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_state_update.py +0 -0
  172. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_status.py +0 -0
  173. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_summary.py +0 -0
  174. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_tag.py +0 -0
  175. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_task.py +0 -0
  176. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/models/workflow_test_request.py +0 -0
  177. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/http/thread.py +0 -0
  178. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/integration_client.py +0 -0
  179. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/metadata_client.py +0 -0
  180. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/__init__.py +0 -0
  181. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/api/__init__.py +0 -0
  182. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/api/tags_api.py +0 -0
  183. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/models/__init__.py +0 -0
  184. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/models/access_key.py +0 -0
  185. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/models/access_key_status.py +0 -0
  186. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/models/access_type.py +0 -0
  187. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/models/created_access_key.py +0 -0
  188. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/models/granted_permission.py +0 -0
  189. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/models/metadata_tag.py +0 -0
  190. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/models/ratelimit_tag.py +0 -0
  191. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_authorization_client.py +0 -0
  192. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_base_client.py +0 -0
  193. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_integration_client.py +0 -0
  194. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_metadata_client.py +0 -0
  195. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_prompt_client.py +0 -0
  196. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_scheduler_client.py +0 -0
  197. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_schema_client.py +0 -0
  198. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_secret_client.py +0 -0
  199. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_service_registry_client.py +0 -0
  200. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_task_client.py +0 -0
  201. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes/orkes_workflow_client.py +0 -0
  202. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/orkes_clients.py +0 -0
  203. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/prompt_client.py +0 -0
  204. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/scheduler_client.py +0 -0
  205. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/schema_client.py +0 -0
  206. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/secret_client.py +0 -0
  207. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/service_registry_client.py +0 -0
  208. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/task_client.py +0 -0
  209. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/telemetry/__init__.py +0 -0
  210. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/telemetry/model/__init__.py +0 -0
  211. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/telemetry/model/metric_label.py +0 -0
  212. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/worker/__init__.py +0 -0
  213. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/worker/exception.py +0 -0
  214. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/worker/worker.py +0 -0
  215. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/worker/worker_config.py +0 -0
  216. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/worker/worker_interface.py +0 -0
  217. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/worker/worker_loader.py +0 -0
  218. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/worker/worker_task.py +0 -0
  219. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/__init__.py +0 -0
  220. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/conductor_workflow.py +0 -0
  221. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/executor/__init__.py +0 -0
  222. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/executor/workflow_executor.py +0 -0
  223. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/__init__.py +0 -0
  224. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/do_while_task.py +0 -0
  225. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/dynamic_fork_task.py +0 -0
  226. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/dynamic_task.py +0 -0
  227. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/event_task.py +0 -0
  228. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/fork_task.py +0 -0
  229. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/get_document.py +0 -0
  230. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/http_poll_task.py +0 -0
  231. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/http_task.py +0 -0
  232. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/human_task.py +0 -0
  233. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/inline.py +0 -0
  234. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/javascript_task.py +0 -0
  235. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/join_task.py +0 -0
  236. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/json_jq_task.py +0 -0
  237. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/kafka_publish.py +0 -0
  238. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/kafka_publish_input.py +0 -0
  239. {conductor_python-1.3.2/src/conductor/client/workflow/task/llm_tasks → conductor_python-1.3.4/src/conductor/client/workflow/task/llm_tasks/utils}/__init__.py +0 -0
  240. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/utils/embedding_model.py +0 -0
  241. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/llm_tasks/utils/prompt.py +0 -0
  242. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/set_variable_task.py +0 -0
  243. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/simple_task.py +0 -0
  244. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/start_workflow_task.py +0 -0
  245. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/sub_workflow_task.py +0 -0
  246. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/switch_task.py +0 -0
  247. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/task.py +0 -0
  248. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/terminate_task.py +0 -0
  249. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/timeout_policy.py +0 -0
  250. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/wait_for_webhook_task.py +0 -0
  251. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow/task/wait_task.py +0 -0
  252. {conductor_python-1.3.2 → conductor_python-1.3.4}/src/conductor/client/workflow_client.py +0 -0
@@ -0,0 +1,533 @@
1
+ Metadata-Version: 2.4
2
+ Name: conductor-python
3
+ Version: 1.3.4
4
+ Summary: Python SDK for working with https://github.com/conductor-oss/conductor
5
+ License: Apache-2.0
6
+ Author: Orkes
7
+ Author-email: developers@orkes.io
8
+ Requires-Python: >=3.9,<3.13
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: System Administrators
12
+ Classifier: License :: OSI Approved :: Apache Software License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.9
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
19
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
+ Requires-Dist: astor (>=0.8.1)
21
+ Requires-Dist: certifi (>=14.5.14)
22
+ Requires-Dist: dacite (>=1.8.1)
23
+ Requires-Dist: deprecated (>=1.2.14)
24
+ Requires-Dist: h2 (>=4.1.0)
25
+ Requires-Dist: httpx[http2] (>=0.26.0)
26
+ Requires-Dist: prometheus-client (>=0.13.1)
27
+ Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
28
+ Requires-Dist: requests (>=2.31.0)
29
+ Requires-Dist: shortuuid (>=1.0.11)
30
+ Requires-Dist: six (>=1.10)
31
+ Requires-Dist: typing-extensions (>=4.2.0)
32
+ Description-Content-Type: text/markdown
33
+
34
+ # Python SDK for Conductor
35
+
36
+ [![CI](https://github.com/conductor-sdk/conductor-python/actions/workflows/pull_request.yml/badge.svg)](https://github.com/conductor-sdk/conductor-python/actions/workflows/pull_request.yml)
37
+ [![PyPI](https://img.shields.io/pypi/v/conductor-python.svg)](https://pypi.org/project/conductor-python/)
38
+ [![Python Versions](https://img.shields.io/pypi/pyversions/conductor-python.svg)](https://pypi.org/project/conductor-python/)
39
+ [![License](https://img.shields.io/pypi/l/conductor-python.svg)](LICENSE)
40
+
41
+ Python SDK for [Conductor](https://www.conductor-oss.org/) (OSS and Orkes Conductor) — an orchestration platform for building distributed applications, AI agents, and workflow-driven microservices. Define workflows as code, run workers anywhere, and let Conductor handle retries, state management, and observability.
42
+
43
+ If you find [Conductor](https://github.com/conductor-oss/conductor) useful, please consider giving it a star on GitHub -- it helps the project grow.
44
+
45
+ [![GitHub stars](https://img.shields.io/github/stars/conductor-oss/conductor.svg?style=social&label=Star&maxAge=)](https://GitHub.com/conductor-oss/conductor/)
46
+
47
+
48
+
49
+ <!-- TOC -->
50
+ * [Python SDK for Conductor](#python-sdk-for-conductor)
51
+ * [Start Conductor server](#start--conductor-server)
52
+ * [Install the SDK](#install-the-sdk)
53
+ * [60-Second Quickstart](#60-second-quickstart)
54
+ * [Comprehensive worker example](#comprehensive-worker-example-)
55
+ * [Workers](#workers)
56
+ * [Monitoring Workers](#monitoring-workers)
57
+ * [Workflows](#workflows)
58
+ * [Troubleshooting](#troubleshooting)
59
+ * [AI & LLM Workflows](#ai--llm-workflows)
60
+ * [Examples](#examples)
61
+ * [API Journey Examples](#api-journey-examples)
62
+ * [Documentation](#documentation)
63
+ * [Support](#support)
64
+ * [Frequently Asked Questions](#frequently-asked-questions)
65
+ * [License](#license)
66
+ <!-- TOC -->
67
+
68
+
69
+ ## Start Conductor server
70
+
71
+ If you don't already have a Conductor server running, pick one:
72
+
73
+ **Docker Compose (recommended, includes UI):**
74
+
75
+ ```shell
76
+ docker run -p 8080:8080 conductoross/conductor:latest
77
+ ```
78
+ The UI will be available at `http://localhost:8080` and the API at `http://localhost:8080/api`
79
+
80
+ **MacOS / Linux (one-liner):** (If you don't want to use docker, you can install and run the binary directly)
81
+ ```shell
82
+ curl -sSL https://raw.githubusercontent.com/conductor-oss/conductor/main/conductor_server.sh | sh
83
+ ```
84
+
85
+ **Conductor CLI**
86
+ ```shell
87
+ # Installs conductor cli
88
+ npm install -g @conductor-oss/conductor-cli
89
+
90
+ # Start the open source conductor server
91
+ conductor server start
92
+ # see conductor server --help for all the available commands
93
+ ```
94
+
95
+ ## Install the SDK
96
+
97
+ ```shell
98
+ pip install conductor-python
99
+ ```
100
+
101
+ ## 60-Second Quickstart
102
+
103
+ **Step 1: Create a workflow**
104
+
105
+ Workflows are definitions that reference task types (e.g. a SIMPLE task called `greet`). We'll build a workflow called
106
+ `greetings` that runs one task and returns its output.
107
+
108
+ Assuming you have a `WorkflowExecutor` (`executor`) and a worker task (`greet`):
109
+
110
+ ```python
111
+ from conductor.client.workflow.conductor_workflow import ConductorWorkflow
112
+
113
+ workflow = ConductorWorkflow(name='greetings', version=1, executor=executor)
114
+ greet_task = greet(task_ref_name='greet_ref', name=workflow.input('name'))
115
+ workflow >> greet_task
116
+ workflow.output_parameters({'result': greet_task.output('result')})
117
+ workflow.register(overwrite=True)
118
+ ```
119
+
120
+ **Step 2: Write worker**
121
+
122
+ Workers are just Python functions decorated with `@worker_task` that poll Conductor for tasks and execute them.
123
+
124
+ ```python
125
+ from conductor.client.worker.worker_task import worker_task
126
+
127
+ # register_task_def=True is convenient for local dev quickstarts; in production, manage task definitions separately.
128
+ @worker_task(task_definition_name='greet', register_task_def=True)
129
+ def greet(name: str) -> str:
130
+ return f'Hello {name}'
131
+ ```
132
+
133
+ **Step 3: Run your first workflow app**
134
+
135
+ Create a `quickstart.py` with the following:
136
+
137
+ ```python
138
+ from conductor.client.automator.task_handler import TaskHandler
139
+ from conductor.client.configuration.configuration import Configuration
140
+ from conductor.client.orkes_clients import OrkesClients
141
+ from conductor.client.workflow.conductor_workflow import ConductorWorkflow
142
+ from conductor.client.worker.worker_task import worker_task
143
+
144
+
145
+ # A worker is any Python function.
146
+ @worker_task(task_definition_name='greet', register_task_def=True)
147
+ def greet(name: str) -> str:
148
+ return f'Hello {name}'
149
+
150
+
151
+ def main():
152
+ # Configure the SDK (reads CONDUCTOR_SERVER_URL / CONDUCTOR_AUTH_* from env).
153
+ config = Configuration()
154
+
155
+ clients = OrkesClients(configuration=config)
156
+ executor = clients.get_workflow_executor()
157
+
158
+ # Build a workflow with the >> operator.
159
+ workflow = ConductorWorkflow(name='greetings', version=1, executor=executor)
160
+ greet_task = greet(task_ref_name='greet_ref', name=workflow.input('name'))
161
+ workflow >> greet_task
162
+ workflow.output_parameters({'result': greet_task.output('result')})
163
+ workflow.register(overwrite=True)
164
+
165
+ # Start polling for tasks (one worker subprocess per worker function).
166
+ with TaskHandler(configuration=config, scan_for_annotated_workers=True) as task_handler:
167
+ task_handler.start_processes()
168
+
169
+ # Run the workflow and get the result.
170
+ run = executor.execute(name='greetings', version=1, workflow_input={'name': 'Conductor'})
171
+ print(f'result: {run.output["result"]}')
172
+ print(f'execution: {config.ui_host}/execution/{run.workflow_id}')
173
+
174
+
175
+ if __name__ == '__main__':
176
+ main()
177
+ ```
178
+
179
+ Run it:
180
+
181
+ ```shell
182
+ python quickstart.py
183
+ ```
184
+
185
+ > ### Using Orkes Conductor / Remote Server?
186
+ > Export your authentication credentials as well:
187
+ >
188
+ > ```shell
189
+ > export CONDUCTOR_SERVER_URL="https://your-cluster.orkesconductor.io/api"
190
+ >
191
+ > # If using Orkes Conductor that requires auth key/secret
192
+ > export CONDUCTOR_AUTH_KEY="your-key"
193
+ > export CONDUCTOR_AUTH_SECRET="your-secret"
194
+ >
195
+ > # Optional — set to false to force HTTP/1.1 if your network environment has unstable long-lived HTTP/2 connections (default: true)
196
+ > # export CONDUCTOR_HTTP2_ENABLED=false
197
+ > ```
198
+ > See [Configuration](#configuration) for details.
199
+
200
+ That's it -- you just defined a worker, built a workflow, and executed it. Open the Conductor UI (default:
201
+ [http://localhost:8127](http://localhost:8127)) to see the execution.
202
+
203
+ ## Comprehensive worker example
204
+ The example includes sync + async workers, metrics, and long-running tasks
205
+
206
+ See [examples/workers_e2e.py](examples/workers_e2e.py)
207
+
208
+ ---
209
+
210
+ ## Workers
211
+
212
+ Workers are Python functions that execute Conductor tasks. Decorate any function with `@worker_task` to:
213
+
214
+ - register it as a worker (auto-discovered by `TaskHandler`)
215
+ - use it as a workflow task (call it with `task_ref_name=...`)
216
+
217
+ Note: Workers can also be used by LLMs for tool calling (see [AI & LLM Workflows](#ai--llm-workflows)).
218
+
219
+ ```python
220
+ from conductor.client.worker.worker_task import worker_task
221
+
222
+ @worker_task(task_definition_name='greet')
223
+ def greet(name: str) -> str:
224
+ return f'Hello {name}'
225
+ ```
226
+
227
+ **Async workers** for I/O-bound tasks — the SDK automatically uses `AsyncTaskRunner` (event loop, no thread overhead):
228
+
229
+ ```python
230
+ import httpx
231
+
232
+ @worker_task(task_definition_name='fetch_data')
233
+ async def fetch_data(url: str) -> dict:
234
+ async with httpx.AsyncClient() as client:
235
+ response = await client.get(url)
236
+ return response.json()
237
+ ```
238
+
239
+ **Start workers** with `TaskHandler`:
240
+
241
+ Note: `@worker_task` functions are discovered only after their modules are imported. Either import your worker modules
242
+ explicitly, or pass `import_modules=[...]` when constructing `TaskHandler`.
243
+
244
+ ```python
245
+ from conductor.client.automator.task_handler import TaskHandler
246
+ from conductor.client.configuration.configuration import Configuration
247
+
248
+ api_config = Configuration()
249
+ task_handler = TaskHandler(
250
+ workers=[],
251
+ configuration=api_config,
252
+ scan_for_annotated_workers=True, # auto-discover @worker_task functions
253
+ # monitor_processes=True and restart_on_failure=True by default
254
+ )
255
+ task_handler.start_processes()
256
+ try:
257
+ task_handler.join_processes() # blocks (workers poll forever)
258
+ finally:
259
+ task_handler.stop_processes()
260
+ ```
261
+
262
+ Workers support complex inputs (dataclasses), long-running tasks (`TaskInProgress`), and hierarchical configuration via environment variables.
263
+
264
+ **Resilience: auto-restart and health checks**
265
+
266
+
267
+ Workers are typically long-lived services. By default, `TaskHandler` monitors worker subprocesses and restarts them if
268
+ they exit unexpectedly.
269
+
270
+ For a `/healthcheck` endpoint, you can use:
271
+
272
+ ```python
273
+ task_handler.is_healthy()
274
+ task_handler.get_worker_process_status()
275
+ ```
276
+
277
+ To disable monitoring/restarts (e.g., local debugging):
278
+
279
+ ```python
280
+ TaskHandler(..., monitor_processes=False, restart_on_failure=False)
281
+ ```
282
+
283
+ **Worker Configuration**
284
+
285
+ Workers support hierarchical environment variable configuration — global settings that can be overridden per worker:
286
+
287
+ ```shell
288
+ # Global (all workers)
289
+ export CONDUCTOR_WORKER_ALL_POLL_INTERVAL_MILLIS=250
290
+ export CONDUCTOR_WORKER_ALL_THREAD_COUNT=20
291
+ export CONDUCTOR_WORKER_ALL_DOMAIN=production
292
+
293
+ # Per-worker override
294
+ export CONDUCTOR_WORKER_GREETINGS_THREAD_COUNT=50
295
+ ```
296
+
297
+ See [WORKER_CONFIGURATION.md](WORKER_CONFIGURATION.md) for all options.
298
+
299
+ ## Monitoring Workers
300
+
301
+ Enable Prometheus metrics:
302
+
303
+ ```python
304
+ from conductor.client.automator.task_handler import TaskHandler
305
+ from conductor.client.configuration.configuration import Configuration
306
+ from conductor.client.configuration.settings.metrics_settings import MetricsSettings
307
+
308
+ api_config = Configuration()
309
+ metrics_settings = MetricsSettings(directory='/tmp/conductor-metrics', http_port=8000)
310
+
311
+ task_handler = TaskHandler(configuration=api_config, metrics_settings=metrics_settings, scan_for_annotated_workers=True)
312
+ task_handler.start_processes()
313
+ # Metrics at http://localhost:8000/metrics
314
+ try:
315
+ task_handler.join_processes() # blocks (workers poll forever)
316
+ finally:
317
+ task_handler.stop_processes()
318
+ ```
319
+
320
+ See [METRICS.md](METRICS.md) for details.
321
+
322
+ **Learn more:**
323
+ - [Worker Design & Architecture](docs/design/WORKER_DESIGN.md) — AsyncTaskRunner vs TaskRunner, discovery, lifecycle
324
+ - [Worker Configuration](WORKER_CONFIGURATION.md) — Environment variable configuration system
325
+ - [Complete Worker Guide](docs/WORKER.md) — All worker patterns (function, class, annotation, async)
326
+
327
+ ## Workflows
328
+
329
+ Define workflows in Python using the `>>` operator to chain tasks:
330
+
331
+ ```python
332
+ from conductor.client.configuration.configuration import Configuration
333
+ from conductor.client.orkes_clients import OrkesClients
334
+ from conductor.client.workflow.conductor_workflow import ConductorWorkflow
335
+
336
+ api_config = Configuration()
337
+ clients = OrkesClients(configuration=api_config)
338
+ workflow_executor = clients.get_workflow_executor()
339
+
340
+ workflow = ConductorWorkflow(name='greetings', version=1, executor=workflow_executor)
341
+ # Assuming greet is defined (see Workers section above).
342
+ workflow >> greet(task_ref_name='greet_ref', name=workflow.input('name'))
343
+ # Registering is required if you want to start/execute by name+version; optional if you only execute inline.
344
+ workflow.register(overwrite=True)
345
+ ```
346
+
347
+ **Execute workflows:**
348
+
349
+ ```python
350
+ # Synchronous (waits for completion)
351
+ result = workflow_executor.execute(name='greetings', version=1, workflow_input={'name': 'Orkes'})
352
+ print(result.output)
353
+
354
+ # Asynchronous (returns workflow ID immediately)
355
+ from conductor.client.http.models import StartWorkflowRequest
356
+ request = StartWorkflowRequest(name='greetings', version=1, input={'name': 'Orkes'})
357
+ workflow_id = workflow_executor.start_workflow(request)
358
+
359
+ # Inline (sends the workflow definition with the request; no prior register required)
360
+ run = workflow.execute(workflow_input={'name': 'Orkes'}, wait_for_seconds=10)
361
+ print(run.output)
362
+ ```
363
+
364
+ **Manage running workflows and send signals:**
365
+
366
+ ```python
367
+ from conductor.client.orkes_clients import OrkesClients
368
+
369
+ clients = OrkesClients(configuration=api_config)
370
+ workflow_client = clients.get_workflow_client()
371
+
372
+ workflow_client.pause_workflow(workflow_id)
373
+ workflow_client.resume_workflow(workflow_id)
374
+ workflow_client.terminate_workflow(workflow_id, reason='no longer needed')
375
+ workflow_client.retry_workflow(workflow_id)
376
+ workflow_client.restart_workflow(workflow_id)
377
+ ```
378
+
379
+ **Learn more:**
380
+ - [Workflow Management](docs/WORKFLOW.md) — Start, pause, resume, terminate, retry, search
381
+ - [Workflow Testing](docs/WORKFLOW_TESTING.md) — Unit testing with mock task outputs
382
+ - [Metadata Management](docs/METADATA.md) — Task & workflow definitions
383
+
384
+ ## Troubleshooting
385
+
386
+ - Worker stops polling or crashes: `TaskHandler` monitors and restarts worker subprocesses by default. Consider exposing
387
+ a `/healthcheck` endpoint using `task_handler.is_healthy()` + `task_handler.get_worker_process_status()`. If you
388
+ enable metrics, alert on `worker_restart_total`.
389
+ - `httpcore.RemoteProtocolError: <ConnectionTerminated ...>`: the SDK recreates the underlying HTTP client and retries
390
+ once for idempotent requests. If your environment is still unstable with HTTP/2, set
391
+ `CONDUCTOR_HTTP2_ENABLED=false` (forces HTTP/1.1) — see `docs/WORKER.md`.
392
+ - FastAPI/Uvicorn: avoid running `uvicorn` with multiple web workers unless you explicitly want multiple independent
393
+ `TaskHandler`s polling Conductor (see `examples/fastapi_worker_service.py`).
394
+ ---
395
+ ## AI & LLM Workflows
396
+
397
+ Conductor supports AI-native workflows including agentic tool calling, RAG pipelines, and multi-agent orchestration.
398
+
399
+ **Agentic Workflows**
400
+
401
+ Build AI agents where LLMs dynamically select and call Python workers as tools. See [examples/agentic_workflows/](examples/agentic_workflows/) for all examples.
402
+
403
+ | Example | Description |
404
+ |---------|-------------|
405
+ | [llm_chat.py](examples/agentic_workflows/llm_chat.py) | Automated multi-turn science Q&A between two LLMs |
406
+ | [llm_chat_human_in_loop.py](examples/agentic_workflows/llm_chat_human_in_loop.py) | Interactive chat with WAIT task pauses for user input |
407
+ | [multiagent_chat.py](examples/agentic_workflows/multiagent_chat.py) | Multi-agent debate with moderator routing between panelists |
408
+ | [function_calling_example.py](examples/agentic_workflows/function_calling_example.py) | LLM picks which Python function to call based on user queries |
409
+ | [mcp_weather_agent.py](examples/agentic_workflows/mcp_weather_agent.py) | AI agent using MCP tools for weather queries |
410
+
411
+ **LLM and RAG Workflows**
412
+
413
+ | Example | Description |
414
+ |---------|-------------|
415
+ | [rag_workflow.py](examples/rag_workflow.py) | End-to-end RAG: document conversion (PDF/Word/Excel), pgvector indexing, semantic search, answer generation |
416
+ | [vector_db_helloworld.py](examples/orkes/vector_db_helloworld.py) | Vector database operations: text indexing, embedding generation, and semantic search with Pinecone |
417
+
418
+ ```shell
419
+ # Automated multi-turn chat
420
+ python examples/agentic_workflows/llm_chat.py
421
+
422
+ # Multi-agent debate
423
+ python examples/agentic_workflows/multiagent_chat.py --topic "renewable energy"
424
+
425
+ # RAG pipeline
426
+ pip install "markitdown[pdf]"
427
+ python examples/rag_workflow.py document.pdf "What are the key findings?"
428
+ ```
429
+
430
+ ## Examples
431
+
432
+ See the [Examples Guide](examples/README.md) for the full catalog. Key examples:
433
+
434
+ | Example | Description | Run |
435
+ |---------|-------------|-----|
436
+ | [workers_e2e.py](examples/workers_e2e.py) | End-to-end: sync + async workers, metrics | `python examples/workers_e2e.py` |
437
+ | [fastapi_worker_service.py](examples/fastapi_worker_service.py) | FastAPI: expose a workflow as an API (+ workers) (deps: fastapi, uvicorn) | `uvicorn examples.fastapi_worker_service:app --port 8081 --workers 1` |
438
+ | [helloworld.py](examples/helloworld/helloworld.py) | Minimal hello world | `python examples/helloworld/helloworld.py` |
439
+ | [dynamic_workflow.py](examples/dynamic_workflow.py) | Build workflows programmatically | `python examples/dynamic_workflow.py` |
440
+ | [llm_chat.py](examples/agentic_workflows/llm_chat.py) | AI multi-turn chat | `python examples/agentic_workflows/llm_chat.py` |
441
+ | [rag_workflow.py](examples/rag_workflow.py) | RAG pipeline (PDF → pgvector → answer) | `python examples/rag_workflow.py file.pdf "question"` |
442
+ | [task_context_example.py](examples/task_context_example.py) | Long-running tasks with TaskInProgress | `python examples/task_context_example.py` |
443
+ | [workflow_ops.py](examples/workflow_ops.py) | Pause, resume, terminate workflows | `python examples/workflow_ops.py` |
444
+ | [test_workflows.py](examples/test_workflows.py) | Unit testing workflows | `python -m unittest examples.test_workflows` |
445
+ | [kitchensink.py](examples/kitchensink.py) | All task types (HTTP, JS, JQ, Switch) | `python examples/kitchensink.py` |
446
+
447
+ ## API Journey Examples
448
+
449
+ End-to-end examples covering all APIs for each domain:
450
+
451
+ | Example | APIs | Run |
452
+ |---------|------|-----|
453
+ | [authorization_journey.py](examples/authorization_journey.py) | Authorization APIs | `python examples/authorization_journey.py` |
454
+ | [metadata_journey.py](examples/metadata_journey.py) | Metadata APIs | `python examples/metadata_journey.py` |
455
+ | [schedule_journey.py](examples/schedule_journey.py) | Schedule APIs | `python examples/schedule_journey.py` |
456
+ | [prompt_journey.py](examples/prompt_journey.py) | Prompt APIs | `python examples/prompt_journey.py` |
457
+
458
+ ## Documentation
459
+
460
+ | Document | Description |
461
+ |----------|-------------|
462
+ | [Worker Design](docs/design/WORKER_DESIGN.md) | Architecture: AsyncTaskRunner vs TaskRunner, discovery, lifecycle |
463
+ | [Worker Guide](docs/WORKER.md) | All worker patterns (function, class, annotation, async) |
464
+ | [Worker Configuration](WORKER_CONFIGURATION.md) | Hierarchical environment variable configuration |
465
+ | [Workflow Management](docs/WORKFLOW.md) | Start, pause, resume, terminate, retry, search |
466
+ | [Workflow Testing](docs/WORKFLOW_TESTING.md) | Unit testing with mock outputs |
467
+ | [Task Management](docs/TASK_MANAGEMENT.md) | Task operations |
468
+ | [Metadata](docs/METADATA.md) | Task & workflow definitions |
469
+ | [Authorization](docs/AUTHORIZATION.md) | Users, groups, applications, permissions |
470
+ | [Schedules](docs/SCHEDULE.md) | Workflow scheduling |
471
+ | [Secrets](docs/SECRET_MANAGEMENT.md) | Secret storage |
472
+ | [Prompts](docs/PROMPT.md) | AI/LLM prompt templates |
473
+ | [Integrations](docs/INTEGRATION.md) | AI/LLM provider integrations |
474
+ | [Metrics](METRICS.md) | Prometheus metrics collection |
475
+ | [Examples](examples/README.md) | Complete examples catalog |
476
+
477
+ ## Support
478
+
479
+ - [Open an issue (SDK)](https://github.com/conductor-sdk/conductor-python/issues) for SDK bugs, questions, and feature requests
480
+ - [Open an issue (Conductor server)](https://github.com/conductor-oss/conductor/issues) for Conductor OSS server issues
481
+ - [Join the Conductor Slack](https://join.slack.com/t/orkes-conductor/shared_invite/zt-2vdbx239s-Eacdyqya9giNLHfrCavfaA) for community discussion and help
482
+ - [Orkes Community Forum](https://community.orkes.io/) for Q&A
483
+
484
+ ## Frequently Asked Questions
485
+
486
+ **Is this the same as Netflix Conductor?**
487
+
488
+ Yes. Conductor OSS is the continuation of the original [Netflix Conductor](https://github.com/Netflix/conductor) repository after Netflix contributed the project to the open-source foundation.
489
+
490
+ **Is this project actively maintained?**
491
+
492
+ Yes. [Orkes](https://orkes.io) is the primary maintainer and offers an enterprise SaaS platform for Conductor across all major cloud providers.
493
+
494
+ **Can Conductor scale to handle my workload?**
495
+
496
+ Conductor was built at Netflix to handle massive scale and has been battle-tested in production environments processing millions of workflows. It scales horizontally to meet virtually any demand.
497
+
498
+ **Does Conductor support durable code execution?**
499
+
500
+ Yes. Conductor ensures workflows complete reliably even in the face of infrastructure failures, process crashes, or network issues.
501
+
502
+ **Are workflows always asynchronous?**
503
+
504
+ No. While Conductor excels at asynchronous orchestration, it also supports synchronous workflow execution when immediate results are required.
505
+
506
+ **Do I need to use a Conductor-specific framework?**
507
+
508
+ No. Conductor is language and framework agnostic. Use your preferred language and framework -- the [SDKs](https://github.com/conductor-oss/conductor#conductor-sdks) provide native integration for Python, Java, JavaScript, Go, C#, and more.
509
+
510
+ **Can I mix workers written in different languages?**
511
+
512
+ Yes. A single workflow can have workers written in Python, Java, Go, or any other supported language. Workers communicate through the Conductor server, not directly with each other.
513
+
514
+ **What Python versions are supported?**
515
+
516
+ Python 3.9 and above.
517
+
518
+ **Should I use `def` or `async def` for my workers?**
519
+
520
+ Use `async def` for I/O-bound tasks (API calls, database queries) -- the SDK uses `AsyncTaskRunner` with a single event loop for high concurrency with low overhead. Use regular `def` for CPU-bound or blocking work -- the SDK uses `TaskRunner` with a thread pool. The SDK selects the right runner automatically based on your function signature.
521
+
522
+ **How do I run workers in production?**
523
+
524
+ Workers are standard Python processes. Deploy them as you would any Python application -- in containers, VMs, or bare metal. Workers poll the Conductor server for tasks, so no inbound ports need to be opened. See [Worker Design](docs/design/WORKER_DESIGN.md) for architecture details.
525
+
526
+ **How do I test workflows without running a full Conductor server?**
527
+
528
+ The SDK provides a test framework that uses Conductor's `POST /api/workflow/test` endpoint to evaluate workflows with mock task outputs. See [Workflow Testing](docs/WORKFLOW_TESTING.md) for details.
529
+
530
+ ## License
531
+
532
+ Apache 2.0
533
+