@temporalio/core-bridge 0.16.4 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. package/Cargo.lock +339 -226
  2. package/Cargo.toml +7 -3
  3. package/common.js +50 -0
  4. package/index.d.ts +7 -0
  5. package/index.js +12 -0
  6. package/package.json +7 -4
  7. package/releases/aarch64-apple-darwin/index.node +0 -0
  8. package/releases/aarch64-unknown-linux-gnu/index.node +0 -0
  9. package/{index.node → releases/index.node} +0 -0
  10. package/releases/x86_64-apple-darwin/index.node +0 -0
  11. package/releases/x86_64-pc-windows-msvc/index.node +0 -0
  12. package/releases/x86_64-unknown-linux-gnu/index.node +0 -0
  13. package/scripts/build.js +10 -50
  14. package/sdk-core/.buildkite/docker/Dockerfile +1 -1
  15. package/sdk-core/.buildkite/docker/docker-compose.yaml +2 -2
  16. package/sdk-core/.buildkite/pipeline.yml +2 -0
  17. package/sdk-core/Cargo.toml +1 -88
  18. package/sdk-core/README.md +30 -6
  19. package/sdk-core/bridge-ffi/Cargo.toml +24 -0
  20. package/sdk-core/bridge-ffi/LICENSE.txt +23 -0
  21. package/sdk-core/bridge-ffi/build.rs +25 -0
  22. package/sdk-core/bridge-ffi/include/sdk-core-bridge.h +216 -0
  23. package/sdk-core/bridge-ffi/src/lib.rs +829 -0
  24. package/sdk-core/bridge-ffi/src/wrappers.rs +193 -0
  25. package/sdk-core/client/Cargo.toml +32 -0
  26. package/sdk-core/{src/pollers/gateway.rs → client/src/lib.rs} +101 -195
  27. package/sdk-core/client/src/metrics.rs +89 -0
  28. package/sdk-core/client/src/mocks.rs +167 -0
  29. package/sdk-core/{src/pollers → client/src}/retry.rs +172 -14
  30. package/sdk-core/core/Cargo.toml +96 -0
  31. package/sdk-core/{src → core/src}/core_tests/activity_tasks.rs +193 -37
  32. package/sdk-core/{src → core/src}/core_tests/child_workflows.rs +14 -14
  33. package/sdk-core/{src → core/src}/core_tests/determinism.rs +8 -8
  34. package/sdk-core/core/src/core_tests/local_activities.rs +328 -0
  35. package/sdk-core/{src → core/src}/core_tests/mod.rs +6 -9
  36. package/sdk-core/{src → core/src}/core_tests/queries.rs +54 -54
  37. package/sdk-core/{src → core/src}/core_tests/replay_flag.rs +8 -12
  38. package/sdk-core/{src → core/src}/core_tests/workers.rs +120 -33
  39. package/sdk-core/{src → core/src}/core_tests/workflow_cancels.rs +16 -26
  40. package/sdk-core/{src → core/src}/core_tests/workflow_tasks.rs +280 -292
  41. package/sdk-core/core/src/lib.rs +374 -0
  42. package/sdk-core/{src → core/src}/log_export.rs +3 -27
  43. package/sdk-core/core/src/pending_activations.rs +162 -0
  44. package/sdk-core/{src → core/src}/pollers/mod.rs +4 -22
  45. package/sdk-core/{src → core/src}/pollers/poll_buffer.rs +1 -1
  46. package/sdk-core/core/src/protosext/mod.rs +396 -0
  47. package/sdk-core/core/src/replay/mod.rs +210 -0
  48. package/sdk-core/core/src/retry_logic.rs +144 -0
  49. package/sdk-core/{src → core/src}/telemetry/metrics.rs +3 -58
  50. package/sdk-core/{src → core/src}/telemetry/mod.rs +8 -8
  51. package/sdk-core/{src → core/src}/telemetry/prometheus_server.rs +0 -0
  52. package/sdk-core/{src → core/src}/test_help/mod.rs +35 -83
  53. package/sdk-core/{src → core/src}/worker/activities/activity_heartbeat_manager.rs +95 -42
  54. package/sdk-core/core/src/worker/activities/local_activities.rs +973 -0
  55. package/sdk-core/{src → core/src}/worker/activities.rs +52 -33
  56. package/sdk-core/{src → core/src}/worker/dispatcher.rs +8 -6
  57. package/sdk-core/{src → core/src}/worker/mod.rs +347 -221
  58. package/sdk-core/core/src/worker/wft_delivery.rs +81 -0
  59. package/sdk-core/{src → core/src}/workflow/bridge.rs +5 -2
  60. package/sdk-core/{src → core/src}/workflow/driven_workflow.rs +17 -7
  61. package/sdk-core/{src → core/src}/workflow/history_update.rs +33 -7
  62. package/sdk-core/{src → core/src/workflow}/machines/activity_state_machine.rs +26 -26
  63. package/sdk-core/{src → core/src/workflow}/machines/cancel_external_state_machine.rs +8 -11
  64. package/sdk-core/{src → core/src/workflow}/machines/cancel_workflow_state_machine.rs +19 -21
  65. package/sdk-core/{src → core/src/workflow}/machines/child_workflow_state_machine.rs +20 -31
  66. package/sdk-core/{src → core/src/workflow}/machines/complete_workflow_state_machine.rs +3 -5
  67. package/sdk-core/{src → core/src/workflow}/machines/continue_as_new_workflow_state_machine.rs +18 -18
  68. package/sdk-core/{src → core/src/workflow}/machines/fail_workflow_state_machine.rs +5 -6
  69. package/sdk-core/core/src/workflow/machines/local_activity_state_machine.rs +1451 -0
  70. package/sdk-core/{src → core/src/workflow}/machines/mod.rs +54 -107
  71. package/sdk-core/{src → core/src/workflow}/machines/mutable_side_effect_state_machine.rs +0 -0
  72. package/sdk-core/{src → core/src/workflow}/machines/patch_state_machine.rs +29 -30
  73. package/sdk-core/{src → core/src/workflow}/machines/side_effect_state_machine.rs +0 -0
  74. package/sdk-core/{src → core/src/workflow}/machines/signal_external_state_machine.rs +17 -19
  75. package/sdk-core/{src → core/src/workflow}/machines/timer_state_machine.rs +20 -21
  76. package/sdk-core/{src → core/src/workflow}/machines/transition_coverage.rs +5 -2
  77. package/sdk-core/{src → core/src/workflow}/machines/upsert_search_attributes_state_machine.rs +0 -0
  78. package/sdk-core/core/src/workflow/machines/workflow_machines/local_acts.rs +96 -0
  79. package/sdk-core/{src → core/src/workflow}/machines/workflow_machines.rs +357 -171
  80. package/sdk-core/{src → core/src/workflow}/machines/workflow_task_state_machine.rs +1 -1
  81. package/sdk-core/{src → core/src}/workflow/mod.rs +200 -39
  82. package/sdk-core/{src → core/src}/workflow/workflow_tasks/cache_manager.rs +0 -0
  83. package/sdk-core/{src → core/src}/workflow/workflow_tasks/concurrency_manager.rs +38 -5
  84. package/sdk-core/{src → core/src}/workflow/workflow_tasks/mod.rs +317 -103
  85. package/sdk-core/{test_utils → core-api}/Cargo.toml +10 -7
  86. package/sdk-core/{src → core-api/src}/errors.rs +42 -92
  87. package/sdk-core/core-api/src/lib.rs +158 -0
  88. package/sdk-core/{src/worker/config.rs → core-api/src/worker.rs} +18 -23
  89. package/sdk-core/etc/deps.svg +156 -0
  90. package/sdk-core/fsm/rustfsm_procmacro/src/lib.rs +5 -5
  91. package/sdk-core/fsm/rustfsm_procmacro/tests/trybuild/no_handle_conversions_require_into_fail.stderr +3 -5
  92. package/sdk-core/fsm/rustfsm_trait/src/lib.rs +7 -1
  93. package/sdk-core/histories/fail_wf_task.bin +0 -0
  94. package/sdk-core/histories/timer_workflow_history.bin +0 -0
  95. package/sdk-core/protos/api_upstream/temporal/api/command/v1/message.proto +44 -13
  96. package/sdk-core/protos/api_upstream/temporal/api/common/v1/message.proto +19 -1
  97. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/common.proto +1 -1
  98. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/failed_cause.proto +9 -0
  99. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/namespace.proto +1 -0
  100. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/reset.proto +1 -0
  101. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/task_queue.proto +13 -0
  102. package/sdk-core/protos/api_upstream/temporal/api/enums/v1/workflow.proto +14 -7
  103. package/sdk-core/protos/api_upstream/temporal/api/history/v1/message.proto +176 -18
  104. package/sdk-core/protos/api_upstream/temporal/api/namespace/v1/message.proto +6 -0
  105. package/sdk-core/protos/api_upstream/temporal/api/query/v1/message.proto +11 -0
  106. package/sdk-core/protos/api_upstream/temporal/api/taskqueue/v1/message.proto +3 -0
  107. package/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/request_response.proto +156 -7
  108. package/sdk-core/protos/api_upstream/temporal/api/workflowservice/v1/service.proto +135 -104
  109. package/sdk-core/protos/local/temporal/sdk/core/activity_result/activity_result.proto +78 -0
  110. package/sdk-core/protos/local/temporal/sdk/core/activity_task/activity_task.proto +78 -0
  111. package/sdk-core/protos/local/temporal/sdk/core/bridge/bridge.proto +205 -0
  112. package/sdk-core/protos/local/temporal/sdk/core/bridge/service.proto +61 -0
  113. package/sdk-core/protos/local/{child_workflow.proto → temporal/sdk/core/child_workflow/child_workflow.proto} +1 -1
  114. package/sdk-core/protos/local/{common.proto → temporal/sdk/core/common/common.proto} +5 -3
  115. package/sdk-core/protos/local/{core_interface.proto → temporal/sdk/core/core_interface.proto} +10 -10
  116. package/sdk-core/protos/local/temporal/sdk/core/external_data/external_data.proto +30 -0
  117. package/sdk-core/protos/local/{workflow_activation.proto → temporal/sdk/core/workflow_activation/workflow_activation.proto} +35 -11
  118. package/sdk-core/protos/local/{workflow_commands.proto → temporal/sdk/core/workflow_commands/workflow_commands.proto} +55 -4
  119. package/sdk-core/protos/local/{workflow_completion.proto → temporal/sdk/core/workflow_completion/workflow_completion.proto} +3 -3
  120. package/sdk-core/sdk/Cargo.toml +32 -0
  121. package/sdk-core/{src/prototype_rust_sdk → sdk/src}/conversions.rs +0 -0
  122. package/sdk-core/sdk/src/lib.rs +699 -0
  123. package/sdk-core/sdk/src/payload_converter.rs +11 -0
  124. package/sdk-core/sdk/src/workflow_context/options.rs +180 -0
  125. package/sdk-core/{src/prototype_rust_sdk → sdk/src}/workflow_context.rs +201 -124
  126. package/sdk-core/{src/prototype_rust_sdk → sdk/src}/workflow_future.rs +63 -30
  127. package/sdk-core/sdk-core-protos/Cargo.toml +10 -0
  128. package/sdk-core/sdk-core-protos/build.rs +28 -6
  129. package/sdk-core/sdk-core-protos/src/constants.rs +7 -0
  130. package/sdk-core/{src/test_help → sdk-core-protos/src}/history_builder.rs +134 -49
  131. package/sdk-core/sdk-core-protos/src/history_info.rs +216 -0
  132. package/sdk-core/sdk-core-protos/src/lib.rs +601 -168
  133. package/sdk-core/sdk-core-protos/src/task_token.rs +38 -0
  134. package/sdk-core/sdk-core-protos/src/utilities.rs +14 -0
  135. package/sdk-core/test-utils/Cargo.toml +32 -0
  136. package/sdk-core/{src/test_help → test-utils/src}/canned_histories.rs +59 -78
  137. package/sdk-core/test-utils/src/histfetch.rs +28 -0
  138. package/sdk-core/{test_utils → test-utils}/src/lib.rs +131 -68
  139. package/sdk-core/tests/integ_tests/client_tests.rs +1 -1
  140. package/sdk-core/tests/integ_tests/heartbeat_tests.rs +11 -7
  141. package/sdk-core/tests/integ_tests/polling_tests.rs +12 -11
  142. package/sdk-core/tests/integ_tests/queries_tests.rs +82 -78
  143. package/sdk-core/tests/integ_tests/workflow_tests/activities.rs +91 -71
  144. package/sdk-core/tests/integ_tests/workflow_tests/cancel_external.rs +3 -4
  145. package/sdk-core/tests/integ_tests/workflow_tests/cancel_wf.rs +2 -4
  146. package/sdk-core/tests/integ_tests/workflow_tests/child_workflows.rs +4 -6
  147. package/sdk-core/tests/integ_tests/workflow_tests/continue_as_new.rs +4 -6
  148. package/sdk-core/tests/integ_tests/workflow_tests/determinism.rs +3 -4
  149. package/sdk-core/tests/integ_tests/workflow_tests/local_activities.rs +496 -0
  150. package/sdk-core/tests/integ_tests/workflow_tests/patches.rs +5 -8
  151. package/sdk-core/tests/integ_tests/workflow_tests/replay.rs +125 -0
  152. package/sdk-core/tests/integ_tests/workflow_tests/signals.rs +7 -13
  153. package/sdk-core/tests/integ_tests/workflow_tests/stickyness.rs +33 -5
  154. package/sdk-core/tests/integ_tests/workflow_tests/timers.rs +12 -16
  155. package/sdk-core/tests/integ_tests/workflow_tests.rs +85 -82
  156. package/sdk-core/tests/load_tests.rs +6 -6
  157. package/sdk-core/tests/main.rs +2 -2
  158. package/src/conversions.rs +24 -21
  159. package/src/errors.rs +8 -0
  160. package/src/lib.rs +323 -211
  161. package/sdk-core/protos/local/activity_result.proto +0 -46
  162. package/sdk-core/protos/local/activity_task.proto +0 -66
  163. package/sdk-core/src/core_tests/retry.rs +0 -147
  164. package/sdk-core/src/lib.rs +0 -403
  165. package/sdk-core/src/machines/local_activity_state_machine.rs +0 -117
  166. package/sdk-core/src/pending_activations.rs +0 -249
  167. package/sdk-core/src/protosext/mod.rs +0 -160
  168. package/sdk-core/src/prototype_rust_sdk.rs +0 -412
  169. package/sdk-core/src/task_token.rs +0 -20
  170. package/sdk-core/src/test_help/history_info.rs +0 -157
