hatchet-sdk 1.12.3__py3-none-any.whl → 1.13.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.

Potentially problematic release.


This version of hatchet-sdk might be problematic. Click here for more details.

Files changed (48) hide show
  1. hatchet_sdk/__init__.py +46 -40
  2. hatchet_sdk/clients/admin.py +18 -23
  3. hatchet_sdk/clients/dispatcher/action_listener.py +4 -3
  4. hatchet_sdk/clients/dispatcher/dispatcher.py +1 -4
  5. hatchet_sdk/clients/event_ts.py +2 -1
  6. hatchet_sdk/clients/events.py +16 -12
  7. hatchet_sdk/clients/listeners/durable_event_listener.py +4 -2
  8. hatchet_sdk/clients/listeners/pooled_listener.py +2 -2
  9. hatchet_sdk/clients/listeners/run_event_listener.py +7 -8
  10. hatchet_sdk/clients/listeners/workflow_listener.py +14 -6
  11. hatchet_sdk/clients/rest/api_response.py +3 -2
  12. hatchet_sdk/clients/rest/tenacity_utils.py +6 -8
  13. hatchet_sdk/config.py +2 -0
  14. hatchet_sdk/connection.py +10 -4
  15. hatchet_sdk/context/context.py +170 -46
  16. hatchet_sdk/context/worker_context.py +4 -7
  17. hatchet_sdk/contracts/dispatcher_pb2.py +38 -38
  18. hatchet_sdk/contracts/dispatcher_pb2.pyi +4 -2
  19. hatchet_sdk/contracts/events_pb2.py +13 -13
  20. hatchet_sdk/contracts/events_pb2.pyi +4 -2
  21. hatchet_sdk/contracts/v1/workflows_pb2.py +1 -1
  22. hatchet_sdk/contracts/v1/workflows_pb2.pyi +2 -2
  23. hatchet_sdk/exceptions.py +99 -1
  24. hatchet_sdk/features/cron.py +2 -2
  25. hatchet_sdk/features/filters.py +3 -3
  26. hatchet_sdk/features/runs.py +4 -4
  27. hatchet_sdk/features/scheduled.py +8 -9
  28. hatchet_sdk/hatchet.py +65 -64
  29. hatchet_sdk/opentelemetry/instrumentor.py +20 -20
  30. hatchet_sdk/runnables/action.py +1 -2
  31. hatchet_sdk/runnables/contextvars.py +19 -0
  32. hatchet_sdk/runnables/task.py +37 -29
  33. hatchet_sdk/runnables/types.py +9 -8
  34. hatchet_sdk/runnables/workflow.py +57 -42
  35. hatchet_sdk/utils/proto_enums.py +4 -4
  36. hatchet_sdk/utils/timedelta_to_expression.py +2 -3
  37. hatchet_sdk/utils/typing.py +11 -17
  38. hatchet_sdk/waits.py +6 -5
  39. hatchet_sdk/worker/action_listener_process.py +33 -13
  40. hatchet_sdk/worker/runner/run_loop_manager.py +15 -11
  41. hatchet_sdk/worker/runner/runner.py +102 -92
  42. hatchet_sdk/worker/runner/utils/capture_logs.py +72 -31
  43. hatchet_sdk/worker/worker.py +29 -25
  44. hatchet_sdk/workflow_run.py +4 -2
  45. {hatchet_sdk-1.12.3.dist-info → hatchet_sdk-1.13.0.dist-info}/METADATA +1 -1
  46. {hatchet_sdk-1.12.3.dist-info → hatchet_sdk-1.13.0.dist-info}/RECORD +48 -48
  47. {hatchet_sdk-1.12.3.dist-info → hatchet_sdk-1.13.0.dist-info}/WHEEL +0 -0
  48. {hatchet_sdk-1.12.3.dist-info → hatchet_sdk-1.13.0.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,5 @@
1
+ import asyncio
1
2
  import json
2
- import traceback
3
- from concurrent.futures import Future, ThreadPoolExecutor
4
3
  from datetime import timedelta
5
4
  from typing import TYPE_CHECKING, Any, cast
6
5
  from warnings import warn
@@ -21,6 +20,7 @@ from hatchet_sdk.logger import logger
21
20
  from hatchet_sdk.utils.timedelta_to_expression import Duration, timedelta_to_expr
22
21
  from hatchet_sdk.utils.typing import JSONSerializableMapping
23
22
  from hatchet_sdk.waits import SleepCondition, UserEventCondition
23
+ from hatchet_sdk.worker.runner.utils.capture_logs import AsyncLogSender, LogRecord
24
24
 
25
25
  if TYPE_CHECKING:
26
26
  from hatchet_sdk.runnables.task import Task
@@ -38,6 +38,7 @@ class Context:
38
38
  worker: WorkerContext,
39
39
  runs_client: RunsClient,
40
40
  lifespan_context: Any | None,
41
+ log_sender: AsyncLogSender,
41
42
  ):
42
43
  self.worker = worker
43
44
 
@@ -53,24 +54,41 @@ class Context:
53
54
  self.runs_client = runs_client
54
55
  self.durable_event_listener = durable_event_listener
