hatchet-sdk 0.47.0__py3-none-any.whl → 1.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. hatchet_sdk/__init__.py +25 -16
  2. hatchet_sdk/client.py +14 -39
  3. hatchet_sdk/clients/admin.py +203 -362
  4. hatchet_sdk/clients/dispatcher/action_listener.py +106 -84
  5. hatchet_sdk/clients/dispatcher/dispatcher.py +21 -21
  6. hatchet_sdk/clients/event_ts.py +23 -10
  7. hatchet_sdk/clients/events.py +96 -99
  8. hatchet_sdk/clients/rest/__init__.py +24 -0
  9. hatchet_sdk/clients/rest/api/__init__.py +2 -0
  10. hatchet_sdk/clients/rest/api/task_api.py +2174 -0
  11. hatchet_sdk/clients/rest/api/workflow_runs_api.py +638 -106
  12. hatchet_sdk/clients/rest/api_client.py +1 -1
  13. hatchet_sdk/clients/rest/configuration.py +8 -1
  14. hatchet_sdk/clients/rest/exceptions.py +21 -0
  15. hatchet_sdk/clients/rest/models/__init__.py +22 -0
  16. hatchet_sdk/clients/rest/models/tenant.py +4 -0
  17. hatchet_sdk/clients/rest/models/tenant_version.py +37 -0
  18. hatchet_sdk/clients/rest/models/update_tenant_request.py +7 -0
  19. hatchet_sdk/clients/rest/models/v1_cancel_task_request.py +104 -0
  20. hatchet_sdk/clients/rest/models/v1_dag_children.py +102 -0
  21. hatchet_sdk/clients/rest/models/v1_replay_task_request.py +104 -0
  22. hatchet_sdk/clients/rest/models/v1_task.py +174 -0
  23. hatchet_sdk/clients/rest/models/v1_task_event.py +118 -0
  24. hatchet_sdk/clients/rest/models/v1_task_event_list.py +110 -0
  25. hatchet_sdk/clients/rest/models/v1_task_event_type.py +55 -0
  26. hatchet_sdk/clients/rest/models/v1_task_filter.py +106 -0
  27. hatchet_sdk/clients/rest/models/v1_task_point_metric.py +92 -0
  28. hatchet_sdk/clients/rest/models/v1_task_point_metrics.py +100 -0
  29. hatchet_sdk/clients/rest/models/v1_task_run_metric.py +88 -0
  30. hatchet_sdk/clients/rest/models/v1_task_run_status.py +40 -0
  31. hatchet_sdk/clients/rest/models/v1_task_status.py +40 -0
  32. hatchet_sdk/clients/rest/models/v1_task_summary.py +212 -0
  33. hatchet_sdk/clients/rest/models/v1_task_summary_list.py +110 -0
  34. hatchet_sdk/clients/rest/models/v1_workflow_run.py +171 -0
  35. hatchet_sdk/clients/rest/models/v1_workflow_run_details.py +145 -0
  36. hatchet_sdk/clients/rest/models/v1_workflow_type.py +37 -0
  37. hatchet_sdk/clients/rest/models/workflow_run_shape_item_for_workflow_run_details.py +99 -0
  38. hatchet_sdk/clients/rest/rest.py +37 -26
  39. hatchet_sdk/clients/rest/tenacity_utils.py +1 -1
  40. hatchet_sdk/clients/rest_client.py +141 -116
  41. hatchet_sdk/clients/run_event_listener.py +66 -60
  42. hatchet_sdk/clients/workflow_listener.py +75 -66
  43. hatchet_sdk/config.py +117 -0
  44. hatchet_sdk/connection.py +27 -13
  45. hatchet_sdk/context/__init__.py +0 -1
  46. hatchet_sdk/context/context.py +118 -218
  47. hatchet_sdk/features/cron.py +43 -57
  48. hatchet_sdk/features/scheduled.py +60 -74
  49. hatchet_sdk/hatchet.py +192 -195
  50. hatchet_sdk/labels.py +4 -6
  51. hatchet_sdk/metadata.py +1 -1
  52. hatchet_sdk/opentelemetry/instrumentor.py +9 -5
  53. hatchet_sdk/rate_limit.py +9 -18
  54. hatchet_sdk/token.py +13 -9
  55. hatchet_sdk/utils/aio_utils.py +0 -40
  56. hatchet_sdk/utils/proto_enums.py +54 -0
  57. hatchet_sdk/utils/typing.py +9 -1
  58. hatchet_sdk/v0/__init__.py +251 -0
  59. hatchet_sdk/v0/client.py +119 -0
  60. hatchet_sdk/v0/clients/admin.py +541 -0
  61. hatchet_sdk/v0/clients/dispatcher/action_listener.py +422 -0
  62. hatchet_sdk/v0/clients/dispatcher/dispatcher.py +204 -0
  63. hatchet_sdk/v0/clients/event_ts.py +28 -0
  64. hatchet_sdk/v0/clients/events.py +182 -0
  65. hatchet_sdk/v0/clients/rest/__init__.py +307 -0
  66. hatchet_sdk/v0/clients/rest/api/__init__.py +19 -0
  67. hatchet_sdk/v0/clients/rest/api/api_token_api.py +858 -0
  68. hatchet_sdk/v0/clients/rest/api/default_api.py +2259 -0
  69. hatchet_sdk/v0/clients/rest/api/event_api.py +2548 -0
  70. hatchet_sdk/v0/clients/rest/api/github_api.py +331 -0
  71. hatchet_sdk/v0/clients/rest/api/healthcheck_api.py +483 -0
  72. hatchet_sdk/v0/clients/rest/api/log_api.py +449 -0
  73. hatchet_sdk/v0/clients/rest/api/metadata_api.py +728 -0
  74. hatchet_sdk/v0/clients/rest/api/rate_limits_api.py +423 -0
  75. hatchet_sdk/v0/clients/rest/api/slack_api.py +577 -0
  76. hatchet_sdk/v0/clients/rest/api/sns_api.py +872 -0
  77. hatchet_sdk/v0/clients/rest/api/step_run_api.py +2202 -0
  78. hatchet_sdk/v0/clients/rest/api/tenant_api.py +4430 -0
  79. hatchet_sdk/v0/clients/rest/api/user_api.py +2888 -0
  80. hatchet_sdk/v0/clients/rest/api/worker_api.py +858 -0
  81. hatchet_sdk/v0/clients/rest/api/workflow_api.py +6312 -0
  82. hatchet_sdk/v0/clients/rest/api/workflow_run_api.py +1932 -0
  83. hatchet_sdk/v0/clients/rest/api/workflow_runs_api.py +610 -0
  84. hatchet_sdk/v0/clients/rest/api_client.py +759 -0
  85. hatchet_sdk/v0/clients/rest/api_response.py +22 -0
  86. hatchet_sdk/v0/clients/rest/configuration.py +611 -0
  87. hatchet_sdk/v0/clients/rest/exceptions.py +200 -0
  88. hatchet_sdk/v0/clients/rest/models/__init__.py +274 -0
  89. hatchet_sdk/v0/clients/rest/models/accept_invite_request.py +83 -0
  90. hatchet_sdk/v0/clients/rest/models/api_error.py +102 -0
  91. hatchet_sdk/v0/clients/rest/models/api_errors.py +100 -0
  92. hatchet_sdk/v0/clients/rest/models/api_meta.py +144 -0
  93. hatchet_sdk/v0/clients/rest/models/api_meta_auth.py +85 -0
  94. hatchet_sdk/v0/clients/rest/models/api_meta_integration.py +88 -0
  95. hatchet_sdk/v0/clients/rest/models/api_meta_posthog.py +90 -0
  96. hatchet_sdk/v0/clients/rest/models/api_resource_meta.py +98 -0
  97. hatchet_sdk/v0/clients/rest/models/api_token.py +105 -0
  98. hatchet_sdk/v0/clients/rest/models/bulk_create_event_request.py +100 -0
  99. hatchet_sdk/v0/clients/rest/models/bulk_create_event_response.py +110 -0
  100. hatchet_sdk/v0/clients/rest/models/cancel_event_request.py +85 -0
  101. hatchet_sdk/v0/clients/rest/models/cancel_step_run_request.py +83 -0
  102. hatchet_sdk/v0/clients/rest/models/concurrency_limit_strategy.py +39 -0
  103. hatchet_sdk/v0/clients/rest/models/create_api_token_request.py +92 -0
  104. hatchet_sdk/v0/clients/rest/models/create_api_token_response.py +83 -0
  105. hatchet_sdk/v0/clients/rest/models/create_cron_workflow_trigger_request.py +98 -0
  106. hatchet_sdk/v0/clients/rest/models/create_event_request.py +95 -0
  107. hatchet_sdk/v0/clients/rest/models/create_pull_request_from_step_run.py +83 -0
  108. hatchet_sdk/v0/clients/rest/models/create_sns_integration_request.py +85 -0
  109. hatchet_sdk/v0/clients/rest/models/create_tenant_alert_email_group_request.py +83 -0
  110. hatchet_sdk/v0/clients/rest/models/create_tenant_invite_request.py +86 -0
  111. hatchet_sdk/v0/clients/rest/models/create_tenant_request.py +84 -0
  112. hatchet_sdk/v0/clients/rest/models/cron_workflows.py +131 -0
  113. hatchet_sdk/v0/clients/rest/models/cron_workflows_list.py +110 -0
  114. hatchet_sdk/v0/clients/rest/models/cron_workflows_method.py +37 -0
  115. hatchet_sdk/v0/clients/rest/models/cron_workflows_order_by_field.py +37 -0
  116. hatchet_sdk/v0/clients/rest/models/event.py +143 -0
  117. hatchet_sdk/v0/clients/rest/models/event_data.py +83 -0
  118. hatchet_sdk/v0/clients/rest/models/event_key_list.py +98 -0
  119. hatchet_sdk/v0/clients/rest/models/event_list.py +110 -0
  120. hatchet_sdk/v0/clients/rest/models/event_order_by_direction.py +37 -0
  121. hatchet_sdk/v0/clients/rest/models/event_order_by_field.py +36 -0
  122. hatchet_sdk/v0/clients/rest/models/event_update_cancel200_response.py +85 -0
  123. hatchet_sdk/v0/clients/rest/models/event_workflow_run_summary.py +116 -0
  124. hatchet_sdk/v0/clients/rest/models/events.py +110 -0
  125. hatchet_sdk/v0/clients/rest/models/get_step_run_diff_response.py +100 -0
  126. hatchet_sdk/v0/clients/rest/models/github_app_installation.py +107 -0
  127. hatchet_sdk/v0/clients/rest/models/github_branch.py +86 -0
  128. hatchet_sdk/v0/clients/rest/models/github_repo.py +86 -0
  129. hatchet_sdk/v0/clients/rest/models/info_get_version200_response.py +83 -0
  130. hatchet_sdk/v0/clients/rest/models/job.py +132 -0
  131. hatchet_sdk/v0/clients/rest/models/job_run.py +176 -0
  132. hatchet_sdk/v0/clients/rest/models/job_run_status.py +41 -0
  133. hatchet_sdk/v0/clients/rest/models/link_github_repository_request.py +106 -0
  134. hatchet_sdk/v0/clients/rest/models/list_api_tokens_response.py +110 -0
  135. hatchet_sdk/v0/clients/rest/models/list_github_app_installations_response.py +112 -0
  136. hatchet_sdk/v0/clients/rest/models/list_pull_requests_response.py +100 -0
  137. hatchet_sdk/v0/clients/rest/models/list_slack_webhooks.py +110 -0
  138. hatchet_sdk/v0/clients/rest/models/list_sns_integrations.py +110 -0
  139. hatchet_sdk/v0/clients/rest/models/log_line.py +94 -0
  140. hatchet_sdk/v0/clients/rest/models/log_line_level.py +39 -0
  141. hatchet_sdk/v0/clients/rest/models/log_line_list.py +110 -0
  142. hatchet_sdk/v0/clients/rest/models/log_line_order_by_direction.py +37 -0
  143. hatchet_sdk/v0/clients/rest/models/log_line_order_by_field.py +36 -0
  144. hatchet_sdk/v0/clients/rest/models/pagination_response.py +95 -0
  145. hatchet_sdk/v0/clients/rest/models/pull_request.py +112 -0
  146. hatchet_sdk/v0/clients/rest/models/pull_request_state.py +37 -0
  147. hatchet_sdk/v0/clients/rest/models/queue_metrics.py +97 -0
  148. hatchet_sdk/v0/clients/rest/models/rate_limit.py +117 -0
  149. hatchet_sdk/v0/clients/rest/models/rate_limit_list.py +110 -0
  150. hatchet_sdk/v0/clients/rest/models/rate_limit_order_by_direction.py +37 -0
  151. hatchet_sdk/v0/clients/rest/models/rate_limit_order_by_field.py +38 -0
  152. hatchet_sdk/v0/clients/rest/models/recent_step_runs.py +118 -0
  153. hatchet_sdk/v0/clients/rest/models/reject_invite_request.py +83 -0
  154. hatchet_sdk/v0/clients/rest/models/replay_event_request.py +85 -0
  155. hatchet_sdk/v0/clients/rest/models/replay_workflow_runs_request.py +85 -0
  156. hatchet_sdk/v0/clients/rest/models/replay_workflow_runs_response.py +100 -0
  157. hatchet_sdk/v0/clients/rest/models/rerun_step_run_request.py +83 -0
  158. hatchet_sdk/v0/clients/rest/models/schedule_workflow_run_request.py +92 -0
  159. hatchet_sdk/v0/clients/rest/models/scheduled_run_status.py +42 -0
  160. hatchet_sdk/v0/clients/rest/models/scheduled_workflows.py +149 -0
  161. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_list.py +110 -0
  162. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_method.py +37 -0
  163. hatchet_sdk/v0/clients/rest/models/scheduled_workflows_order_by_field.py +37 -0
  164. hatchet_sdk/v0/clients/rest/models/semaphore_slots.py +113 -0
  165. hatchet_sdk/v0/clients/rest/models/slack_webhook.py +127 -0
  166. hatchet_sdk/v0/clients/rest/models/sns_integration.py +114 -0
  167. hatchet_sdk/v0/clients/rest/models/step.py +123 -0
  168. hatchet_sdk/v0/clients/rest/models/step_run.py +202 -0
  169. hatchet_sdk/v0/clients/rest/models/step_run_archive.py +142 -0
  170. hatchet_sdk/v0/clients/rest/models/step_run_archive_list.py +110 -0
  171. hatchet_sdk/v0/clients/rest/models/step_run_diff.py +91 -0
  172. hatchet_sdk/v0/clients/rest/models/step_run_event.py +122 -0
  173. hatchet_sdk/v0/clients/rest/models/step_run_event_list.py +110 -0
  174. hatchet_sdk/v0/clients/rest/models/step_run_event_reason.py +52 -0
  175. hatchet_sdk/v0/clients/rest/models/step_run_event_severity.py +38 -0
  176. hatchet_sdk/v0/clients/rest/models/step_run_status.py +44 -0
  177. hatchet_sdk/v0/clients/rest/models/tenant.py +118 -0
  178. hatchet_sdk/v0/clients/rest/models/tenant_alert_email_group.py +98 -0
  179. hatchet_sdk/v0/clients/rest/models/tenant_alert_email_group_list.py +112 -0
  180. hatchet_sdk/v0/clients/rest/models/tenant_alerting_settings.py +143 -0
  181. hatchet_sdk/v0/clients/rest/models/tenant_invite.py +120 -0
  182. hatchet_sdk/v0/clients/rest/models/tenant_invite_list.py +110 -0
  183. hatchet_sdk/v0/clients/rest/models/tenant_list.py +110 -0
  184. hatchet_sdk/v0/clients/rest/models/tenant_member.py +123 -0
  185. hatchet_sdk/v0/clients/rest/models/tenant_member_list.py +110 -0
  186. hatchet_sdk/v0/clients/rest/models/tenant_member_role.py +38 -0
  187. hatchet_sdk/v0/clients/rest/models/tenant_queue_metrics.py +116 -0
  188. hatchet_sdk/v0/clients/rest/models/tenant_resource.py +40 -0
  189. hatchet_sdk/v0/clients/rest/models/tenant_resource_limit.py +135 -0
  190. hatchet_sdk/v0/clients/rest/models/tenant_resource_policy.py +102 -0
  191. hatchet_sdk/v0/clients/rest/models/tenant_step_run_queue_metrics.py +83 -0
  192. hatchet_sdk/v0/clients/rest/models/trigger_workflow_run_request.py +91 -0
  193. hatchet_sdk/v0/clients/rest/models/update_tenant_alert_email_group_request.py +83 -0
  194. hatchet_sdk/v0/clients/rest/models/update_tenant_invite_request.py +85 -0
  195. hatchet_sdk/v0/clients/rest/models/update_tenant_request.py +137 -0
  196. hatchet_sdk/v0/clients/rest/models/update_worker_request.py +87 -0
  197. hatchet_sdk/v0/clients/rest/models/user.py +126 -0
  198. hatchet_sdk/v0/clients/rest/models/user_change_password_request.py +88 -0
  199. hatchet_sdk/v0/clients/rest/models/user_login_request.py +86 -0
  200. hatchet_sdk/v0/clients/rest/models/user_register_request.py +91 -0
  201. hatchet_sdk/v0/clients/rest/models/user_tenant_memberships_list.py +110 -0
  202. hatchet_sdk/v0/clients/rest/models/user_tenant_public.py +86 -0
  203. hatchet_sdk/v0/clients/rest/models/webhook_worker.py +100 -0
  204. hatchet_sdk/v0/clients/rest/models/webhook_worker_create_request.py +94 -0
  205. hatchet_sdk/v0/clients/rest/models/webhook_worker_create_response.py +98 -0
  206. hatchet_sdk/v0/clients/rest/models/webhook_worker_created.py +102 -0
  207. hatchet_sdk/v0/clients/rest/models/webhook_worker_list_response.py +110 -0
  208. hatchet_sdk/v0/clients/rest/models/webhook_worker_request.py +102 -0
  209. hatchet_sdk/v0/clients/rest/models/webhook_worker_request_list_response.py +104 -0
  210. hatchet_sdk/v0/clients/rest/models/webhook_worker_request_method.py +38 -0
  211. hatchet_sdk/v0/clients/rest/models/worker.py +239 -0
  212. hatchet_sdk/v0/clients/rest/models/worker_label.py +102 -0
  213. hatchet_sdk/v0/clients/rest/models/worker_list.py +110 -0
  214. hatchet_sdk/v0/clients/rest/models/worker_runtime_info.py +103 -0
  215. hatchet_sdk/v0/clients/rest/models/worker_runtime_sdks.py +38 -0
  216. hatchet_sdk/v0/clients/rest/models/worker_type.py +38 -0
  217. hatchet_sdk/v0/clients/rest/models/workflow.py +165 -0
  218. hatchet_sdk/v0/clients/rest/models/workflow_concurrency.py +107 -0
  219. hatchet_sdk/v0/clients/rest/models/workflow_deployment_config.py +136 -0
  220. hatchet_sdk/v0/clients/rest/models/workflow_kind.py +38 -0
  221. hatchet_sdk/v0/clients/rest/models/workflow_list.py +120 -0
  222. hatchet_sdk/v0/clients/rest/models/workflow_metrics.py +97 -0
  223. hatchet_sdk/v0/clients/rest/models/workflow_run.py +188 -0
  224. hatchet_sdk/v0/clients/rest/models/workflow_run_cancel200_response.py +85 -0
  225. hatchet_sdk/v0/clients/rest/models/workflow_run_list.py +110 -0
  226. hatchet_sdk/v0/clients/rest/models/workflow_run_order_by_direction.py +37 -0
  227. hatchet_sdk/v0/clients/rest/models/workflow_run_order_by_field.py +39 -0
  228. hatchet_sdk/v0/clients/rest/models/workflow_run_shape.py +186 -0
  229. hatchet_sdk/v0/clients/rest/models/workflow_run_status.py +42 -0
  230. hatchet_sdk/v0/clients/rest/models/workflow_run_triggered_by.py +112 -0
  231. hatchet_sdk/v0/clients/rest/models/workflow_runs_cancel_request.py +85 -0
  232. hatchet_sdk/v0/clients/rest/models/workflow_runs_metrics.py +94 -0
  233. hatchet_sdk/v0/clients/rest/models/workflow_runs_metrics_counts.py +104 -0
  234. hatchet_sdk/v0/clients/rest/models/workflow_tag.py +84 -0
  235. hatchet_sdk/v0/clients/rest/models/workflow_trigger_cron_ref.py +86 -0
  236. hatchet_sdk/v0/clients/rest/models/workflow_trigger_event_ref.py +86 -0
  237. hatchet_sdk/v0/clients/rest/models/workflow_triggers.py +141 -0
  238. hatchet_sdk/v0/clients/rest/models/workflow_update_request.py +85 -0
  239. hatchet_sdk/v0/clients/rest/models/workflow_version.py +170 -0
  240. hatchet_sdk/v0/clients/rest/models/workflow_version_concurrency.py +114 -0
  241. hatchet_sdk/v0/clients/rest/models/workflow_version_definition.py +85 -0
  242. hatchet_sdk/v0/clients/rest/models/workflow_version_meta.py +123 -0
  243. hatchet_sdk/v0/clients/rest/models/workflow_workers_count.py +95 -0
  244. hatchet_sdk/v0/clients/rest/rest.py +187 -0
  245. hatchet_sdk/v0/clients/rest/tenacity_utils.py +39 -0
  246. hatchet_sdk/v0/clients/rest_client.py +613 -0
  247. hatchet_sdk/v0/clients/run_event_listener.py +260 -0
  248. hatchet_sdk/v0/clients/workflow_listener.py +277 -0
  249. hatchet_sdk/v0/connection.py +63 -0
  250. hatchet_sdk/v0/context/__init__.py +1 -0
  251. hatchet_sdk/v0/context/context.py +446 -0
  252. hatchet_sdk/v0/context/worker_context.py +28 -0
  253. hatchet_sdk/v0/contracts/dispatcher_pb2.py +102 -0
  254. hatchet_sdk/v0/contracts/dispatcher_pb2.pyi +387 -0
  255. hatchet_sdk/v0/contracts/dispatcher_pb2_grpc.py +621 -0
  256. hatchet_sdk/v0/contracts/events_pb2.py +46 -0
  257. hatchet_sdk/v0/contracts/events_pb2.pyi +87 -0
  258. hatchet_sdk/v0/contracts/events_pb2_grpc.py +274 -0
  259. hatchet_sdk/v0/contracts/workflows_pb2.py +80 -0
  260. hatchet_sdk/v0/contracts/workflows_pb2.pyi +312 -0
  261. hatchet_sdk/v0/contracts/workflows_pb2_grpc.py +277 -0
  262. hatchet_sdk/v0/features/cron.py +286 -0
  263. hatchet_sdk/v0/features/scheduled.py +248 -0
  264. hatchet_sdk/v0/hatchet.py +310 -0
  265. hatchet_sdk/v0/labels.py +10 -0
  266. hatchet_sdk/v0/logger.py +13 -0
  267. hatchet_sdk/v0/metadata.py +2 -0
  268. hatchet_sdk/v0/opentelemetry/instrumentor.py +396 -0
  269. hatchet_sdk/v0/rate_limit.py +126 -0
  270. hatchet_sdk/v0/semver.py +30 -0
  271. hatchet_sdk/v0/token.py +27 -0
  272. hatchet_sdk/v0/utils/aio_utils.py +137 -0
  273. hatchet_sdk/v0/utils/backoff.py +9 -0
  274. hatchet_sdk/v0/utils/typing.py +12 -0
  275. hatchet_sdk/{v2 → v0/v2}/callable.py +8 -8
  276. hatchet_sdk/{v2 → v0/v2}/concurrency.py +2 -2
  277. hatchet_sdk/{v2 → v0/v2}/hatchet.py +10 -10
  278. hatchet_sdk/v0/worker/__init__.py +1 -0
  279. hatchet_sdk/v0/worker/action_listener_process.py +278 -0
  280. hatchet_sdk/v0/worker/runner/run_loop_manager.py +112 -0
  281. hatchet_sdk/v0/worker/runner/runner.py +460 -0
  282. hatchet_sdk/v0/worker/runner/utils/capture_logs.py +81 -0
  283. hatchet_sdk/v0/worker/runner/utils/error_with_traceback.py +6 -0
  284. hatchet_sdk/v0/worker/worker.py +391 -0
  285. hatchet_sdk/v0/workflow.py +261 -0
  286. hatchet_sdk/v0/workflow_run.py +59 -0
  287. hatchet_sdk/worker/__init__.py +0 -1
  288. hatchet_sdk/worker/action_listener_process.py +36 -33
  289. hatchet_sdk/worker/runner/run_loop_manager.py +18 -16
  290. hatchet_sdk/worker/runner/runner.py +32 -60
  291. hatchet_sdk/worker/runner/utils/capture_logs.py +25 -14
  292. hatchet_sdk/worker/runner/utils/error_with_traceback.py +1 -1
  293. hatchet_sdk/worker/worker.py +61 -75
  294. hatchet_sdk/workflow.py +473 -207
  295. hatchet_sdk/workflow_run.py +5 -18
  296. {hatchet_sdk-0.47.0.dist-info → hatchet_sdk-1.0.0.dist-info}/METADATA +2 -1
  297. hatchet_sdk-1.0.0.dist-info/RECORD +485 -0
  298. hatchet_sdk/utils/serialization.py +0 -18
  299. hatchet_sdk-0.47.0.dist-info/RECORD +0 -237
  300. /hatchet_sdk/{loader.py → v0/loader.py} +0 -0
  301. /hatchet_sdk/{utils → v0/utils}/types.py +0 -0
  302. {hatchet_sdk-0.47.0.dist-info → hatchet_sdk-1.0.0.dist-info}/WHEEL +0 -0
  303. {hatchet_sdk-0.47.0.dist-info → hatchet_sdk-1.0.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,446 @@
1
+ import inspect
2
+ import json
3
+ import traceback
4
+ from concurrent.futures import Future, ThreadPoolExecutor
5
+ from typing import Any, Generic, Type, TypeVar, cast, overload
6
+ from warnings import warn
7
+
8
+ from pydantic import BaseModel, StrictStr
9
+
10
+ from hatchet_sdk.v0.clients.events import EventClient
11
+ from hatchet_sdk.v0.clients.rest.tenacity_utils import tenacity_retry
12
+ from hatchet_sdk.v0.clients.rest_client import RestApi
13
+ from hatchet_sdk.v0.clients.run_event_listener import RunEventListenerClient
14
+ from hatchet_sdk.v0.clients.workflow_listener import PooledWorkflowRunListener
15
+ from hatchet_sdk.v0.context.worker_context import WorkerContext
16
+ from hatchet_sdk.v0.contracts.dispatcher_pb2 import OverridesData
17
+ from hatchet_sdk.v0.contracts.workflows_pb2 import (
18
+ BulkTriggerWorkflowRequest,
19
+ TriggerWorkflowRequest,
20
+ )
21
+ from hatchet_sdk.v0.utils.types import WorkflowValidator
22
+ from hatchet_sdk.v0.utils.typing import is_basemodel_subclass
23
+ from hatchet_sdk.v0.workflow_run import WorkflowRunRef
24
+
25
+ from ..clients.admin import (
26
+ AdminClient,
27
+ ChildTriggerWorkflowOptions,
28
+ ChildWorkflowRunDict,
29
+ TriggerWorkflowOptions,
30
+ WorkflowRunDict,
31
+ )
32
+ from ..clients.dispatcher.dispatcher import ( # type: ignore[attr-defined]
33
+ Action,
34
+ DispatcherClient,
35
+ )
36
+ from ..logger import logger
37
+
38
+ DEFAULT_WORKFLOW_POLLING_INTERVAL = 5 # Seconds
39
+
40
+ T = TypeVar("T", bound=BaseModel)
41
+
42
+
43
+ def get_caller_file_path() -> str:
44
+ caller_frame = inspect.stack()[2]
45
+
46
+ return caller_frame.filename
47
+
48
+
49
+ class BaseContext:
50
+
51
+ action: Action
52
+ spawn_index: int
53
+
54
+ def _prepare_workflow_options(
55
+ self,
56
+ key: str | None = None,
57
+ options: ChildTriggerWorkflowOptions | None = None,
58
+ worker_id: str | None = None,
59
+ ) -> TriggerWorkflowOptions:
60
+ workflow_run_id = self.action.workflow_run_id
61
+ step_run_id = self.action.step_run_id
62
+
63
+ desired_worker_id = None
64
+ if options is not None and "sticky" in options and options["sticky"] == True:
65
+ desired_worker_id = worker_id
66
+
67
+ meta = None
68
+ if options is not None and "additional_metadata" in options:
69
+ meta = options["additional_metadata"]
70
+
71
+ ## TODO: Pydantic here to simplify this
72
+ trigger_options: TriggerWorkflowOptions = {
73
+ "parent_id": workflow_run_id,
74
+ "parent_step_run_id": step_run_id,
75
+ "child_key": key,
76
+ "child_index": self.spawn_index,
77
+ "additional_metadata": meta,
78
+ "desired_worker_id": desired_worker_id,
79
+ }
80
+
81
+ self.spawn_index += 1
82
+ return trigger_options
83
+
84
+
85
+ class ContextAioImpl(BaseContext):
86
+ def __init__(
87
+ self,
88
+ action: Action,
89
+ dispatcher_client: DispatcherClient,
90
+ admin_client: AdminClient,
91
+ event_client: EventClient,
92
+ rest_client: RestApi,
93
+ workflow_listener: PooledWorkflowRunListener,
94
+ workflow_run_event_listener: RunEventListenerClient,
95
+ worker: WorkerContext,
96
+ namespace: str = "",
97
+ ):
98
+ self.action = action
99
+ self.dispatcher_client = dispatcher_client
100
+ self.admin_client = admin_client
101
+ self.event_client = event_client
102
+ self.rest_client = rest_client
103
+ self.workflow_listener = workflow_listener
104
+ self.workflow_run_event_listener = workflow_run_event_listener
105
+ self.namespace = namespace
106
+ self.spawn_index = -1
107
+ self.worker = worker
108
+
109
+ @tenacity_retry
110
+ async def spawn_workflow(
111
+ self,
112
+ workflow_name: str,
113
+ input: dict[str, Any] = {},
114
+ key: str | None = None,
115
+ options: ChildTriggerWorkflowOptions | None = None,
116
+ ) -> WorkflowRunRef:
117
+ worker_id = self.worker.id()
118
+ # if (
119
+ # options is not None
120
+ # and "sticky" in options
121
+ # and options["sticky"] == True
122
+ # and not self.worker.has_workflow(workflow_name)
123
+ # ):
124
+ # raise Exception(
125
+ # f"cannot run with sticky: workflow {workflow_name} is not registered on the worker"
126
+ # )
127
+
128
+ trigger_options = self._prepare_workflow_options(key, options, worker_id)
129
+
130
+ return await self.admin_client.aio.run_workflow(
131
+ workflow_name, input, trigger_options
132
+ )
133
+
134
+ @tenacity_retry
135
+ async def spawn_workflows(
136
+ self, child_workflow_runs: list[ChildWorkflowRunDict]
137
+ ) -> list[WorkflowRunRef]:
138
+
139
+ if len(child_workflow_runs) == 0:
140
+ raise Exception("no child workflows to spawn")
141
+
142
+ worker_id = self.worker.id()
143
+
144
+ bulk_trigger_workflow_runs: list[WorkflowRunDict] = []
145
+ for child_workflow_run in child_workflow_runs:
146
+ workflow_name = child_workflow_run["workflow_name"]
147
+ input = child_workflow_run["input"]
148
+
149
+ key = child_workflow_run.get("key")
150
+ options = child_workflow_run.get("options", {})
151
+
152
+ trigger_options = self._prepare_workflow_options(key, options, worker_id)
153
+
154
+ bulk_trigger_workflow_runs.append(
155
+ WorkflowRunDict(
156
+ workflow_name=workflow_name, input=input, options=trigger_options
157
+ )
158
+ )
159
+
160
+ return await self.admin_client.aio.run_workflows(bulk_trigger_workflow_runs)
161
+
162
+
163
+ class Context(BaseContext):
164
+ spawn_index = -1
165
+
166
+ worker: WorkerContext
167
+
168
+ def __init__(
169
+ self,
170
+ action: Action,
171
+ dispatcher_client: DispatcherClient,
172
+ admin_client: AdminClient,
173
+ event_client: EventClient,
174
+ rest_client: RestApi,
175
+ workflow_listener: PooledWorkflowRunListener,
176
+ workflow_run_event_listener: RunEventListenerClient,
177
+ worker: WorkerContext,
178
+ namespace: str = "",
179
+ validator_registry: dict[str, WorkflowValidator] = {},
180
+ ):
181
+ self.worker = worker
182
+ self.validator_registry = validator_registry
183
+
184
+ self.aio = ContextAioImpl(
185
+ action,
186
+ dispatcher_client,
187
+ admin_client,
188
+ event_client,
189
+ rest_client,
190
+ workflow_listener,
191
+ workflow_run_event_listener,
192
+ worker,
193
+ namespace,
194
+ )
195
+
196
+ # Check the type of action.action_payload before attempting to load it as JSON
197
+ if isinstance(action.action_payload, (str, bytes, bytearray)):
198
+ try:
199
+ self.data = cast(dict[str, Any], json.loads(action.action_payload))
200
+ except Exception as e:
201
+ logger.error(f"Error parsing action payload: {e}")
202
+ # Assign an empty dictionary if parsing fails
203
+ self.data: dict[str, Any] = {} # type: ignore[no-redef]
204
+ else:
205
+ # Directly assign the payload to self.data if it's already a dict
206
+ self.data = (
207
+ action.action_payload if isinstance(action.action_payload, dict) else {}
208
+ )
209
+
210
+ self.action = action
211
+
212
+ # FIXME: stepRunId is a legacy field, we should remove it
213
+ self.stepRunId = action.step_run_id
214
+
215
+ self.step_run_id = action.step_run_id
216
+ self.exit_flag = False
217
+ self.dispatcher_client = dispatcher_client
218
+ self.admin_client = admin_client
219
+ self.event_client = event_client
220
+ self.rest_client = rest_client
221
+ self.workflow_listener = workflow_listener
222
+ self.workflow_run_event_listener = workflow_run_event_listener
223
+ self.namespace = namespace
224
+
225
+ # FIXME: this limits the number of concurrent log requests to 1, which means we can do about
226
+ # 100 log lines per second but this depends on network.
227
+ self.logger_thread_pool = ThreadPoolExecutor(max_workers=1)
228
+ self.stream_event_thread_pool = ThreadPoolExecutor(max_workers=1)
229
+
230
+ # store each key in the overrides field in a lookup table
231
+ # overrides_data is a dictionary of key-value pairs
232
+ self.overrides_data = self.data.get("overrides", {})
233
+
234
+ if action.get_group_key_run_id != "":
235
+ self.input = self.data
236
+ else:
237
+ self.input = self.data.get("input", {})
238
+
239
+ def step_output(self, step: str) -> dict[str, Any] | BaseModel:
240
+ workflow_validator = next(
241
+ (v for k, v in self.validator_registry.items() if k.split(":")[-1] == step),
242
+ None,
243
+ )
244
+
245
+ try:
246
+ parent_step_data = cast(dict[str, Any], self.data["parents"][step])
247
+ except KeyError:
248
+ raise ValueError(f"Step output for '{step}' not found")
249
+
250
+ if workflow_validator and (v := workflow_validator.step_output):
251
+ return v.model_validate(parent_step_data)
252
+
253
+ return parent_step_data
254
+
255
+ def triggered_by_event(self) -> bool:
256
+ return cast(str, self.data.get("triggered_by", "")) == "event"
257
+
258
+ def workflow_input(self) -> dict[str, Any] | T:
259
+ if (r := self.validator_registry.get(self.action.action_id)) and (
260
+ i := r.workflow_input
261
+ ):
262
+ return cast(
263
+ T,
264
+ i.model_validate(self.input),
265
+ )
266
+
267
+ return self.input
268
+
269
+ def workflow_run_id(self) -> str:
270
+ return self.action.workflow_run_id
271
+
272
+ def cancel(self) -> None:
273
+ logger.debug("cancelling step...")
274
+ self.exit_flag = True
275
+
276
+ # done returns true if the context has been cancelled
277
+ def done(self) -> bool:
278
+ return self.exit_flag
279
+
280
+ def playground(self, name: str, default: str | None = None) -> str | None:
281
+ # if the key exists in the overrides_data field, return the value
282
+ if name in self.overrides_data:
283
+ warn(
284
+ "Use of `overrides_data` is deprecated.",
285
+ DeprecationWarning,
286
+ stacklevel=1,
287
+ )
288
+ return str(self.overrides_data[name])
289
+
290
+ caller_file = get_caller_file_path()
291
+
292
+ self.dispatcher_client.put_overrides_data(
293
+ OverridesData(
294
+ stepRunId=self.stepRunId,
295
+ path=name,
296
+ value=json.dumps(default),
297
+ callerFilename=caller_file,
298
+ )
299
+ )
300
+
301
+ return default
302
+
303
+ def _log(self, line: str) -> tuple[bool, Exception | None]:
304
+ try:
305
+ self.event_client.log(message=line, step_run_id=self.stepRunId)
306
+ return True, None
307
+ except Exception as e:
308
+ # we don't want to raise an exception here, as it will kill the log thread
309
+ return False, e
310
+
311
+ def log(self, line: Any, raise_on_error: bool = False) -> None:
312
+ if self.stepRunId == "":
313
+ return
314
+
315
+ if not isinstance(line, str):
316
+ try:
317
+ line = json.dumps(line)
318
+ except Exception:
319
+ line = str(line)
320
+
321
+ future = self.logger_thread_pool.submit(self._log, line)
322
+
323
+ def handle_result(future: Future[tuple[bool, Exception | None]]) -> None:
324
+ success, exception = future.result()
325
+ if not success and exception:
326
+ if raise_on_error:
327
+ raise exception
328
+ else:
329
+ thread_trace = "".join(
330
+ traceback.format_exception(
331
+ type(exception), exception, exception.__traceback__
332
+ )
333
+ )
334
+ call_site_trace = "".join(traceback.format_stack())
335
+ logger.error(
336
+ f"Error in log thread: {exception}\n{thread_trace}\nCalled from:\n{call_site_trace}"
337
+ )
338
+
339
+ future.add_done_callback(handle_result)
340
+
341
+ def release_slot(self) -> None:
342
+ return self.dispatcher_client.release_slot(self.stepRunId)
343
+
344
+ def _put_stream(self, data: str | bytes) -> None:
345
+ try:
346
+ self.event_client.stream(data=data, step_run_id=self.stepRunId)
347
+ except Exception as e:
348
+ logger.error(f"Error putting stream event: {e}")
349
+
350
+ def put_stream(self, data: str | bytes) -> None:
351
+ if self.stepRunId == "":
352
+ return
353
+
354
+ self.stream_event_thread_pool.submit(self._put_stream, data)
355
+
356
+ def refresh_timeout(self, increment_by: str) -> None:
357
+ try:
358
+ return self.dispatcher_client.refresh_timeout(
359
+ step_run_id=self.stepRunId, increment_by=increment_by
360
+ )
361
+ except Exception as e:
362
+ logger.error(f"Error refreshing timeout: {e}")
363
+
364
+ def retry_count(self) -> int:
365
+ return self.action.retry_count
366
+
367
+ def additional_metadata(self) -> dict[str, Any] | None:
368
+ return self.action.additional_metadata
369
+
370
+ def child_index(self) -> int | None:
371
+ return self.action.child_workflow_index
372
+
373
+ def child_key(self) -> str | None:
374
+ return self.action.child_workflow_key
375
+
376
+ def parent_workflow_run_id(self) -> str | None:
377
+ return self.action.parent_workflow_run_id
378
+
379
+ def step_run_errors(self) -> dict[str, str]:
380
+ errors = cast(dict[str, str], self.data.get("step_run_errors", {}))
381
+
382
+ if not errors:
383
+ logger.error(
384
+ "No step run errors found. `context.step_run_errors` is intended to be run in an on-failure step, and will only work on engine versions more recent than v0.53.10"
385
+ )
386
+
387
+ return errors
388
+
389
+ def fetch_run_failures(self) -> list[dict[str, StrictStr]]:
390
+ data = self.rest_client.workflow_run_get(self.action.workflow_run_id)
391
+ other_job_runs = [
392
+ run for run in (data.job_runs or []) if run.job_id != self.action.job_id
393
+ ]
394
+ # TODO: Parse Step Runs using a Pydantic Model rather than a hand crafted dictionary
395
+ return [
396
+ {
397
+ "step_id": step_run.step_id,
398
+ "step_run_action_name": step_run.step.action,
399
+ "error": step_run.error,
400
+ }
401
+ for job_run in other_job_runs
402
+ if job_run.step_runs
403
+ for step_run in job_run.step_runs
404
+ if step_run.error and step_run.step
405
+ ]
406
+
407
+ @tenacity_retry
408
+ def spawn_workflow(
409
+ self,
410
+ workflow_name: str,
411
+ input: dict[str, Any] = {},
412
+ key: str | None = None,
413
+ options: ChildTriggerWorkflowOptions | None = None,
414
+ ) -> WorkflowRunRef:
415
+ worker_id = self.worker.id()
416
+ trigger_options = self._prepare_workflow_options(key, options, worker_id)
417
+
418
+ return self.admin_client.run_workflow(workflow_name, input, trigger_options)
419
+
420
+ @tenacity_retry
421
+ def spawn_workflows(
422
+ self, child_workflow_runs: list[ChildWorkflowRunDict]
423
+ ) -> list[WorkflowRunRef]:
424
+
425
+ if len(child_workflow_runs) == 0:
426
+ raise Exception("no child workflows to spawn")
427
+
428
+ worker_id = self.worker.id()
429
+
430
+ bulk_trigger_workflow_runs: list[WorkflowRunDict] = []
431
+ for child_workflow_run in child_workflow_runs:
432
+ workflow_name = child_workflow_run["workflow_name"]
433
+ input = child_workflow_run["input"]
434
+
435
+ key = child_workflow_run.get("key")
436
+ options = child_workflow_run.get("options", {})
437
+
438
+ trigger_options = self._prepare_workflow_options(key, options, worker_id)
439
+
440
+ bulk_trigger_workflow_runs.append(
441
+ WorkflowRunDict(
442
+ workflow_name=workflow_name, input=input, options=trigger_options
443
+ )
444
+ )
445
+
446
+ return self.admin_client.run_workflows(bulk_trigger_workflow_runs)
@@ -0,0 +1,28 @@
1
+ from hatchet_sdk.v0.clients.dispatcher.dispatcher import DispatcherClient
2
+
3
+
4
+ class WorkerContext:
5
+ _worker_id: str | None = None
6
+ _registered_workflow_names: list[str] = []
7
+ _labels: dict[str, str | int] = {}
8
+
9
+ def __init__(self, labels: dict[str, str | int], client: DispatcherClient):
10
+ self._labels = labels
11
+ self.client = client
12
+
13
+ def labels(self) -> dict[str, str | int]:
14
+ return self._labels
15
+
16
+ def upsert_labels(self, labels: dict[str, str | int]) -> None:
17
+ self.client.upsert_worker_labels(self._worker_id, labels)
18
+ self._labels.update(labels)
19
+
20
+ async def async_upsert_labels(self, labels: dict[str, str | int]) -> None:
21
+ await self.client.async_upsert_worker_labels(self._worker_id, labels)
22
+ self._labels.update(labels)
23
+
24
+ def id(self) -> str | None:
25
+ return self._worker_id
26
+
27
+ # def has_workflow(self, workflow_name: str):
28
+ # return workflow_name in self._registered_workflow_names
@@ -0,0 +1,102 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: dispatcher.proto
4
+ # Protobuf Python Version: 5.26.1
5
+ """Generated protocol buffer code."""
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import symbol_database as _symbol_database
9
+ from google.protobuf.internal import builder as _builder
10
+ # @@protoc_insertion_point(imports)
11
+
12
+ _sym_db = _symbol_database.Default()
13
+
14
+
15
+ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
16
+
17
+
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10\x64ispatcher.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"V\n\x0cWorkerLabels\x12\x15\n\x08strValue\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08intValue\x18\x02 \x01(\x05H\x01\x88\x01\x01\x42\x0b\n\t_strValueB\x0b\n\t_intValue\"\xc8\x01\n\x0bRuntimeInfo\x12\x17\n\nsdkVersion\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x08language\x18\x02 \x01(\x0e\x32\x05.SDKSH\x01\x88\x01\x01\x12\x1c\n\x0flanguageVersion\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x0f\n\x02os\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x12\n\x05\x65xtra\x18\x05 \x01(\tH\x04\x88\x01\x01\x42\r\n\x0b_sdkVersionB\x0b\n\t_languageB\x12\n\x10_languageVersionB\x05\n\x03_osB\x08\n\x06_extra\"\xc0\x02\n\x15WorkerRegisterRequest\x12\x12\n\nworkerName\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t\x12\x10\n\x08services\x18\x03 \x03(\t\x12\x14\n\x07maxRuns\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06labels\x18\x05 \x03(\x0b\x32\".WorkerRegisterRequest.LabelsEntry\x12\x16\n\twebhookId\x18\x06 \x01(\tH\x01\x88\x01\x01\x12&\n\x0bruntimeInfo\x18\x07 \x01(\x0b\x32\x0c.RuntimeInfoH\x02\x88\x01\x01\x1a<\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1c\n\x05value\x18\x02 \x01(\x0b\x32\r.WorkerLabels:\x02\x38\x01\x42\n\n\x08_maxRunsB\x0c\n\n_webhookIdB\x0e\n\x0c_runtimeInfo\"P\n\x16WorkerRegisterResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\x12\x12\n\nworkerName\x18\x03 \x01(\t\"\xa3\x01\n\x19UpsertWorkerLabelsRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12\x36\n\x06labels\x18\x02 \x03(\x0b\x32&.UpsertWorkerLabelsRequest.LabelsEntry\x1a<\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x1c\n\x05value\x18\x02 \x01(\x0b\x32\r.WorkerLabels:\x02\x38\x01\"@\n\x1aUpsertWorkerLabelsResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\"\x86\x04\n\x0e\x41ssignedAction\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x15\n\rworkflowRunId\x18\x02 \x01(\t\x12\x18\n\x10getGroupKeyRunId\x18\x03 \x01(\t\x12\r\n\x05jobId\x18\x04 \x01(\t\x12\x0f\n\x07jobName\x18\x05 \x01(\t\x12\x10\n\x08jobRunId\x18\x06 \x01(\t\x12\x0e\n\x06stepId\x18\x07 \x01(\t\x12\x11\n\tstepRunId\x18\x08 \x01(\t\x12\x10\n\x08\x61\x63tionId\x18\t \x01(\t\x12\x1f\n\nactionType\x18\n \x01(\x0e\x32\x0b.ActionType\x12\x15\n\ractionPayload\x18\x0b \x01(\t\x12\x10\n\x08stepName\x18\x0c \x01(\t\x12\x12\n\nretryCount\x18\r \x01(\x05\x12 \n\x13\x61\x64\x64itional_metadata\x18\x0e \x01(\tH\x00\x88\x01\x01\x12!\n\x14\x63hild_workflow_index\x18\x0f \x01(\x05H\x01\x88\x01\x01\x12\x1f\n\x12\x63hild_workflow_key\x18\x10 \x01(\tH\x02\x88\x01\x01\x12#\n\x16parent_workflow_run_id\x18\x11 \x01(\tH\x03\x88\x01\x01\x42\x16\n\x14_additional_metadataB\x17\n\x15_child_workflow_indexB\x15\n\x13_child_workflow_keyB\x19\n\x17_parent_workflow_run_id\"\'\n\x13WorkerListenRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\",\n\x18WorkerUnsubscribeRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\"?\n\x19WorkerUnsubscribeResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\"\xe1\x01\n\x13GroupKeyActionEvent\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12\x15\n\rworkflowRunId\x18\x02 \x01(\t\x12\x18\n\x10getGroupKeyRunId\x18\x03 \x01(\t\x12\x10\n\x08\x61\x63tionId\x18\x04 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12+\n\teventType\x18\x06 \x01(\x0e\x32\x18.GroupKeyActionEventType\x12\x14\n\x0c\x65ventPayload\x18\x07 \x01(\t\"\x94\x02\n\x0fStepActionEvent\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12\r\n\x05jobId\x18\x02 \x01(\t\x12\x10\n\x08jobRunId\x18\x03 \x01(\t\x12\x0e\n\x06stepId\x18\x04 \x01(\t\x12\x11\n\tstepRunId\x18\x05 \x01(\t\x12\x10\n\x08\x61\x63tionId\x18\x06 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\'\n\teventType\x18\x08 \x01(\x0e\x32\x14.StepActionEventType\x12\x14\n\x0c\x65ventPayload\x18\t \x01(\t\x12\x17\n\nretryCount\x18\n \x01(\x05H\x00\x88\x01\x01\x42\r\n\x0b_retryCount\"9\n\x13\x41\x63tionEventResponse\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x10\n\x08workerId\x18\x02 \x01(\t\"\xc0\x01\n SubscribeToWorkflowEventsRequest\x12\x1a\n\rworkflowRunId\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1e\n\x11\x61\x64\x64itionalMetaKey\x18\x02 \x01(\tH\x01\x88\x01\x01\x12 \n\x13\x61\x64\x64itionalMetaValue\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x10\n\x0e_workflowRunIdB\x14\n\x12_additionalMetaKeyB\x16\n\x14_additionalMetaValue\"7\n\x1eSubscribeToWorkflowRunsRequest\x12\x15\n\rworkflowRunId\x18\x01 \x01(\t\"\xb2\x02\n\rWorkflowEvent\x12\x15\n\rworkflowRunId\x18\x01 \x01(\t\x12#\n\x0cresourceType\x18\x02 \x01(\x0e\x32\r.ResourceType\x12%\n\teventType\x18\x03 \x01(\x0e\x32\x12.ResourceEventType\x12\x12\n\nresourceId\x18\x04 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0c\x65ventPayload\x18\x06 \x01(\t\x12\x0e\n\x06hangup\x18\x07 \x01(\x08\x12\x18\n\x0bstepRetries\x18\x08 \x01(\x05H\x00\x88\x01\x01\x12\x17\n\nretryCount\x18\t \x01(\x05H\x01\x88\x01\x01\x42\x0e\n\x0c_stepRetriesB\r\n\x0b_retryCount\"\xa8\x01\n\x10WorkflowRunEvent\x12\x15\n\rworkflowRunId\x18\x01 \x01(\t\x12(\n\teventType\x18\x02 \x01(\x0e\x32\x15.WorkflowRunEventType\x12\x32\n\x0e\x65ventTimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x07results\x18\x04 \x03(\x0b\x32\x0e.StepRunResult\"\x8a\x01\n\rStepRunResult\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12\x16\n\x0estepReadableId\x18\x02 \x01(\t\x12\x10\n\x08jobRunId\x18\x03 \x01(\t\x12\x12\n\x05\x65rror\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06output\x18\x05 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_errorB\t\n\x07_output\"W\n\rOverridesData\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x16\n\x0e\x63\x61llerFilename\x18\x04 \x01(\t\"\x17\n\x15OverridesDataResponse\"U\n\x10HeartbeatRequest\x12\x10\n\x08workerId\x18\x01 \x01(\t\x12/\n\x0bheartbeatAt\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x13\n\x11HeartbeatResponse\"F\n\x15RefreshTimeoutRequest\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12\x1a\n\x12incrementTimeoutBy\x18\x02 \x01(\t\"G\n\x16RefreshTimeoutResponse\x12-\n\ttimeoutAt\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\'\n\x12ReleaseSlotRequest\x12\x11\n\tstepRunId\x18\x01 \x01(\t\"\x15\n\x13ReleaseSlotResponse*7\n\x04SDKS\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x06\n\x02GO\x10\x01\x12\n\n\x06PYTHON\x10\x02\x12\x0e\n\nTYPESCRIPT\x10\x03*N\n\nActionType\x12\x12\n\x0eSTART_STEP_RUN\x10\x00\x12\x13\n\x0f\x43\x41NCEL_STEP_RUN\x10\x01\x12\x17\n\x13START_GET_GROUP_KEY\x10\x02*\xa2\x01\n\x17GroupKeyActionEventType\x12 \n\x1cGROUP_KEY_EVENT_TYPE_UNKNOWN\x10\x00\x12 \n\x1cGROUP_KEY_EVENT_TYPE_STARTED\x10\x01\x12\"\n\x1eGROUP_KEY_EVENT_TYPE_COMPLETED\x10\x02\x12\x1f\n\x1bGROUP_KEY_EVENT_TYPE_FAILED\x10\x03*\xac\x01\n\x13StepActionEventType\x12\x1b\n\x17STEP_EVENT_TYPE_UNKNOWN\x10\x00\x12\x1b\n\x17STEP_EVENT_TYPE_STARTED\x10\x01\x12\x1d\n\x19STEP_EVENT_TYPE_COMPLETED\x10\x02\x12\x1a\n\x16STEP_EVENT_TYPE_FAILED\x10\x03\x12 \n\x1cSTEP_EVENT_TYPE_ACKNOWLEDGED\x10\x04*e\n\x0cResourceType\x12\x19\n\x15RESOURCE_TYPE_UNKNOWN\x10\x00\x12\x1a\n\x16RESOURCE_TYPE_STEP_RUN\x10\x01\x12\x1e\n\x1aRESOURCE_TYPE_WORKFLOW_RUN\x10\x02*\xfe\x01\n\x11ResourceEventType\x12\x1f\n\x1bRESOURCE_EVENT_TYPE_UNKNOWN\x10\x00\x12\x1f\n\x1bRESOURCE_EVENT_TYPE_STARTED\x10\x01\x12!\n\x1dRESOURCE_EVENT_TYPE_COMPLETED\x10\x02\x12\x1e\n\x1aRESOURCE_EVENT_TYPE_FAILED\x10\x03\x12!\n\x1dRESOURCE_EVENT_TYPE_CANCELLED\x10\x04\x12!\n\x1dRESOURCE_EVENT_TYPE_TIMED_OUT\x10\x05\x12\x1e\n\x1aRESOURCE_EVENT_TYPE_STREAM\x10\x06*<\n\x14WorkflowRunEventType\x12$\n WORKFLOW_RUN_EVENT_TYPE_FINISHED\x10\x00\x32\xf8\x06\n\nDispatcher\x12=\n\x08Register\x12\x16.WorkerRegisterRequest\x1a\x17.WorkerRegisterResponse\"\x00\x12\x33\n\x06Listen\x12\x14.WorkerListenRequest\x1a\x0f.AssignedAction\"\x00\x30\x01\x12\x35\n\x08ListenV2\x12\x14.WorkerListenRequest\x1a\x0f.AssignedAction\"\x00\x30\x01\x12\x34\n\tHeartbeat\x12\x11.HeartbeatRequest\x1a\x12.HeartbeatResponse\"\x00\x12R\n\x19SubscribeToWorkflowEvents\x12!.SubscribeToWorkflowEventsRequest\x1a\x0e.WorkflowEvent\"\x00\x30\x01\x12S\n\x17SubscribeToWorkflowRuns\x12\x1f.SubscribeToWorkflowRunsRequest\x1a\x11.WorkflowRunEvent\"\x00(\x01\x30\x01\x12?\n\x13SendStepActionEvent\x12\x10.StepActionEvent\x1a\x14.ActionEventResponse\"\x00\x12G\n\x17SendGroupKeyActionEvent\x12\x14.GroupKeyActionEvent\x1a\x14.ActionEventResponse\"\x00\x12<\n\x10PutOverridesData\x12\x0e.OverridesData\x1a\x16.OverridesDataResponse\"\x00\x12\x46\n\x0bUnsubscribe\x12\x19.WorkerUnsubscribeRequest\x1a\x1a.WorkerUnsubscribeResponse\"\x00\x12\x43\n\x0eRefreshTimeout\x12\x16.RefreshTimeoutRequest\x1a\x17.RefreshTimeoutResponse\"\x00\x12:\n\x0bReleaseSlot\x12\x13.ReleaseSlotRequest\x1a\x14.ReleaseSlotResponse\"\x00\x12O\n\x12UpsertWorkerLabels\x12\x1a.UpsertWorkerLabelsRequest\x1a\x1b.UpsertWorkerLabelsResponse\"\x00\x42GZEgithub.com/hatchet-dev/hatchet/internal/services/dispatcher/contractsb\x06proto3')
19
+
20
+ _globals = globals()
21
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
22
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'dispatcher_pb2', _globals)
23
+ if not _descriptor._USE_C_DESCRIPTORS:
24
+ _globals['DESCRIPTOR']._loaded_options = None
25
+ _globals['DESCRIPTOR']._serialized_options = b'ZEgithub.com/hatchet-dev/hatchet/internal/services/dispatcher/contracts'
26
+ _globals['_WORKERREGISTERREQUEST_LABELSENTRY']._loaded_options = None
27
+ _globals['_WORKERREGISTERREQUEST_LABELSENTRY']._serialized_options = b'8\001'
28
+ _globals['_UPSERTWORKERLABELSREQUEST_LABELSENTRY']._loaded_options = None
29
+ _globals['_UPSERTWORKERLABELSREQUEST_LABELSENTRY']._serialized_options = b'8\001'
30
+ _globals['_SDKS']._serialized_start=3524
31
+ _globals['_SDKS']._serialized_end=3579
32
+ _globals['_ACTIONTYPE']._serialized_start=3581
33
+ _globals['_ACTIONTYPE']._serialized_end=3659
34
+ _globals['_GROUPKEYACTIONEVENTTYPE']._serialized_start=3662
35
+ _globals['_GROUPKEYACTIONEVENTTYPE']._serialized_end=3824
36
+ _globals['_STEPACTIONEVENTTYPE']._serialized_start=3827
37
+ _globals['_STEPACTIONEVENTTYPE']._serialized_end=3999
38
+ _globals['_RESOURCETYPE']._serialized_start=4001
39
+ _globals['_RESOURCETYPE']._serialized_end=4102
40
+ _globals['_RESOURCEEVENTTYPE']._serialized_start=4105
41
+ _globals['_RESOURCEEVENTTYPE']._serialized_end=4359
42
+ _globals['_WORKFLOWRUNEVENTTYPE']._serialized_start=4361
43
+ _globals['_WORKFLOWRUNEVENTTYPE']._serialized_end=4421
44
+ _globals['_WORKERLABELS']._serialized_start=53
45
+ _globals['_WORKERLABELS']._serialized_end=139
46
+ _globals['_RUNTIMEINFO']._serialized_start=142
47
+ _globals['_RUNTIMEINFO']._serialized_end=342
48
+ _globals['_WORKERREGISTERREQUEST']._serialized_start=345
49
+ _globals['_WORKERREGISTERREQUEST']._serialized_end=665
50
+ _globals['_WORKERREGISTERREQUEST_LABELSENTRY']._serialized_start=563
51
+ _globals['_WORKERREGISTERREQUEST_LABELSENTRY']._serialized_end=623
52
+ _globals['_WORKERREGISTERRESPONSE']._serialized_start=667
53
+ _globals['_WORKERREGISTERRESPONSE']._serialized_end=747
54
+ _globals['_UPSERTWORKERLABELSREQUEST']._serialized_start=750
55
+ _globals['_UPSERTWORKERLABELSREQUEST']._serialized_end=913
56
+ _globals['_UPSERTWORKERLABELSREQUEST_LABELSENTRY']._serialized_start=563
57
+ _globals['_UPSERTWORKERLABELSREQUEST_LABELSENTRY']._serialized_end=623
58
+ _globals['_UPSERTWORKERLABELSRESPONSE']._serialized_start=915
59
+ _globals['_UPSERTWORKERLABELSRESPONSE']._serialized_end=979
60
+ _globals['_ASSIGNEDACTION']._serialized_start=982
61
+ _globals['_ASSIGNEDACTION']._serialized_end=1500
62
+ _globals['_WORKERLISTENREQUEST']._serialized_start=1502
63
+ _globals['_WORKERLISTENREQUEST']._serialized_end=1541
64
+ _globals['_WORKERUNSUBSCRIBEREQUEST']._serialized_start=1543
65
+ _globals['_WORKERUNSUBSCRIBEREQUEST']._serialized_end=1587
66
+ _globals['_WORKERUNSUBSCRIBERESPONSE']._serialized_start=1589
67
+ _globals['_WORKERUNSUBSCRIBERESPONSE']._serialized_end=1652
68
+ _globals['_GROUPKEYACTIONEVENT']._serialized_start=1655
69
+ _globals['_GROUPKEYACTIONEVENT']._serialized_end=1880
70
+ _globals['_STEPACTIONEVENT']._serialized_start=1883
71
+ _globals['_STEPACTIONEVENT']._serialized_end=2159
72
+ _globals['_ACTIONEVENTRESPONSE']._serialized_start=2161
73
+ _globals['_ACTIONEVENTRESPONSE']._serialized_end=2218
74
+ _globals['_SUBSCRIBETOWORKFLOWEVENTSREQUEST']._serialized_start=2221
75
+ _globals['_SUBSCRIBETOWORKFLOWEVENTSREQUEST']._serialized_end=2413
76
+ _globals['_SUBSCRIBETOWORKFLOWRUNSREQUEST']._serialized_start=2415
77
+ _globals['_SUBSCRIBETOWORKFLOWRUNSREQUEST']._serialized_end=2470
78
+ _globals['_WORKFLOWEVENT']._serialized_start=2473
79
+ _globals['_WORKFLOWEVENT']._serialized_end=2779
80
+ _globals['_WORKFLOWRUNEVENT']._serialized_start=2782
81
+ _globals['_WORKFLOWRUNEVENT']._serialized_end=2950
82
+ _globals['_STEPRUNRESULT']._serialized_start=2953
83
+ _globals['_STEPRUNRESULT']._serialized_end=3091
84
+ _globals['_OVERRIDESDATA']._serialized_start=3093
85
+ _globals['_OVERRIDESDATA']._serialized_end=3180
86
+ _globals['_OVERRIDESDATARESPONSE']._serialized_start=3182
87
+ _globals['_OVERRIDESDATARESPONSE']._serialized_end=3205
88
+ _globals['_HEARTBEATREQUEST']._serialized_start=3207
89
+ _globals['_HEARTBEATREQUEST']._serialized_end=3292
90
+ _globals['_HEARTBEATRESPONSE']._serialized_start=3294
91
+ _globals['_HEARTBEATRESPONSE']._serialized_end=3313
92
+ _globals['_REFRESHTIMEOUTREQUEST']._serialized_start=3315
93
+ _globals['_REFRESHTIMEOUTREQUEST']._serialized_end=3385
94
+ _globals['_REFRESHTIMEOUTRESPONSE']._serialized_start=3387
95
+ _globals['_REFRESHTIMEOUTRESPONSE']._serialized_end=3458
96
+ _globals['_RELEASESLOTREQUEST']._serialized_start=3460
97
+ _globals['_RELEASESLOTREQUEST']._serialized_end=3499
98
+ _globals['_RELEASESLOTRESPONSE']._serialized_start=3501
99
+ _globals['_RELEASESLOTRESPONSE']._serialized_end=3522
100
+ _globals['_DISPATCHER']._serialized_start=4424
101
+ _globals['_DISPATCHER']._serialized_end=5312
102
+ # @@protoc_insertion_point(module_scope)