@@ -44,12 +44,16 @@ import "temporal/api/failure/v1/message.proto";
44
44
  import "temporal/api/workflow/v1/message.proto";
45
45
  import "temporal/api/taskqueue/v1/message.proto";
46
46
 
47
+ // Always the first event in workflow history
47
48
  message WorkflowExecutionStartedEventAttributes {
48
49
  temporal.api.common.v1.WorkflowType workflow_type = 1;
50
+ // If this workflow is a child, the namespace our parent lives in
49
51
  string parent_workflow_namespace = 2;
50
52
  temporal.api.common.v1.WorkflowExecution parent_workflow_execution = 3;
53
+ // TODO: What is this? ID of the event that requested this workflow execution if we are a child?
51
54
  int64 parent_initiated_event_id = 4;
52
55
  temporal.api.taskqueue.v1.TaskQueue task_queue = 5;
56
+ // SDK will deserialize this and provide it as arguments to the workflow function
53
57
  temporal.api.common.v1.Payloads input = 6;
54
58
  // Total workflow execution timeout including retries and continue as new.
55
59
  google.protobuf.Duration workflow_execution_timeout = 7 [(gogoproto.stdduration) = true];
@@ -57,22 +61,27 @@ message WorkflowExecutionStartedEventAttributes {
57
61
  google.protobuf.Duration workflow_run_timeout = 8 [(gogoproto.stdduration) = true];
58
62
  // Timeout of a single workflow task.
59
63
  google.protobuf.Duration workflow_task_timeout = 9 [(gogoproto.stdduration) = true];
60
- // Run id of previous ContinueAsNew or retry or cron execution.
64
+ // Run id of the previous workflow which continued-as-new or retired or cron executed into this
65
+ // workflow.
61
66
  string continued_execution_run_id = 10;
62
67
  temporal.api.enums.v1.ContinueAsNewInitiator initiator = 11;
63
68
  temporal.api.failure.v1.Failure continued_failure = 12;
64
69
  temporal.api.common.v1.Payloads last_completion_result = 13;
65
- // This is the runId when the WorkflowExecutionStarted event is written.
70
+ // This is the run id when the WorkflowExecutionStarted event was written
66
71
  string original_execution_run_id = 14;
72
+ // Identity of the client who requested this execution
67
73
  string identity = 15;
68
74
  // This is the very first runId along the chain of ContinueAsNew and Reset.
69
75
  string first_execution_run_id = 16;
70
76
  temporal.api.common.v1.RetryPolicy retry_policy = 17;
77
+ // Starting at 1, the number of times we have tried to execute this workflow
71
78
  int32 attempt = 18;
72
- // The absolute time at which workflow is timed out.
73
- // This time is passed without change to the next run/retry of a workflow.
79
+ // The absolute time at which the workflow will be timed out.
80
+ // This is passed without change to the next run/retry of a workflow.
74
81
  google.protobuf.Timestamp workflow_execution_expiration_time = 19 [(gogoproto.stdtime) = true];
82
+ // If this workflow runs on a cron schedule, it will appear here
75
83
  string cron_schedule = 20;
84
+ // TODO: What is this? Appears unused.
76
85
  google.protobuf.Duration first_workflow_task_backoff = 21 [(gogoproto.stdduration) = true];
77
86
  temporal.api.common.v1.Memo memo = 22;
78
87
  temporal.api.common.v1.SearchAttributes search_attributes = 23;
@@ -81,15 +90,19 @@ message WorkflowExecutionStartedEventAttributes {
81
90
  }
82
91
 
83
92
  message WorkflowExecutionCompletedEventAttributes {
93
+ // Serialized result of workflow completion (ie: The return value of the workflow function)
84
94
  temporal.api.common.v1.Payloads result = 1;
95
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
85
96
  int64 workflow_task_completed_event_id = 2;
86
97
  // If another run is started by cron, this contains the new run id.
87
98
  string new_execution_run_id = 3;
88
99
  }
89
100
 
90
101
  message WorkflowExecutionFailedEventAttributes {
102
+ // Serialized result of workflow failure (ex: An exception thrown, or error returned)
91
103
  temporal.api.failure.v1.Failure failure = 1;
92
104
  temporal.api.enums.v1.RetryState retry_state = 2;
105
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
93
106
  int64 workflow_task_completed_event_id = 3;
94
107
  // If another run is started by cron or retry, this contains the new run id.
95
108
  string new_execution_run_id = 4;
@@ -102,248 +115,363 @@ message WorkflowExecutionTimedOutEventAttributes {
102
115
  }
103
116
 
104
117
  message WorkflowExecutionContinuedAsNewEventAttributes {
118
+ // The run ID of the new workflow started by this continue-as-new
105
119
  string new_execution_run_id = 1;
106
120
  temporal.api.common.v1.WorkflowType workflow_type = 2;
107
121
  temporal.api.taskqueue.v1.TaskQueue task_queue = 3;
108
122
  temporal.api.common.v1.Payloads input = 4;
109
- // workflow_execution_timeout is omitted as it shouldn'be overridden from within a workflow.
110
123
  // Timeout of a single workflow run.
111
124
  google.protobuf.Duration workflow_run_timeout = 5 [(gogoproto.stdduration) = true];
112
125
  // Timeout of a single workflow task.
113
126
  google.protobuf.Duration workflow_task_timeout = 6 [(gogoproto.stdduration) = true];
127
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
114
128
  int64 workflow_task_completed_event_id = 7;
129
+ // TODO: How and is this used?
115
130
  google.protobuf.Duration backoff_start_interval = 8 [(gogoproto.stdduration) = true];
116
131
  temporal.api.enums.v1.ContinueAsNewInitiator initiator = 9;
132
+ // TODO: David are these right?
133
+ // Deprecated. If a workflow's retry policy would cause a new run to start when the current one
134
+ // has failed, this field would be populated with that failure. Now (when supported by server
135
+ // and sdk) the final event will be `WORKFLOW_EXECUTION_FAILED` with `new_execution_run_id` set.
117
136
  temporal.api.failure.v1.Failure failure = 10;
137
+ // TODO: Is this the result of *this* workflow as it continued-as-new?
118
138
  temporal.api.common.v1.Payloads last_completion_result = 11;
119
139
  temporal.api.common.v1.Header header = 12;
120
140
  temporal.api.common.v1.Memo memo = 13;
121
141
  temporal.api.common.v1.SearchAttributes search_attributes = 14;
142
+
143
+ // workflow_execution_timeout is omitted as it shouldn't be overridden from within a workflow.
122
144
  }
123
145
 
124
146
  message WorkflowTaskScheduledEventAttributes {
147
+ // The task queue this workflow task was enqueued in, which could be a normal or sticky queue
125
148
  temporal.api.taskqueue.v1.TaskQueue task_queue = 1;
149
+ // How long the worker has to process this task once receiving it before it times out
150
+ //
126
151
  // (-- api-linter: core::0140::prepositions=disabled
127
152
  // aip.dev/not-precedent: "to" is used to indicate interval. --)
128
153
  google.protobuf.Duration start_to_close_timeout = 2 [(gogoproto.stdduration) = true];
154
+ // Starting at 1, how many attempts there have been to complete this task
129
155
  int32 attempt = 3;
130
156
  }
131
157
 
132
158
  message WorkflowTaskStartedEventAttributes {
159
+ // The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to
133
160
  int64 scheduled_event_id = 1;
161
+ // Identity of the worker who picked up this task
134
162
  string identity = 2;
163
+ // TODO: ? Appears unused?
135
164
  string request_id = 3;
136
165
  }
137
166
 
138
167
  message WorkflowTaskCompletedEventAttributes {
168
+ // The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to
139
169
  int64 scheduled_event_id = 1;
170
+ // The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to
140
171
  int64 started_event_id = 2;
172
+ // Identity of the worker who completed this task
141
173
  string identity = 3;
174
+ // Binary ID of the worker who completed this task
142
175
  string binary_checksum = 4;
143
176
  }
144
177
 
145
178
  message WorkflowTaskTimedOutEventAttributes {
179
+ // The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to
146
180
  int64 scheduled_event_id = 1;
181
+ // The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to
147
182
  int64 started_event_id = 2;
148
183
  temporal.api.enums.v1.TimeoutType timeout_type = 3;
149
184
  }
150
185
 
151
186
  message WorkflowTaskFailedEventAttributes {
187
+ // The id of the `WORKFLOW_TASK_SCHEDULED` event this task corresponds to
152
188
  int64 scheduled_event_id = 1;
189
+ // The id of the `WORKFLOW_TASK_STARTED` event this task corresponds to
153
190
  int64 started_event_id = 2;
154
191
  temporal.api.enums.v1.WorkflowTaskFailedCause cause = 3;
192
+ // The failure details
155
193
  temporal.api.failure.v1.Failure failure = 4;
194
+ // If a worker explicitly failed this task, it's identity. TODO: What is this set to if server fails the task?
156
195
  string identity = 5;
157
- // For reset workflow.
196
+ // The original run id of the workflow. For reset workflow.
158
197
  string base_run_id = 6;
198
+ // If the workflow is being reset, the new run id.
159
199
  string new_run_id = 7;
200
+ // TODO: ?
160
201
  int64 fork_event_version = 8;
202
+ // If a worker explicitly failed this task, it's binary id
161
203
  string binary_checksum = 9;
162
204
  }
163
205
 
164
206
  message ActivityTaskScheduledEventAttributes {
207
+ // The worker/user assigned identifier for the activity
165
208
  string activity_id = 1;
166
209
  temporal.api.common.v1.ActivityType activity_type = 2;
167
210
  string namespace = 3;
168
211
  temporal.api.taskqueue.v1.TaskQueue task_queue = 4;
169
212
  temporal.api.common.v1.Header header = 5;
170
213
  temporal.api.common.v1.Payloads input = 6;
214
+ // Indicates how long the caller is willing to wait for an activity completion. Limits how long
215
+ // retries will be attempted. Either this or `start_to_close_timeout` must be specified.
216
+ //
171
217
  // (-- api-linter: core::0140::prepositions=disabled
172
218
  // aip.dev/not-precedent: "to" is used to indicate interval. --)
173
- // Indicates how long the caller is willing to wait for an activity completion.
174
- // Limits for how long retries are happening. Either this or start_to_close_timeout_seconds must be specified.
175
219
  google.protobuf.Duration schedule_to_close_timeout = 7 [(gogoproto.stdduration) = true];
220
+ // Limits time an activity task can stay in a task queue before a worker picks it up. This
221
+ // timeout is always non retryable, as all a retry would achieve is to put it back into the same
222
+ // queue. Defaults to `schedule_to_close_timeout` or workflow execution timeout if not
223
+ // specified.
224
+ //
176
225
  // (-- api-linter: core::0140::prepositions=disabled
177
226
  // aip.dev/not-precedent: "to" is used to indicate interval. --)
178
- // Limits time an activity task can stay in a task queue before a worker picks it up.
179
- // This timeout is always non retryable as all a retry would achieve is to put it back into the same queue.
180
- // Defaults to schedule_to_close_timeout_seconds or workflow execution timeout if not specified.
181
227
  google.protobuf.Duration schedule_to_start_timeout = 8 [(gogoproto.stdduration) = true];
228
+ // Maximum time an activity is allowed to execute after being picked up by a worker. This
229
+ // timeout is always retryable. Either this or `schedule_to_close_timeout` must be
230
+ // specified.
231
+ //
182
232
  // (-- api-linter: core::0140::prepositions=disabled
183
233
  // aip.dev/not-precedent: "to" is used to indicate interval. --)
184
- // Maximum time an activity is allowed to execute after a pick up by a worker.
185
- // This timeout is always retryable. Either this or schedule_to_close_timeout_seconds must be specified.
186
234
  google.protobuf.Duration start_to_close_timeout = 9 [(gogoproto.stdduration) = true];
187
- // Maximum time between successful worker heartbeats.
235
+ // Maximum permitted time between successful worker heartbeats.
188
236
  google.protobuf.Duration heartbeat_timeout = 10 [(gogoproto.stdduration) = true];
237
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
189
238
  int64 workflow_task_completed_event_id = 11;
190
- // Activities are provided by a default retry policy controlled through the service dynamic configuration.
191
- // Retries are happening up to schedule_to_close_timeout.
192
- // To disable retries set retry_policy.maximum_attempts to 1.
239
+ // Activities are assigned a default retry policy controlled by the service's dynamic
240
+ // configuration. Retries will happen up to `schedule_to_close_timeout`. To disable retries set
241
+ // retry_policy.maximum_attempts to 1.
193
242
  temporal.api.common.v1.RetryPolicy retry_policy = 12;
194
243
  }
195
244
 
196
245
  message ActivityTaskStartedEventAttributes {
246
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this task corresponds to
197
247
  int64 scheduled_event_id = 1;
248
+ // id of the worker that picked up this task
198
249
  string identity = 2;
250
+ // TODO ??
199
251
  string request_id = 3;
252
+ // Starting at 1, the number of times this task has been attempted
200
253
  int32 attempt = 4;
254
+ // Will be set to the most recent failure details, if this task has previously failed and then
255
+ // been retried.
201
256
  temporal.api.failure.v1.Failure last_failure = 5;
202
257
  }
203
258
 
204
259
  message ActivityTaskCompletedEventAttributes {
260
+ // Serialized results of the activity. IE: The return value of the activity function
205
261
  temporal.api.common.v1.Payloads result = 1;
262
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this completion corresponds to
206
263
  int64 scheduled_event_id = 2;
264
+ // The id of the `ACTIVITY_TASK_STARTED` event this completion corresponds to
207
265
  int64 started_event_id = 3;
266
+ // id of the worker that completed this task
208
267
  string identity = 4;
209
268
  }
210
269
 
211
270
  message ActivityTaskFailedEventAttributes {
271
+ // Failure details
212
272
  temporal.api.failure.v1.Failure failure = 1;
273
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this failure corresponds to
213
274
  int64 scheduled_event_id = 2;
275
+ // The id of the `ACTIVITY_TASK_STARTED` event this failure corresponds to
214
276
  int64 started_event_id = 3;
277
+ // id of the worker that failed this task
215
278
  string identity = 4;
216
279
  temporal.api.enums.v1.RetryState retry_state = 5;
217
280
  }
218
281
 
219
282
  message ActivityTaskTimedOutEventAttributes {
220
- // For retry activity, it may have a failure before timeout. It is stored as `cause` in `failure`.
283
+ // If this activity had failed, was retried, and then timed out, that failure is stored as the
284
+ // `cause` in here.
221
285
  temporal.api.failure.v1.Failure failure = 1;
286
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this timeout corresponds to
222
287
  int64 scheduled_event_id = 2;
288
+ // The id of the `ACTIVITY_TASK_STARTED` event this timeout corresponds to
223
289
  int64 started_event_id = 3;
224
290
  temporal.api.enums.v1.RetryState retry_state = 4;
225
291
  }
226
292
 
227
293
  message ActivityTaskCancelRequestedEventAttributes {
294
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this cancel request corresponds to
228
295
  int64 scheduled_event_id = 1;
296
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
229
297
  int64 workflow_task_completed_event_id = 2;
230
298
  }
231
299
 
232
300
  message ActivityTaskCanceledEventAttributes {
301
+ // Additional information that the activity reported upon confirming cancellation
233
302
  temporal.api.common.v1.Payloads details = 1;
303
+ // id of the most recent `ACTIVITY_TASK_CANCEL_REQUESTED` event which refers to the same
304
+ // activity
234
305
  int64 latest_cancel_requested_event_id = 2;
306
+ // The id of the `ACTIVITY_TASK_SCHEDULED` event this cancel confirmation corresponds to
235
307
  int64 scheduled_event_id = 3;
308
+ // The id of the `ACTIVITY_TASK_STARTED` event this cancel confirmation corresponds to
236
309
  int64 started_event_id = 4;
310
+ // id of the worker who canceled this activity
237
311
  string identity = 5;
238
312
  }
239
313
 
240
314
  message TimerStartedEventAttributes {
315
+ // The worker/user assigned id for this timer
241
316
  string timer_id = 1;
317
+ // How long until this timer fires
318
+ //
242
319
  // (-- api-linter: core::0140::prepositions=disabled
243
320
  // aip.dev/not-precedent: "to" is used to indicate interval. --)
244
321
  google.protobuf.Duration start_to_fire_timeout = 2 [(gogoproto.stdduration) = true];
322
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
245
323
  int64 workflow_task_completed_event_id = 3;
246
324
  }
247
325
 
248
326
  message TimerFiredEventAttributes {
327
+ // Will match the `timer_id` from `TIMER_STARTED` event for this timer
249
328
  string timer_id = 1;
329
+ // The id of the `TIMER_STARTED` event itself
250
330
  int64 started_event_id = 2;
251
331
  }
252
332
 
253
333
  message TimerCanceledEventAttributes {
334
+ // Will match the `timer_id` from `TIMER_STARTED` event for this timer
254
335
  string timer_id = 1;
336
+ // The id of the `TIMER_STARTED` event itself
255
337
  int64 started_event_id = 2;
338
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
256
339
  int64 workflow_task_completed_event_id = 3;
340
+ // The id of the worker who requested this cancel
257
341
  string identity = 4;
258
342
  }
259
343
 
260
344
  message WorkflowExecutionCancelRequestedEventAttributes {
345
+ // User provided reason for requesting cancellation
261
346
  string cause = 1;
347
+ // TODO: Is this the ID of the event in the workflow which initiated this cancel, if there was one?
262
348
  int64 external_initiated_event_id = 2;
263
349
  temporal.api.common.v1.WorkflowExecution external_workflow_execution = 3;
350
+ // id of the worker or client who requested this cancel
264
351
  string identity = 4;
265
352
  }
266
353
 
267
354
  message WorkflowExecutionCanceledEventAttributes {
355
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
268
356
  int64 workflow_task_completed_event_id = 1;
269
357
  temporal.api.common.v1.Payloads details = 2;
270
358
  }
271
359
 
272
360
  message MarkerRecordedEventAttributes {
361
+ // Workers use this to identify the "types" of various markers. Ex: Local activity, side effect.
273
362
  string marker_name = 1;
363
+ // Serialized information recorded in the marker
274
364
  map<string, temporal.api.common.v1.Payloads> details = 2;
365
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
275
366
  int64 workflow_task_completed_event_id = 3;
276
367
  temporal.api.common.v1.Header header = 4;
368
+ // Some uses of markers, like a local activity, could "fail". If they did that is recorded here.
277
369
  temporal.api.failure.v1.Failure failure = 5;
278
370
  }
279
371
 
280
372
  message WorkflowExecutionSignaledEventAttributes {
373
+ // The name/type of the signal to fire
281
374
  string signal_name = 1;
375
+ // Will be deserialized and provided as argument(s) to the signal handler
282
376
  temporal.api.common.v1.Payloads input = 2;
377
+ // id of the worker/client who sent this signal
283
378
  string identity = 3;
379
+ // Headers that were passed by the sender of the signal and copied by temporal
380
+ // server into the workflow task.
381
+ temporal.api.common.v1.Header header = 4;
284
382
  }
285
383
 
286
384
  message WorkflowExecutionTerminatedEventAttributes {
385
+ // User/client provided reason for termination
287
386
  string reason = 1;
288
387
  temporal.api.common.v1.Payloads details = 2;
388
+ // id of the client who requested termination
289
389
  string identity = 3;
290
390
  }
291
391
 
292
392
  message RequestCancelExternalWorkflowExecutionInitiatedEventAttributes {
393
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
293
394
  int64 workflow_task_completed_event_id = 1;
395
+ // The namespace the workflow to be cancelled lives in
294
396
  string namespace = 2;
295
397
  temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
398
+ // Deprecated
296
399
  string control = 4;
400
+ // Workers are expected to set this to true if the workflow they are requesting to cancel is
401
+ // a child of the workflow which issued the request
297
402
  bool child_workflow_only = 5;
298
403
  }
299
404
 
300
405
  message RequestCancelExternalWorkflowExecutionFailedEventAttributes {
301
406
  temporal.api.enums.v1.CancelExternalWorkflowExecutionFailedCause cause = 1;
407
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
302
408
  int64 workflow_task_completed_event_id = 2;
409
+ // namespace of the workflow which failed to cancel
303
410
  string namespace = 3;
304
411
  temporal.api.common.v1.WorkflowExecution workflow_execution = 4;
412
+ // id of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this failure
413
+ // corresponds to
305
414
  int64 initiated_event_id = 5;
415
+ // Deprecated
306
416
  string control = 6;
307
417
  }
308
418
 
309
419
  message ExternalWorkflowExecutionCancelRequestedEventAttributes {
420
+ // id of the `REQUEST_CANCEL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this event corresponds
421
+ // to
310
422
  int64 initiated_event_id = 1;
423
+ // namespace of the to-be-cancelled workflow
311
424
  string namespace = 2;
312
425
  temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
313
426
  }
314
427
 
315
428
  message SignalExternalWorkflowExecutionInitiatedEventAttributes {
429
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
316
430
  int64 workflow_task_completed_event_id = 1;
431
+ // namespace of the to-be-signalled workflow
317
432
  string namespace = 2;
318
433
  temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
434
+ // name/type of the signal to fire in the external workflow
319
435
  string signal_name = 4;
436
+ // Serialized arguments to provide to the signal handler
320
437
  temporal.api.common.v1.Payloads input = 5;
438
+ // Deprecated
321
439
  string control = 6;
440
+ // Workers are expected to set this to true if the workflow they are requesting to cancel is
441
+ // a child of the workflow which issued the request
322
442
  bool child_workflow_only = 7;
443
+ temporal.api.common.v1.Header header = 8;
323
444
  }
324
445
 
325
446
  message SignalExternalWorkflowExecutionFailedEventAttributes {
326
447
  temporal.api.enums.v1.SignalExternalWorkflowExecutionFailedCause cause = 1;
448
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
327
449
  int64 workflow_task_completed_event_id = 2;
328
450
  string namespace = 3;
329
451
  temporal.api.common.v1.WorkflowExecution workflow_execution = 4;
330
452
  int64 initiated_event_id = 5;
453
+ // Deprecated
331
454
  string control = 6;
332
455
  }
333
456
 
334
457
  message ExternalWorkflowExecutionSignaledEventAttributes {
458
+ // id of the `SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED` event this event corresponds to
335
459
  int64 initiated_event_id = 1;
460
+ // namespace of the workflow which was signaled
336
461
  string namespace = 2;
337
462
  temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
463
+ // Deprecated
338
464
  string control = 4;
339
465
  }
340
466
 
341
467
  message UpsertWorkflowSearchAttributesEventAttributes {
468
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
342
469
  int64 workflow_task_completed_event_id = 1;
343
470
  temporal.api.common.v1.SearchAttributes search_attributes = 2;
344
471
  }
345
472
 
346
473
  message StartChildWorkflowExecutionInitiatedEventAttributes {
474
+ // Namespace of the child workflow
347
475
  string namespace = 1;
348
476
  string workflow_id = 2;
349
477
  temporal.api.common.v1.WorkflowType workflow_type = 3;
@@ -357,11 +485,14 @@ message StartChildWorkflowExecutionInitiatedEventAttributes {
357
485
  google.protobuf.Duration workflow_task_timeout = 8 [(gogoproto.stdduration) = true];
358
486
  // Default: PARENT_CLOSE_POLICY_TERMINATE.
359
487
  temporal.api.enums.v1.ParentClosePolicy parent_close_policy = 9;
488
+ // Deprecated
360
489
  string control = 10;
490
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
361
491
  int64 workflow_task_completed_event_id = 11;
362
492
  // Default: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE.
363
493
  temporal.api.enums.v1.WorkflowIdReusePolicy workflow_id_reuse_policy = 12;
364
494
  temporal.api.common.v1.RetryPolicy retry_policy = 13;
495
+ // If this child runs on a cron schedule, it will appear here
365
496
  string cron_schedule = 14;
366
497
  temporal.api.common.v1.Header header = 15;
367
498
  temporal.api.common.v1.Memo memo = 16;
@@ -369,17 +500,23 @@ message StartChildWorkflowExecutionInitiatedEventAttributes {
369
500
  }
370
501
 
371
502
  message StartChildWorkflowExecutionFailedEventAttributes {
503
+ // Namespace of the child workflow
372
504
  string namespace = 1;
373
505
  string workflow_id = 2;
374
506
  temporal.api.common.v1.WorkflowType workflow_type = 3;
375
507
  temporal.api.enums.v1.StartChildWorkflowExecutionFailedCause cause = 4;
508
+ // Deprecated
376
509
  string control = 5;
510
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
377
511
  int64 initiated_event_id = 6;
512
+ // The `WORKFLOW_TASK_COMPLETED` event which this command was reported with
378
513
  int64 workflow_task_completed_event_id = 7;
379
514
  }
380
515
 
381
516
  message ChildWorkflowExecutionStartedEventAttributes {
517
+ // Namespace of the child workflow
382
518
  string namespace = 1;
519
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
383
520
  int64 initiated_event_id = 2;
384
521
  temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
385
522
  temporal.api.common.v1.WorkflowType workflow_type = 4;
@@ -388,55 +525,76 @@ message ChildWorkflowExecutionStartedEventAttributes {
388
525
 
389
526
  message ChildWorkflowExecutionCompletedEventAttributes {
390
527
  temporal.api.common.v1.Payloads result = 1;
528
+ // Namespace of the child workflow
391
529
  string namespace = 2;
392
530
  temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
393
531
  temporal.api.common.v1.WorkflowType workflow_type = 4;
532
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
394
533
  int64 initiated_event_id = 5;
534
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
395
535
  int64 started_event_id = 6;
396
536
  }
397
537
 
398
538
  message ChildWorkflowExecutionFailedEventAttributes {
399
539
  temporal.api.failure.v1.Failure failure = 1;
540
+ // Namespace of the child workflow
400
541
  string namespace = 2;
401
542
  temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
402
543
  temporal.api.common.v1.WorkflowType workflow_type = 4;
544
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
403
545
  int64 initiated_event_id = 5;
546
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
404
547
  int64 started_event_id = 6;
405
548
  temporal.api.enums.v1.RetryState retry_state = 7;
406
549
  }
407
550
 
408
551
  message ChildWorkflowExecutionCanceledEventAttributes {
409
552
  temporal.api.common.v1.Payloads details = 1;
553
+ // Namespace of the child workflow
410
554
  string namespace = 2;
411
555
  temporal.api.common.v1.WorkflowExecution workflow_execution = 3;
412
556
  temporal.api.common.v1.WorkflowType workflow_type = 4;
557
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
413
558
  int64 initiated_event_id = 5;
559
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
414
560
  int64 started_event_id = 6;
415
561
  }
416
562
 
417
563
  message ChildWorkflowExecutionTimedOutEventAttributes {
564
+ // Namespace of the child workflow
418
565
  string namespace = 1;
419
566
  temporal.api.common.v1.WorkflowExecution workflow_execution = 2;
420
567
  temporal.api.common.v1.WorkflowType workflow_type = 3;
568
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
421
569
  int64 initiated_event_id = 4;
570
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
422
571
  int64 started_event_id = 5;
423
572
  temporal.api.enums.v1.RetryState retry_state = 6;
424
573
  }
425
574
 
426
575
  message ChildWorkflowExecutionTerminatedEventAttributes {
576
+ // Namespace of the child workflow
427
577
  string namespace = 1;
428
578
  temporal.api.common.v1.WorkflowExecution workflow_execution = 2;
429
579
  temporal.api.common.v1.WorkflowType workflow_type = 3;
580
+ // Id of the `START_CHILD_WORKFLOW_EXECUTION_INITIATED` event which this event corresponds to
430
581
  int64 initiated_event_id = 4;
582
+ // Id of the `CHILD_WORKFLOW_EXECUTION_STARTED` event which this event corresponds to
431
583
  int64 started_event_id = 5;
432
584
  }
433
585
 
586
+ // History events are the method by which Temporal SDKs advance (or recreate) workflow state.
587
+ // See the `EventType` enum for more info about what each event is for.
434
588
  message HistoryEvent {
589
+ // Monotonically increasing event number, starts at 1.
435
590
  int64 event_id = 1;
436
591
  google.protobuf.Timestamp event_time = 2 [(gogoproto.stdtime) = true];
437
592
  temporal.api.enums.v1.EventType event_type = 3;
593
+ // TODO: What is this? Appears unused by SDKs
438
594
  int64 version = 4;
595
+ // TODO: What is this? Appears unused by SDKs
439
596
  int64 task_id = 5;
597
+ // The event details. The type must match that in `event_type`.
440
598
  oneof attributes {
441
599
  WorkflowExecutionStartedEventAttributes workflow_execution_started_event_attributes = 6;
442
600
  WorkflowExecutionCompletedEventAttributes workflow_execution_completed_event_attributes = 7;
@@ -75,4 +75,10 @@ message UpdateNamespaceInfo {
75
75
  string owner_email = 2;
76
76
  // A key-value map for any customized purpose.
77
77
  map<string, string> data = 3;
78
+ // New namespace state, server will reject if transition is not allowed.
79
+ // Allowed transitions are:
80
+ // Registered -> [ Deleted | Deprecated | Handover ]
81
+ // Handover -> [ Registered ]
82
+ // Default is NAMESPACE_STATE_UNSPECIFIED which is do not change state.
83
+ temporal.api.enums.v1.NamespaceState state = 4;
78
84
  }
@@ -35,13 +35,24 @@ import "temporal/api/enums/v1/query.proto";
35
35
  import "temporal/api/enums/v1/workflow.proto";
36
36
  import "temporal/api/common/v1/message.proto";
37
37
 
38
+ // See https://docs.temporal.io/docs/concepts/queries/
38
39
  message WorkflowQuery {
40
+ // The workflow-author-defined identifier of the query. Typically a function name.
39
41
  string query_type = 1;
42
+ // Serialized arguments that will be provided to the query handler.
40
43
  temporal.api.common.v1.Payloads query_args = 2;
44
+ // Headers that were passed by the caller of the query and copied by temporal
45
+ // server into the workflow task.
46
+ temporal.api.common.v1.Header header = 3;
41
47
  }
48
+
49
+ // Answer to a `WorkflowQuery`
42
50
  message WorkflowQueryResult {
51
+ // Did the query succeed or fail?
43
52
  temporal.api.enums.v1.QueryResultType result_type = 1;
53
+ // Set when the query succeeds with the results
44
54
  temporal.api.common.v1.Payloads answer = 2;
55
+ // Mutually exclusive with `answer`. Set when the query fails.
45
56
  string error_message = 3;
46
57
  }
47
58
 
@@ -39,13 +39,16 @@ import "dependencies/gogoproto/gogo.proto";
39
39
 
40
40
  import "temporal/api/enums/v1/task_queue.proto";
41
41
 
42
+ // See https://docs.temporal.io/docs/concepts/task-queues/
42
43
  message TaskQueue {
43
44
  string name = 1;
44
45
  // Default: TASK_QUEUE_KIND_NORMAL.
45
46
  temporal.api.enums.v1.TaskQueueKind kind = 2;
46
47
  }
47
48
 
49
+ // Only applies to activity task queues
48
50
  message TaskQueueMetadata {
51
+ // Allows throttling dispatch of tasks from this queue
49
52
  google.protobuf.DoubleValue max_tasks_per_second = 1;
50
53
  }
51
54