55
56
 
56
- # FIXME: this limits the number of concurrent log requests to 1, which means we can do about
57
- # 100 log lines per second but this depends on network.
58
- self.logger_thread_pool = ThreadPoolExecutor(max_workers=1)
59
- self.stream_event_thread_pool = ThreadPoolExecutor(max_workers=1)
60
-
61
57
  self.input = self.data.input
62
58
  self.filter_payload = self.data.filter_payload
59
+ self.log_sender = log_sender
63
60
 
64
61
  self._lifespan_context = lifespan_context
65
62
 
63
+ self.stream_index = 0
64
+
65
+ def _increment_stream_index(self) -> int:
66
+ index = self.stream_index
67
+ self.stream_index += 1
68
+
69
+ return index
70
+
66
71
  def was_skipped(self, task: "Task[TWorkflowInput, R]") -> bool:
67
- return self.data.parents.get(task.name, {}).get("skipped", False)
72
+ """
73
+ Check if a given task was skipped. You can read about skipping in [the docs](https://docs.hatchet.run/home/conditional-workflows#skip_if).
74
+
75
+ :param task: The task to check the status of (skipped or not).
76
+ :return: True if the task was skipped, False otherwise.
77
+ """
78
+ return self.data.parents.get(task.name, {}).get("skipped", False) is True
68
79
 
69
80
  @property
70
81
  def trigger_data(self) -> JSONSerializableMapping:
71
82
  return self.data.triggers
72
83
 
73
84
  def task_output(self, task: "Task[TWorkflowInput, R]") -> "R":
85
+ """
86
+ Get the output of a parent task in a DAG.
87
+
88
+ :param task: The task whose output you want to retrieve.
89
+ :return: The output of the parent task, validated against the task's validators.
90
+ :raises ValueError: If the task was skipped or if the step output for the task is not found.
91
+ """
74
92
  from hatchet_sdk.runnables.types import R
75
93
 
76
94
  if self.was_skipped(task):
@@ -78,8 +96,8 @@ class Context:
78
96
 
79
97
  try:
80
98
  parent_step_data = cast(R, self.data.parents[task.name])
81
- except KeyError:
82
- raise ValueError(f"Step output for '{task.name}' not found")
99
+ except KeyError as e:
100
+ raise ValueError(f"Step output for '{task.name}' not found") from e
83
101
 
84
102
  if parent_step_data and (v := task.validators.step_output):
85
103
  return cast(R, v.model_validate(parent_step_data))
@@ -90,6 +108,7 @@ class Context:
90
108
  warn(
91
109
  "`aio_task_output` is deprecated. Use `task_output` instead.",
92
110
  DeprecationWarning,
111
+ stacklevel=2,
93
112
  )
94
113
 
95
114
  if task.is_async_function:
@@ -101,48 +120,82 @@ class Context:
101
120
 
102
121
  @property
103
122
  def was_triggered_by_event(self) -> bool:
123
+ """
124
+ A property that indicates whether the workflow was triggered by an event.
125
+
126
+ :return: True if the workflow was triggered by an event, False otherwise.
127
+ """
104
128
  return self.data.triggered_by == "event"
105
129
 
106
130
  @property
107
131
  def workflow_input(self) -> JSONSerializableMapping:
132
+ """
133
+ The input to the workflow, as a dictionary. It's recommended to use the `input` parameter to the task (the first argument passed into the task at runtime) instead of this property.
134
+
135
+ :return: The input to the workflow.
136
+ """
108
137
  return self.input
109
138
 
110
139
  @property
111
140
  def lifespan(self) -> Any:
141
+ """
142
+ The worker lifespan, if it exists. You can read about lifespans in [the docs](https://docs.hatchet.run/home/lifespans).
143
+
144
+ **Note: You'll need to cast the return type of this property to the type returned by your lifespan generator.**
145
+ """
112
146
  return self._lifespan_context
113
147
 
114
148
  @property
115
149
  def workflow_run_id(self) -> str:
150
+ """
151
+ The id of the current workflow run.
152
+
153
+ :return: The id of the current workflow run.
154
+ """
116
155
  return self.action.workflow_run_id
117
156
 
118
157
  def _set_cancellation_flag(self) -> None:
119
158
  self.exit_flag = True
120
159
 
121
160
  def cancel(self) -> None:
161
+ """
162
+ Cancel the current task run. This will call the Hatchet API to cancel the step run and set the exit flag to True.
163
+
164
+ :return: None
165
+ """
122
166
  logger.debug("cancelling step...")
123
167
  self.runs_client.cancel(self.step_run_id)
124
168
  self._set_cancellation_flag()
125
169
 
126
170
  async def aio_cancel(self) -> None:
171
+ """
172
+ Cancel the current task run. This will call the Hatchet API to cancel the step run and set the exit flag to True.
173
+
174
+ :return: None
175
+ """
127
176
  logger.debug("cancelling step...")
128
177
  await self.runs_client.aio_cancel(self.step_run_id)
129
178
  self._set_cancellation_flag()
130
179
 
131
- # done returns true if the context has been cancelled
132
180
  def done(self) -> bool:
133
- return self.exit_flag
181
+ """
182
+ Check if the current task run has been cancelled.
134
183
 
135
- def _log(self, line: str) -> tuple[bool, Exception | None]:
136
- try:
137
- self.event_client.log(message=line, step_run_id=self.step_run_id)
138
- return True, None
139
- except Exception as e:
140
- # we don't want to raise an exception here, as it will kill the log thread
141
- return False, e
184
+ :return: True if the task run has been cancelled, False otherwise.
185
+ """
186
+ return self.exit_flag
142
187
 
143
188
  def log(
144
189
  self, line: str | JSONSerializableMapping, raise_on_error: bool = False
145
190
  ) -> None:
191
+ """
192
+ Log a line to the Hatchet API. This will send the log line to the Hatchet API and return immediately.
193
+
194
+ :param line: The line to log. Can be a string or a JSON serializable mapping.
195
+ :param raise_on_error: If True, will raise an exception if the log fails. Defaults to False.
196
+ :return: None
197
+ """
198
+
146
199
  if self.step_run_id == "":
147
200
  return
148
201
 
@@ -152,43 +205,51 @@ class Context:
152
205
  except Exception:
153
206
  line = str(line)
154
207
 
155
- future = self.logger_thread_pool.submit(self._log, line)
156
-
157
- def handle_result(future: Future[tuple[bool, Exception | None]]) -> None:
158
- success, exception = future.result()
159
-
160
- if not success and exception:
161
- if raise_on_error:
162
- raise exception
163
- else:
164
- thread_trace = "".join(
165
- traceback.format_exception(
166
- type(exception), exception, exception.__traceback__
167
- )
168
- )
169
- call_site_trace = "".join(traceback.format_stack())
170
- logger.error(
171
- f"Error in log thread: {exception}\n{thread_trace}\nCalled from:\n{call_site_trace}"
172
- )
173
-
174
- future.add_done_callback(handle_result)
208
+ logger.info(line)
209
+ self.log_sender.publish(LogRecord(message=line, step_run_id=self.step_run_id))
175
210
 
176
211
  def release_slot(self) -> None:
212
+ """
213
+ Manually release the slot for the current step run to free up a slot on the worker. Note that this is an advanced feature and should be used with caution.
214
+
215
+ :return: None
216
+ """
177
217
  return self.dispatcher_client.release_slot(self.step_run_id)
178
218
 
179
- def _put_stream(self, data: str | bytes) -> None:
219
+ def put_stream(self, data: str | bytes) -> None:
220
+ """
221
+ Put a stream event to the Hatchet API. This will send the data to the Hatchet API and return immediately. You can then subscribe to the stream from a separate consumer.
222
+
223
+ :param data: The data to send to the Hatchet API. Can be a string or bytes.
224
+ :return: None
225
+ """
180
226
  try:
181
- self.event_client.stream(data=data, step_run_id=self.step_run_id)
227
+ ix = self._increment_stream_index()
228
+
229
+ self.event_client.stream(
230
+ data=data,
231
+ step_run_id=self.step_run_id,
232
+ index=ix,
233
+ )
182
234
  except Exception as e:
183
235
  logger.error(f"Error putting stream event: {e}")
184
236
 
185
- def put_stream(self, data: str | bytes) -> None:
186
- if self.step_run_id == "":
187
- return
237
+ async def aio_put_stream(self, data: str | bytes) -> None:
238
+ """
239
+ Put a stream event to the Hatchet API. This will send the data to the Hatchet API and return immediately. You can then subscribe to the stream from a separate consumer.
188
240
 
189
- self.stream_event_thread_pool.submit(self._put_stream, data)
241
+ :param data: The data to send to the Hatchet API. Can be a string or bytes.
242
+ :return: None
243
+ """
244
+ await asyncio.to_thread(self.put_stream, data)
190
245
 
191
246
  def refresh_timeout(self, increment_by: str | timedelta) -> None:
247
+ """
248
+ Refresh the timeout for the current task run. You can read about refreshing timeouts in [the docs](https://docs.hatchet.run/home/timeouts#refreshing-timeouts).
249
+
250
+ :param increment_by: The amount of time to increment the timeout by. Can be a string (e.g. "5m") or a timedelta object.
251
+ :return: None
252
+ """
192
253
  if isinstance(increment_by, timedelta):
193
254
  increment_by = timedelta_to_expr(increment_by)
194
255
 
@@ -201,10 +262,30 @@ class Context:
201
262
 
202
263
  @property
203
264
  def retry_count(self) -> int:
265
+ """
266
+ The retry count of the current task run, which corresponds to the number of times the task has been retried.
267
+
268
+ :return: The retry count of the current task run.
269
+ """
204
270
  return self.action.retry_count
205
271
 
272
+ @property
273
+ def attempt_number(self) -> int:
274
+ """
275
+ The attempt number of the current task run, which corresponds to the number of times the task has been attempted, including the initial attempt. This is one more than the retry count.
276
+
277
+ :return: The attempt number of the current task run.
278
+ """
279
+
280
+ return self.retry_count + 1
281
+
206
282
  @property
207
283
  def additional_metadata(self) -> JSONSerializableMapping | None:
