hatchet-sdk 0.7.0 → 0.8.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3266af1a5777c5440854059fd1862765a09bbff72ad322fcfa35c768ca29dc15
4
- data.tar.gz: eceb7946b36c7018a1b61ce635e3014b8e5ab39fafc3a1517e46b4a299d89acc
3
+ metadata.gz: be1774bd178f9f0894c60a509906ffebd7fe8f1a46e6cd115d9c7697a3dd53a6
4
+ data.tar.gz: 4b95d1af25208d79c676971b591a5eb48a9e303a7da8b471eef4c211c88c082d
5
5
  SHA512:
6
- metadata.gz: 96f70ac193f0fde8dd4616c5dc78548e4296a5cfc89f37d50f71dbbd5737996977f63007e14b7b83641253433d29c24af7283ee3e755211d909965c81fea5ff5
7
- data.tar.gz: 7763183e5e3ff4933b643ea0c9086e8a063b6c885ae3ff981e58598c501541bfe6910b7242745a830947117d92697c5d775e79adbe94799d9752d15e20631eba
6
+ metadata.gz: afc688f0fefb4dfb586930df4fa9565fe4b19fe40ccd0420b023ed1955d0f0d324cf4f21e77d015c0890d99372ff59169514ece787b682e20859eb3595a1341b
7
+ data.tar.gz: dddfa86c822f506aa768fb233243a063e8f4b405f7fa6a2295474ae2e65b2d8bcf4ae59490cd8bd0f9b13d20c561e755217dda95402df91597d780b9e0dd3708
data/CHANGELOG.md CHANGED
@@ -5,6 +5,21 @@ All notable changes to Hatchet's Ruby SDK will be documented in this changelog.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.8.1] - 2026-10-05
9
+
10
+ ### Fixed
11
+
12
+ - [Durable tasks](https://docs.hatchet.run/v1/durable-tasks) with many concurrent waits no longer flood the engine with worker status requests. The durable listener sent one worker status request per wait, each listing every pending wait, which was quadratic in the number of waits; each request now lists only the waits registered since the previous one.
13
+ - The periodic worker status request lists only waits that have been pending for more than two seconds, is sent every five seconds instead of every second, and is split into requests of at most 10,000 entries so it stays under the gRPC message size limit.
14
+
15
+ ## [0.8.0] - 2026-09-02
16
+
17
+ ### Added
18
+
19
+ - Added support for tenant-scoped shared concurrency strategies: declare a `ConcurrencyExpression` with `is_tenant_scoped: true` and a `name`, and every task declaring the same name (across workflows) consumes the same concurrency limit. Re-declaring a name updates the strategy in place, and tenant-scoped entries mix freely with workflow-scoped entries in one chain.
20
+ - `max_runs` on `ConcurrencyExpression` now accepts an `Integer` or a `String`: a string is a CEL expression over task input computing the max runs for each concurrency group, so different groups (e.g. pricing tiers) can have different limits.
21
+
22
+
8
23
  ## [0.7.0] - 2026-08-26
9
24
 
10
25
  ### Changed
data/README.md CHANGED
@@ -10,6 +10,51 @@
10
10
 
11
11
  This is the official Ruby SDK for [Hatchet](https://hatchet.run), a distributed, fault-tolerant task queue. The SDK allows you to easily integrate Hatchet's task scheduling and workflow orchestration capabilities into your Ruby applications.
12
12
 
13
+ <!-- hatchet-agent-docs:start -->
14
+ <!-- Generated by the SDK docs pipeline from frontend/docs/reference-map.json. Do not edit by hand. -->
15
+
16
+ ## Documentation for agents
17
+
18
+ The linked pages serve plain markdown for tools and agents. Full docs index: https://docs.hatchet.run/llms.txt
19
+
20
+ Setup and local development:
21
+
22
+ - Quickstart: https://docs.hatchet.run/v1/quickstart.md
23
+ - Running Hatchet locally: https://docs.hatchet.run/v1/running-locally.md
24
+
25
+ Core concepts:
26
+
27
+ - Tasks: https://docs.hatchet.run/v1/tasks.md
28
+ - Workers: https://docs.hatchet.run/v1/workers.md
29
+ - Running tasks: https://docs.hatchet.run/v1/running-your-task.md
30
+ - DAGs: https://docs.hatchet.run/v1/directed-acyclic-graphs.md
31
+ - Durable execution: https://docs.hatchet.run/v1/durable-execution.md
32
+
33
+ Flow control:
34
+
35
+ - Concurrency: https://docs.hatchet.run/v1/concurrency.md
36
+ - Rate limits: https://docs.hatchet.run/v1/rate-limits.md
37
+ - Retries: https://docs.hatchet.run/v1/retry-policies.md
38
+ - Idempotency: https://docs.hatchet.run/v1/idempotency.md
39
+ - CEL expressions: https://docs.hatchet.run/v1/cel-expressions.md
40
+
41
+ Ruby SDK reference (overview: https://docs.hatchet.run/reference/ruby.md):
42
+
43
+ - CEL: https://docs.hatchet.run/reference/ruby/feature-clients/cel.md (guide: https://docs.hatchet.run/v1/cel-expressions.md)
44
+ - Crons: https://docs.hatchet.run/reference/ruby/feature-clients/cron.md (guide: https://docs.hatchet.run/v1/cron-runs.md)
45
+ - Events: https://docs.hatchet.run/reference/ruby/feature-clients/events.md (guide: https://docs.hatchet.run/v1/events.md)
46
+ - Filters: https://docs.hatchet.run/reference/ruby/feature-clients/filters.md (guide: https://docs.hatchet.run/v1/events.md)
47
+ - Logs: https://docs.hatchet.run/reference/ruby/feature-clients/logs.md (guide: https://docs.hatchet.run/v1/logging.md)
48
+ - Metrics: https://docs.hatchet.run/reference/ruby/feature-clients/metrics.md (guide: https://docs.hatchet.run/v1/prometheus-metrics.md)
49
+ - Rate Limits: https://docs.hatchet.run/reference/ruby/feature-clients/rate_limits.md (guide: https://docs.hatchet.run/v1/rate-limits.md)
50
+ - Runs: https://docs.hatchet.run/reference/ruby/feature-clients/runs.md (guide: https://docs.hatchet.run/v1/running-your-task.md)
51
+ - Scheduled Runs: https://docs.hatchet.run/reference/ruby/feature-clients/scheduled.md (guide: https://docs.hatchet.run/v1/scheduled-runs.md)
52
+ - Tenant: https://docs.hatchet.run/reference/ruby/feature-clients/tenant.md
53
+ - Workers: https://docs.hatchet.run/reference/ruby/feature-clients/workers.md (guide: https://docs.hatchet.run/v1/workers.md)
54
+ - Workflows: https://docs.hatchet.run/reference/ruby/feature-clients/workflows.md (guide: https://docs.hatchet.run/v1/tasks.md)
55
+
56
+ <!-- hatchet-agent-docs:end -->
57
+
13
58
  ## Installation
14
59
 
15
60
  Add this line to your application's Gemfile:
@@ -21,7 +21,6 @@ lib/hatchet-sdk-rest/api/healthcheck_api.rb
21
21
  lib/hatchet-sdk-rest/api/log_api.rb
22
22
  lib/hatchet-sdk-rest/api/metadata_api.rb
23
23
  lib/hatchet-sdk-rest/api/observability_api.rb
24
- lib/hatchet-sdk-rest/api/operator_api.rb
25
24
  lib/hatchet-sdk-rest/api/rate_limits_api.rb
26
25
  lib/hatchet-sdk-rest/api/slack_api.rb
27
26
  lib/hatchet-sdk-rest/api/sns_api.rb
@@ -181,7 +180,6 @@ lib/hatchet-sdk-rest/models/v1_cel_debug_request.rb
181
180
  lib/hatchet-sdk-rest/models/v1_cel_debug_response.rb
182
181
  lib/hatchet-sdk-rest/models/v1_cel_debug_response_status.rb
183
182
  lib/hatchet-sdk-rest/models/v1_create_filter_request.rb
184
- lib/hatchet-sdk-rest/models/v1_create_http_operator_request.rb
185
183
  lib/hatchet-sdk-rest/models/v1_create_webhook_request.rb
186
184
  lib/hatchet-sdk-rest/models/v1_create_webhook_request_api_key.rb
187
185
  lib/hatchet-sdk-rest/models/v1_create_webhook_request_base.rb
@@ -198,8 +196,6 @@ lib/hatchet-sdk-rest/models/v1_event_triggered_run.rb
198
196
  lib/hatchet-sdk-rest/models/v1_event_workflow_run_summary.rb
199
197
  lib/hatchet-sdk-rest/models/v1_filter.rb
200
198
  lib/hatchet-sdk-rest/models/v1_filter_list.rb
201
- lib/hatchet-sdk-rest/models/v1_http_operator.rb
202
- lib/hatchet-sdk-rest/models/v1_http_operator_list.rb
203
199
  lib/hatchet-sdk-rest/models/v1_log_line.rb
204
200
  lib/hatchet-sdk-rest/models/v1_log_line_level.rb
205
201
  lib/hatchet-sdk-rest/models/v1_log_line_list.rb
@@ -226,7 +222,6 @@ lib/hatchet-sdk-rest/models/v1_task_timing.rb
226
222
  lib/hatchet-sdk-rest/models/v1_task_timing_list.rb
227
223
  lib/hatchet-sdk-rest/models/v1_trigger_workflow_run_request.rb
228
224
  lib/hatchet-sdk-rest/models/v1_update_filter_request.rb
229
- lib/hatchet-sdk-rest/models/v1_update_http_operator_request.rb
230
225
  lib/hatchet-sdk-rest/models/v1_update_webhook_request.rb
231
226
  lib/hatchet-sdk-rest/models/v1_wait_item.rb
232
227
  lib/hatchet-sdk-rest/models/v1_webhook.rb
@@ -137,11 +137,6 @@ Class | Method | HTTP request | Description
137
137
  *HatchetSdkRest::MetadataApi* | [**metadata_get**](docs/MetadataApi.md#metadata_get) | **GET** /api/v1/meta | Get metadata
138
138
  *HatchetSdkRest::MetadataApi* | [**metadata_list_integrations**](docs/MetadataApi.md#metadata_list_integrations) | **GET** /api/v1/meta/integrations | List integrations
139
139
  *HatchetSdkRest::ObservabilityApi* | [**v1_observability_get_trace**](docs/ObservabilityApi.md#v1_observability_get_trace) | **GET** /api/v1/stable/tenants/{tenant}/traces | Get OTel trace
140
- *HatchetSdkRest::OperatorApi* | [**v1_http_operator_create**](docs/OperatorApi.md#v1_http_operator_create) | **POST** /api/v1/stable/tenants/{tenant}/operators/http | Create an HTTP operator
141
- *HatchetSdkRest::OperatorApi* | [**v1_http_operator_delete**](docs/OperatorApi.md#v1_http_operator_delete) | **DELETE** /api/v1/stable/operators/http/{v1-http-operator} | Delete an HTTP operator
142
- *HatchetSdkRest::OperatorApi* | [**v1_http_operator_get**](docs/OperatorApi.md#v1_http_operator_get) | **GET** /api/v1/stable/operators/http/{v1-http-operator} | Get an HTTP operator
143
- *HatchetSdkRest::OperatorApi* | [**v1_http_operator_list**](docs/OperatorApi.md#v1_http_operator_list) | **GET** /api/v1/stable/tenants/{tenant}/operators/http | List HTTP operators
144
- *HatchetSdkRest::OperatorApi* | [**v1_http_operator_update**](docs/OperatorApi.md#v1_http_operator_update) | **PATCH** /api/v1/stable/operators/http/{v1-http-operator} | Update an HTTP operator
145
140
  *HatchetSdkRest::RateLimitsApi* | [**rate_limit_delete**](docs/RateLimitsApi.md#rate_limit_delete) | **DELETE** /api/v1/tenants/{tenant}/rate-limits | Delete rate limit
146
141
  *HatchetSdkRest::RateLimitsApi* | [**rate_limit_list**](docs/RateLimitsApi.md#rate_limit_list) | **GET** /api/v1/tenants/{tenant}/rate-limits | List rate limits
147
142
  *HatchetSdkRest::SNSApi* | [**sns_create**](docs/SNSApi.md#sns_create) | **POST** /api/v1/tenants/{tenant}/sns | Create SNS integration
@@ -392,7 +387,6 @@ Class | Method | HTTP request | Description
392
387
  - [HatchetSdkRest::V1CancelTaskRequest](docs/V1CancelTaskRequest.md)
393
388
  - [HatchetSdkRest::V1CancelledTasks](docs/V1CancelledTasks.md)
394
389
  - [HatchetSdkRest::V1CreateFilterRequest](docs/V1CreateFilterRequest.md)
395
- - [HatchetSdkRest::V1CreateHTTPOperatorRequest](docs/V1CreateHTTPOperatorRequest.md)
396
390
  - [HatchetSdkRest::V1CreateWebhookRequest](docs/V1CreateWebhookRequest.md)
397
391
  - [HatchetSdkRest::V1CreateWebhookRequestAPIKey](docs/V1CreateWebhookRequestAPIKey.md)
398
392
  - [HatchetSdkRest::V1CreateWebhookRequestBase](docs/V1CreateWebhookRequestBase.md)
@@ -409,8 +403,6 @@ Class | Method | HTTP request | Description
409
403
  - [HatchetSdkRest::V1EventWorkflowRunSummary](docs/V1EventWorkflowRunSummary.md)
410
404
  - [HatchetSdkRest::V1Filter](docs/V1Filter.md)
411
405
  - [HatchetSdkRest::V1FilterList](docs/V1FilterList.md)
412
- - [HatchetSdkRest::V1HTTPOperator](docs/V1HTTPOperator.md)
413
- - [HatchetSdkRest::V1HTTPOperatorList](docs/V1HTTPOperatorList.md)
414
406
  - [HatchetSdkRest::V1LogLine](docs/V1LogLine.md)
415
407
  - [HatchetSdkRest::V1LogLineLevel](docs/V1LogLineLevel.md)
416
408
  - [HatchetSdkRest::V1LogLineList](docs/V1LogLineList.md)
@@ -437,7 +429,6 @@ Class | Method | HTTP request | Description
437
429
  - [HatchetSdkRest::V1TaskTimingList](docs/V1TaskTimingList.md)
438
430
  - [HatchetSdkRest::V1TriggerWorkflowRunRequest](docs/V1TriggerWorkflowRunRequest.md)
439
431
  - [HatchetSdkRest::V1UpdateFilterRequest](docs/V1UpdateFilterRequest.md)
440
- - [HatchetSdkRest::V1UpdateHTTPOperatorRequest](docs/V1UpdateHTTPOperatorRequest.md)
441
432
  - [HatchetSdkRest::V1UpdateWebhookRequest](docs/V1UpdateWebhookRequest.md)
442
433
  - [HatchetSdkRest::V1WaitItem](docs/V1WaitItem.md)
443
434
  - [HatchetSdkRest::V1Webhook](docs/V1Webhook.md)
@@ -98,6 +98,7 @@ module HatchetSdkRest
98
98
  # @option opts [Integer] :limit The number to limit by
99
99
  # @option opts [Array<WorkerStatus>] :statuses Filter by worker status
100
100
  # @option opts [Array<String>] :labels Filter by worker labels
101
+ # @option opts [Boolean] :include_operators Whether to include engine-managed operator workers, which are hidden by default
101
102
  # @return [WorkerList]
102
103
  def worker_list(tenant, opts = {})
103
104
  data, _status_code, _headers = worker_list_with_http_info(tenant, opts)
@@ -112,6 +113,7 @@ module HatchetSdkRest
112
113
  # @option opts [Integer] :limit The number to limit by
113
114
  # @option opts [Array<WorkerStatus>] :statuses Filter by worker status
114
115
  # @option opts [Array<String>] :labels Filter by worker labels
116
+ # @option opts [Boolean] :include_operators Whether to include engine-managed operator workers, which are hidden by default
115
117
  # @return [Array<(WorkerList, Integer, Hash)>] WorkerList data, response status code and response headers
116
118
  def worker_list_with_http_info(tenant, opts = {})
117
119
  if @api_client.config.debugging
@@ -138,6 +140,7 @@ module HatchetSdkRest
138
140
  query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
139
141
  query_params[:'statuses'] = @api_client.build_collection_param(opts[:'statuses'], :multi) if !opts[:'statuses'].nil?
140
142
  query_params[:'labels'] = @api_client.build_collection_param(opts[:'labels'], :multi) if !opts[:'labels'].nil?
143
+ query_params[:'includeOperators'] = opts[:'include_operators'] if !opts[:'include_operators'].nil?
141
144
 
142
145
  # header parameters
143
146
  header_params = opts[:header_params] || {}
@@ -358,6 +358,7 @@ module HatchetSdkRest
358
358
  # Get a workflow run and its metadata to display on the \"detail\" page
359
359
  # @param v1_workflow_run [String] The workflow run id to get
360
360
  # @param [Hash] opts the optional parameters
361
+ # @option opts [Boolean] :include_orchestrator_events Whether to include the DAG orchestrator&#39;s task events, which are hidden by default
361
362
  # @return [V1WorkflowRunDetails]
362
363
  def v1_workflow_run_get(v1_workflow_run, opts = {})
363
364
  data, _status_code, _headers = v1_workflow_run_get_with_http_info(v1_workflow_run, opts)
@@ -368,6 +369,7 @@ module HatchetSdkRest
368
369
  # Get a workflow run and its metadata to display on the \&quot;detail\&quot; page
369
370
  # @param v1_workflow_run [String] The workflow run id to get
370
371
  # @param [Hash] opts the optional parameters
372
+ # @option opts [Boolean] :include_orchestrator_events Whether to include the DAG orchestrator&#39;s task events, which are hidden by default
371
373
  # @return [Array<(V1WorkflowRunDetails, Integer, Hash)>] V1WorkflowRunDetails data, response status code and response headers
372
374
  def v1_workflow_run_get_with_http_info(v1_workflow_run, opts = {})
373
375
  if @api_client.config.debugging
@@ -390,6 +392,7 @@ module HatchetSdkRest
390
392
 
391
393
  # query parameters
392
394
  query_params = opts[:query_params] || {}
395
+ query_params[:'includeOrchestratorEvents'] = opts[:'include_orchestrator_events'] if !opts[:'include_orchestrator_events'].nil?
393
396
 
394
397
  # header parameters
395
398
  header_params = opts[:header_params] || {}
@@ -18,9 +18,10 @@ module HatchetSdkRest
18
18
  TENANT_LOG_WORKFLOW_FILTER_ENABLED = "tenant-log-workflow-filter-enabled".freeze
19
19
  TRACE_MINIMAP_ENABLED = "trace-minimap-enabled".freeze
20
20
  ORGANIZATION_SSO_ENABLED = "organization-sso-enabled".freeze
21
+ OPERATOR_DETAILS_ENABLED = "operator-details-enabled".freeze
21
22
 
22
23
  def self.all_vars
23
- @all_vars ||= [TENANT_LOG_WORKFLOW_FILTER_ENABLED, TRACE_MINIMAP_ENABLED, ORGANIZATION_SSO_ENABLED].freeze
24
+ @all_vars ||= [TENANT_LOG_WORKFLOW_FILTER_ENABLED, TRACE_MINIMAP_ENABLED, ORGANIZATION_SSO_ENABLED, OPERATOR_DETAILS_ENABLED].freeze
24
25
  end
25
26
 
26
27
  # Builds the enum from string
@@ -41,6 +41,9 @@ module HatchetSdkRest
41
41
  # Control-plane shard region for the tenant (e.g. aws:us-west-2).
42
42
  attr_accessor :region
43
43
 
44
+ # The data retention period for the tenant, e.g. 720h.
45
+ attr_accessor :data_retention_period
46
+
44
47
  class EnumAttributeValidator
45
48
  attr_reader :datatype
46
49
  attr_reader :allowable_values
@@ -74,7 +77,8 @@ module HatchetSdkRest
74
77
  :'alert_member_emails' => :'alertMemberEmails',
75
78
  :'environment' => :'environment',
76
79
  :'server_url' => :'serverUrl',
77
- :'region' => :'region'
80
+ :'region' => :'region',
81
+ :'data_retention_period' => :'dataRetentionPeriod'
78
82
  }
79
83
  end
80
84
 
@@ -99,7 +103,8 @@ module HatchetSdkRest
99
103
  :'alert_member_emails' => :'Boolean',
100
104
  :'environment' => :'TenantEnvironment',
101
105
  :'server_url' => :'String',
102
- :'region' => :'String'
106
+ :'region' => :'String',
107
+ :'data_retention_period' => :'String'
103
108
  }
104
109
  end
105
110
 
@@ -168,6 +173,10 @@ module HatchetSdkRest
168
173
  if attributes.key?(:'region')
169
174
  self.region = attributes[:'region']
170
175
  end
176
+
177
+ if attributes.key?(:'data_retention_period')
178
+ self.data_retention_period = attributes[:'data_retention_period']
179
+ end
171
180
  end
172
181
 
173
182
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -258,7 +267,8 @@ module HatchetSdkRest
258
267
  alert_member_emails == o.alert_member_emails &&
259
268
  environment == o.environment &&
260
269
  server_url == o.server_url &&
261
- region == o.region
270
+ region == o.region &&
271
+ data_retention_period == o.data_retention_period
262
272
  end
263
273
 
264
274
  # @see the `==` method
@@ -270,7 +280,7 @@ module HatchetSdkRest
270
280
  # Calculates hash code according to all attributes.
271
281
  # @return [Integer] Hash code
272
282
  def hash
273
- [metadata, name, slug, version, analytics_opt_out, alert_member_emails, environment, server_url, region].hash
283
+ [metadata, name, slug, version, analytics_opt_out, alert_member_emails, environment, server_url, region, data_retention_period].hash
274
284
  end
275
285
 
276
286
  # Builds the object from hash
@@ -60,6 +60,12 @@ module HatchetSdkRest
60
60
 
61
61
  attr_accessor :runtime_info
62
62
 
63
+ # The id of the operator that owns this worker, if it is an engine-managed operator worker.
64
+ attr_accessor :operator_id
65
+
66
+ # The number of durable task runs owned by this operator that are currently evicted while waiting on durable events. Evicted runs hold no slots. Only set for operator workers.
67
+ attr_accessor :evicted_durable_task_count
68
+
63
69
  class EnumAttributeValidator
64
70
  attr_reader :datatype
65
71
  attr_reader :allowable_values
@@ -100,7 +106,9 @@ module HatchetSdkRest
100
106
  :'labels' => :'labels',
101
107
  :'webhook_url' => :'webhookUrl',
102
108
  :'webhook_id' => :'webhookId',
103
- :'runtime_info' => :'runtimeInfo'
109
+ :'runtime_info' => :'runtimeInfo',
110
+ :'operator_id' => :'operatorId',
111
+ :'evicted_durable_task_count' => :'evictedDurableTaskCount'
104
112
  }
105
113
  end
106
114
 
@@ -132,7 +140,9 @@ module HatchetSdkRest
132
140
  :'labels' => :'Array<WorkerLabel>',
133
141
  :'webhook_url' => :'String',
134
142
  :'webhook_id' => :'String',
135
- :'runtime_info' => :'WorkerRuntimeInfo'
143
+ :'runtime_info' => :'WorkerRuntimeInfo',
144
+ :'operator_id' => :'String',
145
+ :'evicted_durable_task_count' => :'Integer'
136
146
  }
137
147
  end
138
148
 
@@ -239,6 +249,14 @@ module HatchetSdkRest
239
249
  if attributes.key?(:'runtime_info')
240
250
  self.runtime_info = attributes[:'runtime_info']
241
251
  end
252
+
253
+ if attributes.key?(:'operator_id')
254
+ self.operator_id = attributes[:'operator_id']
255
+ end
256
+
257
+ if attributes.key?(:'evicted_durable_task_count')
258
+ self.evicted_durable_task_count = attributes[:'evicted_durable_task_count']
259
+ end
242
260
  end
243
261
 
244
262
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -349,7 +367,9 @@ module HatchetSdkRest
349
367
  labels == o.labels &&
350
368
  webhook_url == o.webhook_url &&
351
369
  webhook_id == o.webhook_id &&
352
- runtime_info == o.runtime_info
370
+ runtime_info == o.runtime_info &&
371
+ operator_id == o.operator_id &&
372
+ evicted_durable_task_count == o.evicted_durable_task_count
353
373
  end
354
374
 
355
375
  # @see the `==` method
@@ -361,7 +381,7 @@ module HatchetSdkRest
361
381
  # Calculates hash code according to all attributes.
362
382
  # @return [Integer] Hash code
363
383
  def hash
364
- [metadata, name, type, last_heartbeat_at, last_listener_established, actions, registered_workflows, slots, recent_step_runs, status, slot_config, dispatcher_id, labels, webhook_url, webhook_id, runtime_info].hash
384
+ [metadata, name, type, last_heartbeat_at, last_listener_established, actions, registered_workflows, slots, recent_step_runs, status, slot_config, dispatcher_id, labels, webhook_url, webhook_id, runtime_info, operator_id, evicted_durable_task_count].hash
365
385
  end
366
386
 
367
387
  # Builds the object from hash
@@ -161,7 +161,6 @@ HatchetSdkRest.autoload :V1CELDebugResponseStatus, 'hatchet-sdk-rest/models/v1_c
161
161
  HatchetSdkRest.autoload :V1CancelTaskRequest, 'hatchet-sdk-rest/models/v1_cancel_task_request'
162
162
  HatchetSdkRest.autoload :V1CancelledTasks, 'hatchet-sdk-rest/models/v1_cancelled_tasks'
163
163
  HatchetSdkRest.autoload :V1CreateFilterRequest, 'hatchet-sdk-rest/models/v1_create_filter_request'
164
- HatchetSdkRest.autoload :V1CreateHTTPOperatorRequest, 'hatchet-sdk-rest/models/v1_create_http_operator_request'
165
164
  HatchetSdkRest.autoload :V1CreateWebhookRequest, 'hatchet-sdk-rest/models/v1_create_webhook_request'
166
165
  HatchetSdkRest.autoload :V1CreateWebhookRequestAPIKey, 'hatchet-sdk-rest/models/v1_create_webhook_request_api_key'
167
166
  HatchetSdkRest.autoload :V1CreateWebhookRequestBase, 'hatchet-sdk-rest/models/v1_create_webhook_request_base'
@@ -178,8 +177,6 @@ HatchetSdkRest.autoload :V1EventTriggeredRun, 'hatchet-sdk-rest/models/v1_event_
178
177
  HatchetSdkRest.autoload :V1EventWorkflowRunSummary, 'hatchet-sdk-rest/models/v1_event_workflow_run_summary'
179
178
  HatchetSdkRest.autoload :V1Filter, 'hatchet-sdk-rest/models/v1_filter'
180
179
  HatchetSdkRest.autoload :V1FilterList, 'hatchet-sdk-rest/models/v1_filter_list'
181
- HatchetSdkRest.autoload :V1HTTPOperator, 'hatchet-sdk-rest/models/v1_http_operator'
182
- HatchetSdkRest.autoload :V1HTTPOperatorList, 'hatchet-sdk-rest/models/v1_http_operator_list'
183
180
  HatchetSdkRest.autoload :V1LogLine, 'hatchet-sdk-rest/models/v1_log_line'
184
181
  HatchetSdkRest.autoload :V1LogLineLevel, 'hatchet-sdk-rest/models/v1_log_line_level'
185
182
  HatchetSdkRest.autoload :V1LogLineList, 'hatchet-sdk-rest/models/v1_log_line_list'
@@ -206,7 +203,6 @@ HatchetSdkRest.autoload :V1TaskTiming, 'hatchet-sdk-rest/models/v1_task_timing'
206
203
  HatchetSdkRest.autoload :V1TaskTimingList, 'hatchet-sdk-rest/models/v1_task_timing_list'
207
204
  HatchetSdkRest.autoload :V1TriggerWorkflowRunRequest, 'hatchet-sdk-rest/models/v1_trigger_workflow_run_request'
208
205
  HatchetSdkRest.autoload :V1UpdateFilterRequest, 'hatchet-sdk-rest/models/v1_update_filter_request'
209
- HatchetSdkRest.autoload :V1UpdateHTTPOperatorRequest, 'hatchet-sdk-rest/models/v1_update_http_operator_request'
210
206
  HatchetSdkRest.autoload :V1UpdateWebhookRequest, 'hatchet-sdk-rest/models/v1_update_webhook_request'
211
207
  HatchetSdkRest.autoload :V1WaitItem, 'hatchet-sdk-rest/models/v1_wait_item'
212
208
  HatchetSdkRest.autoload :V1Webhook, 'hatchet-sdk-rest/models/v1_webhook'
@@ -280,7 +276,6 @@ HatchetSdkRest.autoload :HealthcheckApi, 'hatchet-sdk-rest/api/healthcheck_api'
280
276
  HatchetSdkRest.autoload :LogApi, 'hatchet-sdk-rest/api/log_api'
281
277
  HatchetSdkRest.autoload :MetadataApi, 'hatchet-sdk-rest/api/metadata_api'
282
278
  HatchetSdkRest.autoload :ObservabilityApi, 'hatchet-sdk-rest/api/observability_api'
283
- HatchetSdkRest.autoload :OperatorApi, 'hatchet-sdk-rest/api/operator_api'
284
279
  HatchetSdkRest.autoload :RateLimitsApi, 'hatchet-sdk-rest/api/rate_limits_api'
285
280
  HatchetSdkRest.autoload :SNSApi, 'hatchet-sdk-rest/api/sns_api'
286
281
  HatchetSdkRest.autoload :SlackApi, 'hatchet-sdk-rest/api/slack_api'
@@ -11,6 +11,33 @@ module Hatchet
11
11
  CANCEL_QUEUED_EXCEPT_OLDEST = :cancel_queued_except_oldest
12
12
  end
13
13
 
14
+ # Shared serialization helpers for concurrency entries
15
+ # @api private
16
+ module ConcurrencyProto
17
+ # Map Ruby symbol to v1 proto enum symbol
18
+ LIMIT_STRATEGY_MAP = {
19
+ cancel_in_progress: :CANCEL_IN_PROGRESS,
20
+ cancel_newest: :CANCEL_NEWEST,
21
+ group_round_robin: :GROUP_ROUND_ROBIN,
22
+ queue: :QUEUE_NEWEST,
23
+ drop_newest: :DROP_NEWEST,
24
+ cancel_queued_except_newest: :CANCEL_QUEUED_EXCEPT_NEWEST,
25
+ cancel_queued_except_oldest: :CANCEL_QUEUED_EXCEPT_OLDEST,
26
+ }.freeze
27
+
28
+ # Split the max_runs union onto the proto's static/expression field pair. A String is
29
+ # a CEL expression over task input; the static field then carries the default of 1,
30
+ # which only governs slots created before the expression existed (each new task's
31
+ # slot carries its own evaluated value).
32
+ # @param max_runs [Integer, String]
33
+ # @return [Array(Integer, String, nil)]
34
+ def self.split_max_runs(max_runs)
35
+ return [1, max_runs] if max_runs.is_a?(String)
36
+
37
+ [max_runs, nil]
38
+ end
39
+ end
40
+
14
41
  # Defines a concurrency expression for workflow or task-level concurrency control
15
42
  #
16
43
  # @example Workflow-level concurrency
@@ -20,6 +47,22 @@ module Hatchet
20
47
  # limit_strategy: :cancel_in_progress
21
48
  # )
22
49
  #
50
+ # @example Dynamic per-group limits via a CEL expression
51
+ # Hatchet::ConcurrencyExpression.new(
52
+ # expression: "input.tier",
53
+ # max_runs: "input.tier == 'premium' ? 10 : 1",
54
+ # limit_strategy: :group_round_robin
55
+ # )
56
+ #
57
+ # @example Tenant-scoped, shared across workflows
58
+ # Hatchet::ConcurrencyExpression.new(
59
+ # expression: "input.group",
60
+ # max_runs: 1,
61
+ # limit_strategy: :group_round_robin,
62
+ # name: "tenant-wide-limit",
63
+ # is_tenant_scoped: true
64
+ # )
65
+ #
23
66
  # @example Task-level concurrency with multiple keys
24
67
  # [
25
68
  # Hatchet::ConcurrencyExpression.new(expression: "input.digit", max_runs: 8, limit_strategy: :group_round_robin),
@@ -29,52 +72,72 @@ module Hatchet
29
72
  # @return [String] CEL expression evaluated against the workflow input
30
73
  attr_reader :expression
31
74
 
32
- # @return [Integer] Maximum concurrent runs for this key
75
+ # @return [Integer, String] Maximum concurrent runs for this key: a fixed number, or
76
+ # a CEL expression over task input computing the max runs for that task's
77
+ # concurrency group. With an expression, a group's effective limit is the value
78
+ # from its most recently created task.
33
79
  attr_reader :max_runs
34
80
 
35
81
  # @return [Symbol] Strategy when limit is exceeded (:cancel_in_progress, :cancel_newest, :group_round_robin, :queue, :cancel_queued_except_newest, :cancel_queued_except_oldest)
36
82
  attr_reader :limit_strategy
37
83
 
84
+ # @return [String, nil] Unique (per tenant) strategy name; required when tenant-scoped
85
+ attr_reader :name
86
+
87
+ # @return [Boolean] When true, the entry defines (or updates in place) a tenant-scoped
88
+ # strategy shared across workflows, keyed by name: every task declaring the same
89
+ # name consumes the same concurrency limit. The position in the concurrency list is
90
+ # the chain order, and chains sharing tenant-scoped strategies must order them
91
+ # consistently.
92
+ attr_reader :is_tenant_scoped
93
+
38
94
  # @param expression [String] CEL expression evaluated against input
39
- # @param max_runs [Integer] Maximum concurrent runs
95
+ # @param max_runs [Integer, String] Maximum concurrent runs, or a CEL expression computing them per group
40
96
  # @param limit_strategy [Symbol] Strategy when limit is reached
41
- def initialize(expression:, max_runs: 1, limit_strategy: :cancel_in_progress)
97
+ # @param name [String, nil] Unique (per tenant) strategy name; required when tenant-scoped
98
+ # @param is_tenant_scoped [Boolean] Share this strategy across workflows, keyed by name
99
+ def initialize(expression:, max_runs: 1, limit_strategy: :cancel_in_progress, name: nil, is_tenant_scoped: false)
100
+ raise ArgumentError, "a name is required for tenant-scoped concurrency" if is_tenant_scoped && (name.nil? || name.empty?)
101
+
42
102
  @expression = expression
43
103
  @max_runs = max_runs
44
104
  @limit_strategy = limit_strategy
105
+ @name = name
106
+ @is_tenant_scoped = is_tenant_scoped
45
107
  end
46
108
 
109
+ # @deprecated kept for backwards compatibility; use {ConcurrencyProto::LIMIT_STRATEGY_MAP}
110
+ LIMIT_STRATEGY_MAP = ConcurrencyProto::LIMIT_STRATEGY_MAP
111
+
47
112
  # Convert to a hash for API serialization
48
113
  # @return [Hash]
49
114
  def to_h
50
- {
115
+ h = {
51
116
  expression: @expression,
52
117
  max_runs: @max_runs,
53
118
  limit_strategy: @limit_strategy.to_s.upcase,
54
119
  }
120
+ h[:name] = @name if @name
121
+ h[:is_tenant_scoped] = true if @is_tenant_scoped
122
+ h
55
123
  end
56
124
 
57
- # Map Ruby symbol to v1 proto enum symbol
58
- LIMIT_STRATEGY_MAP = {
59
- cancel_in_progress: :CANCEL_IN_PROGRESS,
60
- cancel_newest: :CANCEL_NEWEST,
61
- group_round_robin: :GROUP_ROUND_ROBIN,
62
- queue: :QUEUE_NEWEST,
63
- drop_newest: :DROP_NEWEST,
64
- cancel_queued_except_newest: :CANCEL_QUEUED_EXCEPT_NEWEST,
65
- cancel_queued_except_oldest: :CANCEL_QUEUED_EXCEPT_OLDEST,
66
- }.freeze
67
-
68
125
  # Convert to a V1::Concurrency protobuf message
69
126
  # @return [V1::Concurrency]
70
127
  def to_proto
71
- proto_strategy = LIMIT_STRATEGY_MAP[@limit_strategy] || :CANCEL_IN_PROGRESS
128
+ proto_strategy = ConcurrencyProto::LIMIT_STRATEGY_MAP[@limit_strategy] || :CANCEL_IN_PROGRESS
129
+ static_max, max_runs_expression = ConcurrencyProto.split_max_runs(@max_runs)
72
130
 
73
- ::V1::Concurrency.new(
131
+ args = {
74
132
  expression: @expression,
75
- max_runs: @max_runs,
133
+ max_runs: static_max,
76
134
  limit_strategy: proto_strategy,
77
- )
135
+ }
136
+ args[:max_runs_expression] = max_runs_expression if max_runs_expression
137
+ args[:name] = @name if @name
138
+ args[:is_tenant_scoped] = true if @is_tenant_scoped
139
+
140
+ ::V1::Concurrency.new(**args)
78
141
  end
79
142
  end
80
143
  end
@@ -7,7 +7,7 @@ require 'google/protobuf'
7
7
  require 'google/protobuf/timestamp_pb'
8
8
 
9
9
 
10
- descriptor_data = "\n\x1b\x64ispatcher/dispatcher.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"Z\n\x0cWorkerLabels\x12\x16\n\tstr_value\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tint_value\x18\x02 \x01(\x05H\x01\x88\x01\x01\x42\x0c\n\n_str_valueB\x0c\n\n_int_value\"\xcc\x01\n\x0bRuntimeInfo\x12\x18\n\x0bsdk_version\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x08language\x18\x02 \x01(\x0e\x32\x05.SDKSH\x01\x88\x01\x01\x12\x1d\n\x10language_version\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\x0e\n\x0c_sdk_versionB\x0b\n\t_languageB\x13\n\x11_language_versionB\x05\n\x03_osB\x08\n\x06_extra\"\xb1\x03\n\x15WorkerRegisterRequest\x12\x13\n\x0bworker_name\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t\x12\x10\n\x08services\x18\x03 \x03(\t\x12\x12\n\x05slots\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06labels\x18\x05 \x03(\x0b\x32\".WorkerRegisterRequest.LabelsEntry\x12\x17\n\nwebhook_id\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\'\n\x0cruntime_info\x18\x07 \x01(\x0b\x32\x0c.RuntimeInfoH\x02\x88\x01\x01\x12;\n\x0bslot_config\x18\t \x03(\x0b\x32&.WorkerRegisterRequest.SlotConfigEntry\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\x1a\x31\n\x0fSlotConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x42\x08\n\x06_slotsB\r\n\x0b_webhook_idB\x0f\n\r_runtime_info\"S\n\x16WorkerRegisterResponse\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\x13\n\x0bworker_name\x18\x03 \x01(\t\"\xa4\x01\n\x19UpsertWorkerLabelsRequest\x12\x11\n\tworker_id\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\"B\n\x1aUpsertWorkerLabelsResponse\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"\xcc\x08\n\x0e\x41ssignedAction\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x17\n\x0fworkflow_run_id\x18\x02 \x01(\t\x12\x1c\n\x14get_group_key_run_id\x18\x03 \x01(\t\x12\x0e\n\x06job_id\x18\x04 \x01(\t\x12\x10\n\x08job_name\x18\x05 \x01(\t\x12\x12\n\njob_run_id\x18\x06 \x01(\t\x12\x0f\n\x07task_id\x18\x07 \x01(\t\x12\x1c\n\x14task_run_external_id\x18\x08 \x01(\t\x12\x11\n\taction_id\x18\t \x01(\t\x12 \n\x0b\x61\x63tion_type\x18\n \x01(\x0e\x32\x0b.ActionType\x12\x16\n\x0e\x61\x63tion_payload\x18\x0b \x01(\t\x12\x11\n\ttask_name\x18\x0c \x01(\t\x12\x13\n\x0bretry_count\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\x12\x10\n\x08priority\x18\x12 \x01(\x05\x12\x18\n\x0bworkflow_id\x18\x13 \x01(\tH\x04\x88\x01\x01\x12 \n\x13workflow_version_id\x18\x14 \x01(\tH\x05\x88\x01\x01\x12*\n\x1d\x64urable_task_invocation_count\x18\x15 \x01(\x05H\x06\x88\x01\x01\x12)\n\x1ctriggering_event_external_id\x18\x16 \x01(\tH\x07\x88\x01\x01\x12!\n\x14triggering_event_key\x18\x17 \x01(\tH\x08\x88\x01\x01\x12\x14\n\x07\x62\x61tchId\x18\x18 \x01(\tH\t\x88\x01\x01\x12\x16\n\tbatchSize\x18\x19 \x01(\x05H\n\x88\x01\x01\x12\x17\n\nbatchIndex\x18\x1a \x01(\x05H\x0b\x88\x01\x01\x12\x32\n\x11\x62\x61tchStartPayload\x18\x1b \x01(\x0b\x32\x12.BatchStartPayloadH\x0c\x88\x01\x01\x12\x15\n\x08\x62\x61tchKey\x18\x1c \x01(\tH\r\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_idB\x0e\n\x0c_workflow_idB\x16\n\x14_workflow_version_idB \n\x1e_durable_task_invocation_countB\x1f\n\x1d_triggering_event_external_idB\x17\n\x15_triggering_event_keyB\n\n\x08_batchIdB\x0c\n\n_batchSizeB\r\n\x0b_batchIndexB\x14\n\x12_batchStartPayloadB\x0b\n\t_batchKey\"q\n\x11\x42\x61tchStartPayload\x12\x15\n\rtriggerReason\x18\x01 \x01(\t\x12/\n\x0btriggerTime\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0c\x65xpectedSize\x18\x03 \x01(\x05\"(\n\x13WorkerListenRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\"-\n\x18WorkerUnsubscribeRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\"A\n\x19WorkerUnsubscribeResponse\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"\xec\x01\n\x13GroupKeyActionEvent\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x17\n\x0fworkflow_run_id\x18\x02 \x01(\t\x12\x1c\n\x14get_group_key_run_id\x18\x03 \x01(\t\x12\x11\n\taction_id\x18\x04 \x01(\t\x12\x33\n\x0f\x65vent_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\nevent_type\x18\x06 \x01(\x0e\x32\x18.GroupKeyActionEventType\x12\x15\n\revent_payload\x18\x07 \x01(\t\"\xde\x02\n\x0fStepActionEvent\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x0e\n\x06job_id\x18\x02 \x01(\t\x12\x12\n\njob_run_id\x18\x03 \x01(\t\x12\x0f\n\x07task_id\x18\x04 \x01(\t\x12\x1c\n\x14task_run_external_id\x18\x05 \x01(\t\x12\x11\n\taction_id\x18\x06 \x01(\t\x12\x33\n\x0f\x65vent_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\nevent_type\x18\x08 \x01(\x0e\x32\x14.StepActionEventType\x12\x15\n\revent_payload\x18\t \x01(\t\x12\x18\n\x0bretry_count\x18\n \x01(\x05H\x00\x88\x01\x01\x12\x1d\n\x10should_not_retry\x18\x0b \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_retry_countB\x13\n\x11_should_not_retry\"\xa9\x01\n\x14\x42\x61tchActionEventItem\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\x12\x15\n\revent_payload\x18\x02 \x01(\t\x12\x18\n\x0bretry_count\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x1d\n\x10should_not_retry\x18\x04 \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_retry_countB\x13\n\x11_should_not_retry\"\xf1\x01\n\x10\x42\x61tchActionEvent\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x0e\n\x06job_id\x18\x02 \x01(\t\x12\x11\n\taction_id\x18\x03 \x01(\t\x12\x15\n\x08\x62\x61tch_id\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x33\n\x0f\x65vent_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\nevent_type\x18\x06 \x01(\x0e\x32\x14.StepActionEventType\x12$\n\x05items\x18\x07 \x03(\x0b\x32\x15.BatchActionEventItemB\x0b\n\t_batch_id\";\n\x13\x41\x63tionEventResponse\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"\xcc\x01\n SubscribeToWorkflowEventsRequest\x12\x1c\n\x0fworkflow_run_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12 \n\x13\x61\x64\x64itional_meta_key\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\"\n\x15\x61\x64\x64itional_meta_value\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x12\n\x10_workflow_run_idB\x16\n\x14_additional_meta_keyB\x18\n\x16_additional_meta_value\"9\n\x1eSubscribeToWorkflowRunsRequest\x12\x17\n\x0fworkflow_run_id\x18\x01 \x01(\t\"\xe7\x02\n\rWorkflowEvent\x12\x17\n\x0fworkflow_run_id\x18\x01 \x01(\t\x12$\n\rresource_type\x18\x02 \x01(\x0e\x32\r.ResourceType\x12&\n\nevent_type\x18\x03 \x01(\x0e\x32\x12.ResourceEventType\x12\x13\n\x0bresource_id\x18\x04 \x01(\t\x12\x33\n\x0f\x65vent_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\revent_payload\x18\x06 \x01(\t\x12\x0e\n\x06hangup\x18\x07 \x01(\x08\x12\x19\n\x0ctask_retries\x18\x08 \x01(\x05H\x00\x88\x01\x01\x12\x18\n\x0bretry_count\x18\t \x01(\x05H\x01\x88\x01\x01\x12\x18\n\x0b\x65vent_index\x18\n \x01(\x03H\x02\x88\x01\x01\x42\x0f\n\r_task_retriesB\x0e\n\x0c_retry_countB\x0e\n\x0c_event_index\"\xac\x01\n\x10WorkflowRunEvent\x12\x17\n\x0fworkflow_run_id\x18\x01 \x01(\t\x12)\n\nevent_type\x18\x02 \x01(\x0e\x32\x15.WorkflowRunEventType\x12\x33\n\x0f\x65vent_timestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x07results\x18\x04 \x03(\x0b\x32\x0e.StepRunResult\"\x92\x01\n\rStepRunResult\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\x12\x11\n\ttask_name\x18\x02 \x01(\t\x12\x12\n\njob_run_id\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\"c\n\rOverridesData\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x17\n\x0f\x63\x61ller_filename\x18\x04 \x01(\t\"\x17\n\x15OverridesDataResponse\"W\n\x10HeartbeatRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x30\n\x0cheartbeat_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x13\n\x11HeartbeatResponse\"S\n\x15RefreshTimeoutRequest\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\x12\x1c\n\x14increment_timeout_by\x18\x02 \x01(\t\"H\n\x16RefreshTimeoutResponse\x12.\n\ntimeout_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"2\n\x12ReleaseSlotRequest\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\"\x15\n\x13ReleaseSlotResponse\"9\n\x19RestoreEvictedTaskRequest\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\".\n\x1aRestoreEvictedTaskResponse\x12\x10\n\x08requeued\x18\x01 \x01(\x08\"\x13\n\x11GetVersionRequest\"%\n\x12GetVersionResponse\x12\x0f\n\x07version\x18\x01 \x01(\t*A\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\x12\x08\n\x04RUBY\x10\x04*_\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\x12\x0f\n\x0bSTART_BATCH\x10\x03*\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*\xcb\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\x12\x1d\n\x19STEP_EVENT_TYPE_CANCELLED\x10\x05*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\xc5\x08\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\x12\x41\n\x14SendBatchActionEvent\x12\x11.BatchActionEvent\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\x12RestoreEvictedTask\x12\x1a.RestoreEvictedTaskRequest\x1a\x1b.RestoreEvictedTaskResponse\"\x00\x12O\n\x12UpsertWorkerLabels\x12\x1a.UpsertWorkerLabelsRequest\x1a\x1b.UpsertWorkerLabelsResponse\"\x00\x12\x37\n\nGetVersion\x12\x12.GetVersionRequest\x1a\x13.GetVersionResponse\"\x00\x42GZEgithub.com/hatchet-dev/hatchet/internal/services/dispatcher/contractsb\x06proto3"
10
+ descriptor_data = "\n\x1b\x64ispatcher/dispatcher.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"Z\n\x0cWorkerLabels\x12\x16\n\tstr_value\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x16\n\tint_value\x18\x02 \x01(\x05H\x01\x88\x01\x01\x42\x0c\n\n_str_valueB\x0c\n\n_int_value\"\xcc\x01\n\x0bRuntimeInfo\x12\x18\n\x0bsdk_version\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x1c\n\x08language\x18\x02 \x01(\x0e\x32\x05.SDKSH\x01\x88\x01\x01\x12\x1d\n\x10language_version\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\x0e\n\x0c_sdk_versionB\x0b\n\t_languageB\x13\n\x11_language_versionB\x05\n\x03_osB\x08\n\x06_extra\"\xb1\x03\n\x15WorkerRegisterRequest\x12\x13\n\x0bworker_name\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x63tions\x18\x02 \x03(\t\x12\x10\n\x08services\x18\x03 \x03(\t\x12\x12\n\x05slots\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12\x32\n\x06labels\x18\x05 \x03(\x0b\x32\".WorkerRegisterRequest.LabelsEntry\x12\x17\n\nwebhook_id\x18\x06 \x01(\tH\x01\x88\x01\x01\x12\'\n\x0cruntime_info\x18\x07 \x01(\x0b\x32\x0c.RuntimeInfoH\x02\x88\x01\x01\x12;\n\x0bslot_config\x18\t \x03(\x0b\x32&.WorkerRegisterRequest.SlotConfigEntry\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\x1a\x31\n\x0fSlotConfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\x42\x08\n\x06_slotsB\r\n\x0b_webhook_idB\x0f\n\r_runtime_info\"S\n\x16WorkerRegisterResponse\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\x13\n\x0bworker_name\x18\x03 \x01(\t\"\xa4\x01\n\x19UpsertWorkerLabelsRequest\x12\x11\n\tworker_id\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\"B\n\x1aUpsertWorkerLabelsResponse\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"\x9c\t\n\x0e\x41ssignedAction\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x17\n\x0fworkflow_run_id\x18\x02 \x01(\t\x12\x1c\n\x14get_group_key_run_id\x18\x03 \x01(\t\x12\x0e\n\x06job_id\x18\x04 \x01(\t\x12\x10\n\x08job_name\x18\x05 \x01(\t\x12\x12\n\njob_run_id\x18\x06 \x01(\t\x12\x0f\n\x07task_id\x18\x07 \x01(\t\x12\x1c\n\x14task_run_external_id\x18\x08 \x01(\t\x12\x11\n\taction_id\x18\t \x01(\t\x12 \n\x0b\x61\x63tion_type\x18\n \x01(\x0e\x32\x0b.ActionType\x12\x16\n\x0e\x61\x63tion_payload\x18\x0b \x01(\t\x12\x11\n\ttask_name\x18\x0c \x01(\t\x12\x13\n\x0bretry_count\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\x12\x10\n\x08priority\x18\x12 \x01(\x05\x12\x18\n\x0bworkflow_id\x18\x13 \x01(\tH\x04\x88\x01\x01\x12 \n\x13workflow_version_id\x18\x14 \x01(\tH\x05\x88\x01\x01\x12*\n\x1d\x64urable_task_invocation_count\x18\x15 \x01(\x05H\x06\x88\x01\x01\x12)\n\x1ctriggering_event_external_id\x18\x16 \x01(\tH\x07\x88\x01\x01\x12!\n\x14triggering_event_key\x18\x17 \x01(\tH\x08\x88\x01\x01\x12\x14\n\x07\x62\x61tchId\x18\x18 \x01(\tH\t\x88\x01\x01\x12\x16\n\tbatchSize\x18\x19 \x01(\x05H\n\x88\x01\x01\x12\x17\n\nbatchIndex\x18\x1a \x01(\x05H\x0b\x88\x01\x01\x12\x32\n\x11\x62\x61tchStartPayload\x18\x1b \x01(\x0b\x32\x12.BatchStartPayloadH\x0c\x88\x01\x01\x12\x15\n\x08\x62\x61tchKey\x18\x1c \x01(\tH\r\x88\x01\x01\x12\x39\n\x10task_inserted_at\x18\x1d \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x0e\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_idB\x0e\n\x0c_workflow_idB\x16\n\x14_workflow_version_idB \n\x1e_durable_task_invocation_countB\x1f\n\x1d_triggering_event_external_idB\x17\n\x15_triggering_event_keyB\n\n\x08_batchIdB\x0c\n\n_batchSizeB\r\n\x0b_batchIndexB\x14\n\x12_batchStartPayloadB\x0b\n\t_batchKeyB\x13\n\x11_task_inserted_at\"q\n\x11\x42\x61tchStartPayload\x12\x15\n\rtriggerReason\x18\x01 \x01(\t\x12/\n\x0btriggerTime\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0c\x65xpectedSize\x18\x03 \x01(\x05\"(\n\x13WorkerListenRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\"-\n\x18WorkerUnsubscribeRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\"A\n\x19WorkerUnsubscribeResponse\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"\xec\x01\n\x13GroupKeyActionEvent\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x17\n\x0fworkflow_run_id\x18\x02 \x01(\t\x12\x1c\n\x14get_group_key_run_id\x18\x03 \x01(\t\x12\x11\n\taction_id\x18\x04 \x01(\t\x12\x33\n\x0f\x65vent_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12,\n\nevent_type\x18\x06 \x01(\x0e\x32\x18.GroupKeyActionEventType\x12\x15\n\revent_payload\x18\x07 \x01(\t\"\xde\x02\n\x0fStepActionEvent\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x0e\n\x06job_id\x18\x02 \x01(\t\x12\x12\n\njob_run_id\x18\x03 \x01(\t\x12\x0f\n\x07task_id\x18\x04 \x01(\t\x12\x1c\n\x14task_run_external_id\x18\x05 \x01(\t\x12\x11\n\taction_id\x18\x06 \x01(\t\x12\x33\n\x0f\x65vent_timestamp\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\nevent_type\x18\x08 \x01(\x0e\x32\x14.StepActionEventType\x12\x15\n\revent_payload\x18\t \x01(\t\x12\x18\n\x0bretry_count\x18\n \x01(\x05H\x00\x88\x01\x01\x12\x1d\n\x10should_not_retry\x18\x0b \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_retry_countB\x13\n\x11_should_not_retry\"\xa9\x01\n\x14\x42\x61tchActionEventItem\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\x12\x15\n\revent_payload\x18\x02 \x01(\t\x12\x18\n\x0bretry_count\x18\x03 \x01(\x05H\x00\x88\x01\x01\x12\x1d\n\x10should_not_retry\x18\x04 \x01(\x08H\x01\x88\x01\x01\x42\x0e\n\x0c_retry_countB\x13\n\x11_should_not_retry\"\xf1\x01\n\x10\x42\x61tchActionEvent\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x0e\n\x06job_id\x18\x02 \x01(\t\x12\x11\n\taction_id\x18\x03 \x01(\t\x12\x15\n\x08\x62\x61tch_id\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x33\n\x0f\x65vent_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12(\n\nevent_type\x18\x06 \x01(\x0e\x32\x14.StepActionEventType\x12$\n\x05items\x18\x07 \x03(\x0b\x32\x15.BatchActionEventItemB\x0b\n\t_batch_id\";\n\x13\x41\x63tionEventResponse\x12\x11\n\ttenant_id\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\"\xcc\x01\n SubscribeToWorkflowEventsRequest\x12\x1c\n\x0fworkflow_run_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12 \n\x13\x61\x64\x64itional_meta_key\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\"\n\x15\x61\x64\x64itional_meta_value\x18\x03 \x01(\tH\x02\x88\x01\x01\x42\x12\n\x10_workflow_run_idB\x16\n\x14_additional_meta_keyB\x18\n\x16_additional_meta_value\"9\n\x1eSubscribeToWorkflowRunsRequest\x12\x17\n\x0fworkflow_run_id\x18\x01 \x01(\t\"\xe7\x02\n\rWorkflowEvent\x12\x17\n\x0fworkflow_run_id\x18\x01 \x01(\t\x12$\n\rresource_type\x18\x02 \x01(\x0e\x32\r.ResourceType\x12&\n\nevent_type\x18\x03 \x01(\x0e\x32\x12.ResourceEventType\x12\x13\n\x0bresource_id\x18\x04 \x01(\t\x12\x33\n\x0f\x65vent_timestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\revent_payload\x18\x06 \x01(\t\x12\x0e\n\x06hangup\x18\x07 \x01(\x08\x12\x19\n\x0ctask_retries\x18\x08 \x01(\x05H\x00\x88\x01\x01\x12\x18\n\x0bretry_count\x18\t \x01(\x05H\x01\x88\x01\x01\x12\x18\n\x0b\x65vent_index\x18\n \x01(\x03H\x02\x88\x01\x01\x42\x0f\n\r_task_retriesB\x0e\n\x0c_retry_countB\x0e\n\x0c_event_index\"\xac\x01\n\x10WorkflowRunEvent\x12\x17\n\x0fworkflow_run_id\x18\x01 \x01(\t\x12)\n\nevent_type\x18\x02 \x01(\x0e\x32\x15.WorkflowRunEventType\x12\x33\n\x0f\x65vent_timestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x07results\x18\x04 \x03(\x0b\x32\x0e.StepRunResult\"\x92\x01\n\rStepRunResult\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\x12\x11\n\ttask_name\x18\x02 \x01(\t\x12\x12\n\njob_run_id\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\"c\n\rOverridesData\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x17\n\x0f\x63\x61ller_filename\x18\x04 \x01(\t\"\x17\n\x15OverridesDataResponse\"W\n\x10HeartbeatRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x30\n\x0cheartbeat_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"\x13\n\x11HeartbeatResponse\"S\n\x15RefreshTimeoutRequest\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\x12\x1c\n\x14increment_timeout_by\x18\x02 \x01(\t\"H\n\x16RefreshTimeoutResponse\x12.\n\ntimeout_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"2\n\x12ReleaseSlotRequest\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\"\x15\n\x13ReleaseSlotResponse\"9\n\x19RestoreEvictedTaskRequest\x12\x1c\n\x14task_run_external_id\x18\x01 \x01(\t\".\n\x1aRestoreEvictedTaskResponse\x12\x10\n\x08requeued\x18\x01 \x01(\x08\"\x13\n\x11GetVersionRequest\"%\n\x12GetVersionResponse\x12\x0f\n\x07version\x18\x01 \x01(\t*A\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\x12\x08\n\x04RUBY\x10\x04*_\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\x12\x0f\n\x0bSTART_BATCH\x10\x03*\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*\xcb\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\x12\x1d\n\x19STEP_EVENT_TYPE_CANCELLED\x10\x05*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\xc5\x08\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\x12\x41\n\x14SendBatchActionEvent\x12\x11.BatchActionEvent\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\x12RestoreEvictedTask\x12\x1a.RestoreEvictedTaskRequest\x1a\x1b.RestoreEvictedTaskResponse\"\x00\x12O\n\x12UpsertWorkerLabels\x12\x1a.UpsertWorkerLabelsRequest\x1a\x1b.UpsertWorkerLabelsResponse\"\x00\x12\x37\n\nGetVersion\x12\x12.GetVersionRequest\x1a\x13.GetVersionResponse\"\x00\x42GZEgithub.com/hatchet-dev/hatchet/internal/services/dispatcher/contractsb\x06proto3"
11
11
 
12
12
  pool = ::Google::Protobuf::DescriptorPool.generated_pool
13
13
  pool.add_serialized_file(descriptor_data)