284
+ """
285
+ The additional metadata sent with the current task run.
286
+
287
+ :return: The additional metadata sent with the current task run, or None if no additional metadata was sent.
288
+ """
208
289
  return self.action.additional_metadata
209
290
 
210
291
  @property
@@ -217,27 +298,54 @@ class Context:
217
298
 
218
299
  @property
219
300
  def parent_workflow_run_id(self) -> str | None:
301
+ """
302
+ The parent workflow run id of the current task run, if it exists. This is useful for knowing which workflow run spawned this run as a child.
303
+
304
+ :return: The parent workflow run id of the current task run, or None if it does not exist.
305
+ """
220
306
  return self.action.parent_workflow_run_id
221
307
 
222
308
  @property
223
309
  def priority(self) -> int | None:
310
+ """
311
+ The priority that the current task was run with.
312
+
313
+ :return: The priority of the current task run, or None if no priority was set.
314
+ """
224
315
  return self.action.priority
225
316
 
226
317
  @property
227
318
  def workflow_id(self) -> str | None:
319
+ """
320
+ The id of the workflow that this task belongs to.
321
+
322
+ :return: The id of the workflow that this task belongs to.
323
+ """
324
+
228
325
  return self.action.workflow_id
229
326
 
230
327
  @property
231
328
  def workflow_version_id(self) -> str | None:
329
+ """
330
+ The id of the workflow version that this task belongs to.
331
+
332
+ :return: The id of the workflow version that this task belongs to.
333
+ """
334
+
232
335
  return self.action.workflow_version_id
233
336
 
234
337
  @property
235
338
  def task_run_errors(self) -> dict[str, str]:
339
+ """
340
+ A helper intended to be used in an on-failure step to retrieve the errors that occurred in upstream task runs.
341
+
342
+ :return: A dictionary mapping task names to their error messages.
343
+ """
236
344
  errors = self.data.step_run_errors
237
345
 
238
346
  if not errors:
239
347
  logger.error(
240
- "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"
348
+ "No step run errors found. `context.task_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"
241
349
  )
242
350
 
243
351
  return errors
@@ -246,6 +354,12 @@ class Context:
246
354
  self,
247
355
  task: "Task[TWorkflowInput, R]",
248
356
  ) -> str | None:
357
+ """
358
+ A helper intended to be used in an on-failure step to retrieve the error that occurred in a specific upstream task run.
359
+
360
+ :param task: The task whose error you want to retrieve.
361
+ :return: The error message of the task run, or None if no error occurred.
362
+ """
249
363
  errors = self.data.step_run_errors
250
364
 
251
365
  return errors.get(task.name)
@@ -255,6 +369,15 @@ class DurableContext(Context):
255
369
  async def aio_wait_for(
256
370
  self, signal_key: str, *conditions: SleepCondition | UserEventCondition
257
371
  ) -> dict[str, Any]:
372
+ """
373
+ Durably wait for either a sleep or an event.
374
+
375
+ :param signal_key: The key to use for the durable event. This is used to identify the event in the Hatchet API.
376
+ :param *conditions: The conditions to wait for. Can be a SleepCondition or UserEventCondition.
377
+
378
+ :return: A dictionary containing the results of the wait.
379
+ :raises ValueError: If the durable event listener is not available.
380
+ """
258
381
  if self.durable_event_listener is None:
259
382
  raise ValueError("Durable event listener is not available")
260
383
 
@@ -264,6 +387,7 @@ class DurableContext(Context):
264
387
  task_id=task_id,
265
388
  signal_key=signal_key,
266
389
  conditions=list(conditions),
390
+ config=self.runs_client.client_config,
267
391
  )
268
392
 
269
393
  self.durable_event_listener.register_durable_event(request)
@@ -2,11 +2,11 @@ from hatchet_sdk.clients.dispatcher.dispatcher import DispatcherClient
2
2
 
3
3
 
4
4
  class WorkerContext:
5
- _worker_id: str | None = None
6
- _registered_workflow_names: list[str] = []
7
- _labels: dict[str, str | int] = {}
8
-
9
5
  def __init__(self, labels: dict[str, str | int], client: DispatcherClient):
6
+ self._worker_id: str | None = None
7
+ self._registered_workflow_names: list[str] = []
8
+ self._labels: dict[str, str | int] = {}
9
+
10
10
  self._labels = labels
11
11
  self.client = client
12
12
 
@@ -23,6 +23,3 @@ class WorkerContext:
23
23
 
24
24
  def id(self) -> str | None:
25
25
  return self._worker_id
26
-
27
- # def has_workflow(self, workflow_name: str):
28
- # return workflow_name in self._registered_workflow_names
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
15
15
  from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
16
16
 
17
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\"\xf6\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\x12\x10\n\x08priority\x18\x12 \x01(\x05\x12\x17\n\nworkflowId\x18\x13 \x01(\tH\x04\x88\x01\x01\x12\x1e\n\x11workflowVersionId\x18\x14 \x01(\tH\x05\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\r\n\x0b_workflowIdB\x14\n\x12_workflowVersionId\"\'\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\"\xc4\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\x12\x1b\n\x0eshouldNotRetry\x18\x0b \x01(\x08H\x01\x88\x01\x01\x42\r\n\x0b_retryCountB\x11\n\x0f_shouldNotRetry\"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')
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\"\xf6\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\x12\x10\n\x08priority\x18\x12 \x01(\x05\x12\x17\n\nworkflowId\x18\x13 \x01(\tH\x04\x88\x01\x01\x12\x1e\n\x11workflowVersionId\x18\x14 \x01(\tH\x05\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\r\n\x0b_workflowIdB\x14\n\x12_workflowVersionId\"\'\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\"\xc4\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\x12\x1b\n\x0eshouldNotRetry\x18\x0b \x01(\x08H\x01\x88\x01\x01\x42\r\n\x0b_retryCountB\x11\n\x0f_shouldNotRetry\"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\"\xda\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\x12\x17\n\neventIndex\x18\n \x01(\x03H\x02\x88\x01\x01\x42\x0e\n\x0c_stepRetriesB\r\n\x0b_retryCountB\r\n\x0b_eventIndex\"\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
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -27,20 +27,20 @@ if not _descriptor._USE_C_DESCRIPTORS:
27
27
  _globals['_WORKERREGISTERREQUEST_LABELSENTRY']._serialized_options = b'8\001'
28
28
  _globals['_UPSERTWORKERLABELSREQUEST_LABELSENTRY']._loaded_options = None
29
29
  _globals['_UPSERTWORKERLABELSREQUEST_LABELSENTRY']._serialized_options = b'8\001'
30
- _globals['_SDKS']._serialized_start=3684
31
- _globals['_SDKS']._serialized_end=3739
32
- _globals['_ACTIONTYPE']._serialized_start=3741
33
- _globals['_ACTIONTYPE']._serialized_end=3819
34
- _globals['_GROUPKEYACTIONEVENTTYPE']._serialized_start=3822
35
- _globals['_GROUPKEYACTIONEVENTTYPE']._serialized_end=3984
36
- _globals['_STEPACTIONEVENTTYPE']._serialized_start=3987
37
- _globals['_STEPACTIONEVENTTYPE']._serialized_end=4159
38
- _globals['_RESOURCETYPE']._serialized_start=4161
39
- _globals['_RESOURCETYPE']._serialized_end=4262
40
- _globals['_RESOURCEEVENTTYPE']._serialized_start=4265
41
- _globals['_RESOURCEEVENTTYPE']._serialized_end=4519
42
- _globals['_WORKFLOWRUNEVENTTYPE']._serialized_start=4521
43
- _globals['_WORKFLOWRUNEVENTTYPE']._serialized_end=4581
30
+ _globals['_SDKS']._serialized_start=3724
31
+ _globals['_SDKS']._serialized_end=3779
32
+ _globals['_ACTIONTYPE']._serialized_start=3781
33
+ _globals['_ACTIONTYPE']._serialized_end=3859
34
+ _globals['_GROUPKEYACTIONEVENTTYPE']._serialized_start=3862
35
+ _globals['_GROUPKEYACTIONEVENTTYPE']._serialized_end=4024
36
+ _globals['_STEPACTIONEVENTTYPE']._serialized_start=4027
37
+ _globals['_STEPACTIONEVENTTYPE']._serialized_end=4199
38
+ _globals['_RESOURCETYPE']._serialized_start=4201
39
+ _globals['_RESOURCETYPE']._serialized_end=4302
40
+ _globals['_RESOURCEEVENTTYPE']._serialized_start=4305
41
+ _globals['_RESOURCEEVENTTYPE']._serialized_end=4559
42
+ _globals['_WORKFLOWRUNEVENTTYPE']._serialized_start=4561
43
+ _globals['_WORKFLOWRUNEVENTTYPE']._serialized_end=4621
44
44
  _globals['_WORKERLABELS']._serialized_start=53
45
45
  _globals['_WORKERLABELS']._serialized_end=139
46
46
  _globals['_RUNTIMEINFO']._serialized_start=142
@@ -76,27 +76,27 @@ if not _descriptor._USE_C_DESCRIPTORS:
76
76
  _globals['_SUBSCRIBETOWORKFLOWRUNSREQUEST']._serialized_start=2575
77
77
  _globals['_SUBSCRIBETOWORKFLOWRUNSREQUEST']._serialized_end=2630
78
78
  _globals['_WORKFLOWEVENT']._serialized_start=2633
79
- _globals['_WORKFLOWEVENT']._serialized_end=2939
80
- _globals['_WORKFLOWRUNEVENT']._serialized_start=2942
81
- _globals['_WORKFLOWRUNEVENT']._serialized_end=3110
82
- _globals['_STEPRUNRESULT']._serialized_start=3113
83
- _globals['_STEPRUNRESULT']._serialized_end=3251
84
- _globals['_OVERRIDESDATA']._serialized_start=3253
85
- _globals['_OVERRIDESDATA']._serialized_end=3340
86
- _globals['_OVERRIDESDATARESPONSE']._serialized_start=3342
87
- _globals['_OVERRIDESDATARESPONSE']._serialized_end=3365
88
- _globals['_HEARTBEATREQUEST']._serialized_start=3367
89
- _globals['_HEARTBEATREQUEST']._serialized_end=3452
90
- _globals['_HEARTBEATRESPONSE']._serialized_start=3454
91
- _globals['_HEARTBEATRESPONSE']._serialized_end=3473
92
- _globals['_REFRESHTIMEOUTREQUEST']._serialized_start=3475
93
- _globals['_REFRESHTIMEOUTREQUEST']._serialized_end=3545
94
- _globals['_REFRESHTIMEOUTRESPONSE']._serialized_start=3547
95
- _globals['_REFRESHTIMEOUTRESPONSE']._serialized_end=3618
96
- _globals['_RELEASESLOTREQUEST']._serialized_start=3620
97
- _globals['_RELEASESLOTREQUEST']._serialized_end=3659
98
- _globals['_RELEASESLOTRESPONSE']._serialized_start=3661
99
- _globals['_RELEASESLOTRESPONSE']._serialized_end=3682
100
- _globals['_DISPATCHER']._serialized_start=4584
101
- _globals['_DISPATCHER']._serialized_end=5472
79
+ _globals['_WORKFLOWEVENT']._serialized_end=2979
80
+ _globals['_WORKFLOWRUNEVENT']._serialized_start=2982
81
+ _globals['_WORKFLOWRUNEVENT']._serialized_end=3150
82
+ _globals['_STEPRUNRESULT']._serialized_start=3153
83
+ _globals['_STEPRUNRESULT']._serialized_end=3291
84
+ _globals['_OVERRIDESDATA']._serialized_start=3293
85
+ _globals['_OVERRIDESDATA']._serialized_end=3380
86
+ _globals['_OVERRIDESDATARESPONSE']._serialized_start=3382
87
+ _globals['_OVERRIDESDATARESPONSE']._serialized_end=3405
88
+ _globals['_HEARTBEATREQUEST']._serialized_start=3407
89
+ _globals['_HEARTBEATREQUEST']._serialized_end=3492
90
+ _globals['_HEARTBEATRESPONSE']._serialized_start=3494
91
+ _globals['_HEARTBEATRESPONSE']._serialized_end=3513
92
+ _globals['_REFRESHTIMEOUTREQUEST']._serialized_start=3515
93
+ _globals['_REFRESHTIMEOUTREQUEST']._serialized_end=3585
94
+ _globals['_REFRESHTIMEOUTRESPONSE']._serialized_start=3587
95
+ _globals['_REFRESHTIMEOUTRESPONSE']._serialized_end=3658
96
+ _globals['_RELEASESLOTREQUEST']._serialized_start=3660
97
+ _globals['_RELEASESLOTREQUEST']._serialized_end=3699
98
+ _globals['_RELEASESLOTRESPONSE']._serialized_start=3701
99
+ _globals['_RELEASESLOTRESPONSE']._serialized_end=3722
100
+ _globals['_DISPATCHER']._serialized_start=4624
101
+ _globals['_DISPATCHER']._serialized_end=5512
102
102
  # @@protoc_insertion_point(module_scope)
@@ -295,7 +295,7 @@ class SubscribeToWorkflowRunsRequest(_message.Message):
295
295
  def __init__(self, workflowRunId: _Optional[str] = ...) -> None: ...
296
296
 
297
297
  class WorkflowEvent(_message.Message):
298
- __slots__ = ("workflowRunId", "resourceType", "eventType", "resourceId", "eventTimestamp", "eventPayload", "hangup", "stepRetries", "retryCount")
298
+ __slots__ = ("workflowRunId", "resourceType", "eventType", "resourceId", "eventTimestamp", "eventPayload", "hangup", "stepRetries", "retryCount", "eventIndex")
299
299
  WORKFLOWRUNID_FIELD_NUMBER: _ClassVar[int]
300
300
  RESOURCETYPE_FIELD_NUMBER: _ClassVar[int]
301
301
  EVENTTYPE_FIELD_NUMBER: _ClassVar[int]
@@ -305,6 +305,7 @@ class WorkflowEvent(_message.Message):
305
305
  HANGUP_FIELD_NUMBER: _ClassVar[int]
306
306
  STEPRETRIES_FIELD_NUMBER: _ClassVar[int]
307
307
  RETRYCOUNT_FIELD_NUMBER: _ClassVar[int]
308
+ EVENTINDEX_FIELD_NUMBER: _ClassVar[int]
308
309
  workflowRunId: str
309
310
  resourceType: ResourceType
310
311
  eventType: ResourceEventType
@@ -314,7 +315,8 @@ class WorkflowEvent(_message.Message):
314
315
  hangup: bool
315
316
  stepRetries: int
316
317
  retryCount: int
317
- def __init__(self, workflowRunId: _Optional[str] = ..., resourceType: _Optional[_Union[ResourceType, str]] = ..., eventType: _Optional[_Union[ResourceEventType, str]] = ..., resourceId: _Optional[str] = ..., eventTimestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., eventPayload: _Optional[str] = ..., hangup: bool = ..., stepRetries: _Optional[int] = ..., retryCount: _Optional[int] = ...) -> None: ...
318
+ eventIndex: int
319
+ def __init__(self, workflowRunId: _Optional[str] = ..., resourceType: _Optional[_Union[ResourceType, str]] = ..., eventType: _Optional[_Union[ResourceEventType, str]] = ..., resourceId: _Optional[str] = ..., eventTimestamp: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., eventPayload: _Optional[str] = ..., hangup: bool = ..., stepRetries: _Optional[int] = ..., retryCount: _Optional[int] = ..., eventIndex: _Optional[int] = ...) -> None: ...
318
320
 
319
321
  class WorkflowRunEvent(_message.Message):
320
322
  __slots__ = ("workflowRunId", "eventType", "eventTimestamp", "results")
@@ -15,7 +15,7 @@ _sym_db = _symbol_database.Default()
15
15
  from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2
16
16
 
17
17
 
18
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x65vents.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd2\x01\n\x05\x45vent\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x0f\n\x07\x65ventId\x18\x02 \x01(\t\x12\x0b\n\x03key\x18\x03 \x01(\t\x12\x0f\n\x07payload\x18\x04 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x12\x61\x64\x64itionalMetadata\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05scope\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x15\n\x13_additionalMetadataB\x08\n\x06_scope\" \n\x06\x45vents\x12\x16\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x06.Event\"\xc2\x01\n\rPutLogRequest\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12-\n\tcreatedAt\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x12\n\x05level\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12\x1b\n\x0etaskRetryCount\x18\x06 \x01(\x05H\x01\x88\x01\x01\x42\x08\n\x06_levelB\x11\n\x0f_taskRetryCount\"\x10\n\x0ePutLogResponse\"|\n\x15PutStreamEventRequest\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12-\n\tcreatedAt\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07message\x18\x03 \x01(\x0c\x12\x10\n\x08metadata\x18\x05 \x01(\t\"\x18\n\x16PutStreamEventResponse\"9\n\x14\x42ulkPushEventRequest\x12!\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x11.PushEventRequest\"\xde\x01\n\x10PushEventRequest\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0f\n\x07payload\x18\x02 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x12\x61\x64\x64itionalMetadata\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08priority\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x12\n\x05scope\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x15\n\x13_additionalMetadataB\x0b\n\t_priorityB\x08\n\x06_scope\"%\n\x12ReplayEventRequest\x12\x0f\n\x07\x65ventId\x18\x01 \x01(\t2\x88\x02\n\rEventsService\x12#\n\x04Push\x12\x11.PushEventRequest\x1a\x06.Event\"\x00\x12,\n\x08\x42ulkPush\x12\x15.BulkPushEventRequest\x1a\x07.Events\"\x00\x12\x32\n\x11ReplaySingleEvent\x12\x13.ReplayEventRequest\x1a\x06.Event\"\x00\x12+\n\x06PutLog\x12\x0e.PutLogRequest\x1a\x0f.PutLogResponse\"\x00\x12\x43\n\x0ePutStreamEvent\x12\x16.PutStreamEventRequest\x1a\x17.PutStreamEventResponse\"\x00\x42\x45ZCgithub.com/hatchet-dev/hatchet/internal/services/ingestor/contractsb\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0c\x65vents.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd2\x01\n\x05\x45vent\x12\x10\n\x08tenantId\x18\x01 \x01(\t\x12\x0f\n\x07\x65ventId\x18\x02 \x01(\t\x12\x0b\n\x03key\x18\x03 \x01(\t\x12\x0f\n\x07payload\x18\x04 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x12\x61\x64\x64itionalMetadata\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x12\n\x05scope\x18\x07 \x01(\tH\x01\x88\x01\x01\x42\x15\n\x13_additionalMetadataB\x08\n\x06_scope\" \n\x06\x45vents\x12\x16\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x06.Event\"\xc2\x01\n\rPutLogRequest\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12-\n\tcreatedAt\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\x12\n\x05level\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12\x1b\n\x0etaskRetryCount\x18\x06 \x01(\x05H\x01\x88\x01\x01\x42\x08\n\x06_levelB\x11\n\x0f_taskRetryCount\"\x10\n\x0ePutLogResponse\"\xa4\x01\n\x15PutStreamEventRequest\x12\x11\n\tstepRunId\x18\x01 \x01(\t\x12-\n\tcreatedAt\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x0f\n\x07message\x18\x03 \x01(\x0c\x12\x10\n\x08metadata\x18\x05 \x01(\t\x12\x17\n\neventIndex\x18\x06 \x01(\x03H\x00\x88\x01\x01\x42\r\n\x0b_eventIndex\"\x18\n\x16PutStreamEventResponse\"9\n\x14\x42ulkPushEventRequest\x12!\n\x06\x65vents\x18\x01 \x03(\x0b\x32\x11.PushEventRequest\"\xde\x01\n\x10PushEventRequest\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0f\n\x07payload\x18\x02 \x01(\t\x12\x32\n\x0e\x65ventTimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x12\x61\x64\x64itionalMetadata\x18\x04 \x01(\tH\x00\x88\x01\x01\x12\x15\n\x08priority\x18\x05 \x01(\x05H\x01\x88\x01\x01\x12\x12\n\x05scope\x18\x06 \x01(\tH\x02\x88\x01\x01\x42\x15\n\x13_additionalMetadataB\x0b\n\t_priorityB\x08\n\x06_scope\"%\n\x12ReplayEventRequest\x12\x0f\n\x07\x65ventId\x18\x01 \x01(\t2\x88\x02\n\rEventsService\x12#\n\x04Push\x12\x11.PushEventRequest\x1a\x06.Event\"\x00\x12,\n\x08\x42ulkPush\x12\x15.BulkPushEventRequest\x1a\x07.Events\"\x00\x12\x32\n\x11ReplaySingleEvent\x12\x13.ReplayEventRequest\x1a\x06.Event\"\x00\x12+\n\x06PutLog\x12\x0e.PutLogRequest\x1a\x0f.PutLogResponse\"\x00\x12\x43\n\x0ePutStreamEvent\x12\x16.PutStreamEventRequest\x1a\x17.PutStreamEventResponse\"\x00\x42\x45ZCgithub.com/hatchet-dev/hatchet/internal/services/ingestor/contractsb\x06proto3')
19
19
 
20
20
  _globals = globals()
21
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -31,16 +31,16 @@ if not _descriptor._USE_C_DESCRIPTORS:
31
31
  _globals['_PUTLOGREQUEST']._serialized_end=491
32
32
  _globals['_PUTLOGRESPONSE']._serialized_start=493
33
33
  _globals['_PUTLOGRESPONSE']._serialized_end=509
34
- _globals['_PUTSTREAMEVENTREQUEST']._serialized_start=511
35
- _globals['_PUTSTREAMEVENTREQUEST']._serialized_end=635
36
- _globals['_PUTSTREAMEVENTRESPONSE']._serialized_start=637
37
- _globals['_PUTSTREAMEVENTRESPONSE']._serialized_end=661
38
- _globals['_BULKPUSHEVENTREQUEST']._serialized_start=663
39
- _globals['_BULKPUSHEVENTREQUEST']._serialized_end=720
40
- _globals['_PUSHEVENTREQUEST']._serialized_start=723
41
- _globals['_PUSHEVENTREQUEST']._serialized_end=945
42
- _globals['_REPLAYEVENTREQUEST']._serialized_start=947
43
- _globals['_REPLAYEVENTREQUEST']._serialized_end=984
44
- _globals['_EVENTSSERVICE']._serialized_start=987
45
- _globals['_EVENTSSERVICE']._serialized_end=1251
34
+ _globals['_PUTSTREAMEVENTREQUEST']._serialized_start=512
35
+ _globals['_PUTSTREAMEVENTREQUEST']._serialized_end=676
36
+ _globals['_PUTSTREAMEVENTRESPONSE']._serialized_start=678
37
+ _globals['_PUTSTREAMEVENTRESPONSE']._serialized_end=702
38
+ _globals['_BULKPUSHEVENTREQUEST']._serialized_start=704
39
+ _globals['_BULKPUSHEVENTREQUEST']._serialized_end=761
40
+ _globals['_PUSHEVENTREQUEST']._serialized_start=764
41
+ _globals['_PUSHEVENTREQUEST']._serialized_end=986
42
+ _globals['_REPLAYEVENTREQUEST']._serialized_start=988
43
+ _globals['_REPLAYEVENTREQUEST']._serialized_end=1025
44
+ _globals['_EVENTSSERVICE']._serialized_start=1028
45
+ _globals['_EVENTSSERVICE']._serialized_end=1292
46
46
  # @@protoc_insertion_point(module_scope)
@@ -51,16 +51,18 @@ class PutLogResponse(_message.Message):
51
51
  def __init__(self) -> None: ...
52
52
 
53
53
  class PutStreamEventRequest(_message.Message):
54
- __slots__ = ("stepRunId", "createdAt", "message", "metadata")
54
+ __slots__ = ("stepRunId", "createdAt", "message", "metadata", "eventIndex")
55
55
  STEPRUNID_FIELD_NUMBER: _ClassVar[int]
56
56
  CREATEDAT_FIELD_NUMBER: _ClassVar[int]
57
57
  MESSAGE_FIELD_NUMBER: _ClassVar[int]
58
58
  METADATA_FIELD_NUMBER: _ClassVar[int]
59
+ EVENTINDEX_FIELD_NUMBER: _ClassVar[int]
59
60
  stepRunId: str
60
61
  createdAt: _timestamp_pb2.Timestamp
61
62
  message: bytes
62
63
  metadata: str
63
- def __init__(self, stepRunId: _Optional[str] = ..., createdAt: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., message: _Optional[bytes] = ..., metadata: _Optional[str] = ...) -> None: ...
64
+ eventIndex: int
65
+ def __init__(self, stepRunId: _Optional[str] = ..., createdAt: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., message: _Optional[bytes] = ..., metadata: _Optional[str] = ..., eventIndex: _Optional[int] = ...) -> None: ...
64
66
 
65
67
  class PutStreamEventResponse(_message.Message):
66
68
  __slots__ = ()