temporalio 1.6.0 → 1.6.1.test.only.rc2

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 temporalio might be problematic. Click here for more details.

Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +9 -17
  3. data/lib/temporalio/api/activity/v1/message.rb +1 -1
  4. data/lib/temporalio/api/batch/v1/message.rb +4 -1
  5. data/lib/temporalio/api/command/v1/message.rb +2 -1
  6. data/lib/temporalio/api/common/v1/message.rb +2 -1
  7. data/lib/temporalio/api/enums/v1/activity.rb +1 -1
  8. data/lib/temporalio/api/enums/v1/batch_operation.rb +1 -1
  9. data/lib/temporalio/api/enums/v1/common.rb +2 -1
  10. data/lib/temporalio/api/enums/v1/failed_cause.rb +1 -1
  11. data/lib/temporalio/api/errordetails/v1/message.rb +2 -1
  12. data/lib/temporalio/api/history/v1/message.rb +1 -1
  13. data/lib/temporalio/api/namespace/v1/message.rb +1 -1
  14. data/lib/temporalio/api/taskqueue/v1/message.rb +2 -1
  15. data/lib/temporalio/api/workflowservice/v1/request_response.rb +1 -1
  16. data/lib/temporalio/client/connection.rb +33 -3
  17. data/lib/temporalio/client/schedule.rb +4 -5
  18. data/lib/temporalio/client/workflow_execution.rb +2 -2
  19. data/lib/temporalio/client/workflow_handle.rb +13 -7
  20. data/lib/temporalio/client.rb +4 -6
  21. data/lib/temporalio/internal/bridge/client.rb +3 -1
  22. data/lib/temporalio/internal/bridge/worker.rb +3 -1
  23. data/lib/temporalio/internal/worker/workflow_instance/illegal_call_tracer.rb +9 -0
  24. data/lib/temporalio/runtime.rb +2 -2
  25. data/lib/temporalio/version.rb +1 -1
  26. data/lib/temporalio/worker/workflow_replayer.rb +2 -0
  27. data/lib/temporalio/worker.rb +24 -4
  28. data/lib/temporalio/workflow.rb +8 -9
  29. data/rbi/temporalio/api/activity/v1/message.rbi +78 -12
  30. data/rbi/temporalio/api/batch/v1/message.rbi +229 -2
  31. data/rbi/temporalio/api/command/v1/message.rbi +22 -2
  32. data/rbi/temporalio/api/common/v1/message.rbi +100 -8
  33. data/rbi/temporalio/api/enums/v1/activity.rbi +1 -0
  34. data/rbi/temporalio/api/enums/v1/batch_operation.rbi +9 -0
  35. data/rbi/temporalio/api/enums/v1/common.rbi +18 -0
  36. data/rbi/temporalio/api/enums/v1/failed_cause.rbi +3 -0
  37. data/rbi/temporalio/api/errordetails/v1/message.rbi +59 -2
  38. data/rbi/temporalio/api/history/v1/message.rbi +22 -2
  39. data/rbi/temporalio/api/namespace/v1/message.rbi +70 -2
  40. data/rbi/temporalio/api/taskqueue/v1/message.rbi +113 -2
  41. data/rbi/temporalio/api/workflowservice/v1/request_response.rbi +379 -57
  42. data/rbi/temporalio/client/connection.rbi +2 -0
  43. data/rbi/temporalio/internal/bridge/worker.rbi +2 -0
  44. data/rbi/temporalio/worker.rbi +9 -2
  45. data/rbi/temporalio/workflow/future.rbi +1 -1
  46. data/sig/temporalio/api/activity/v1/message.rbs +37 -2
  47. data/sig/temporalio/api/batch/v1/message.rbs +86 -0
  48. data/sig/temporalio/api/command/v1/message.rbs +10 -0
  49. data/sig/temporalio/api/common/v1/message.rbs +47 -7
  50. data/sig/temporalio/api/enums/v1/activity.rbs +9 -5
  51. data/sig/temporalio/api/enums/v1/batch_operation.rbs +33 -3
  52. data/sig/temporalio/api/enums/v1/common.rbs +23 -0
  53. data/sig/temporalio/api/enums/v1/failed_cause.rbs +15 -6
  54. data/sig/temporalio/api/errordetails/v1/message.rbs +19 -0
  55. data/sig/temporalio/api/history/v1/message.rbs +10 -0
  56. data/sig/temporalio/api/namespace/v1/message.rbs +32 -0
  57. data/sig/temporalio/api/taskqueue/v1/message.rbs +44 -0
  58. data/sig/temporalio/api/workflowservice/v1/request_response.rbs +174 -18
  59. data/sig/temporalio/client/connection.rbs +14 -1
  60. data/sig/temporalio/internal/bridge/client.rbs +5 -1
  61. data/sig/temporalio/internal/bridge/worker.rbs +5 -1
  62. data/sig/temporalio/worker.rbs +8 -2
  63. metadata +1 -1
@@ -86,13 +86,19 @@ module Temporalio
86
86
  hist_run_id = result_run_id
87
87
  loop do
88
88
  # Get close event
89
- event = fetch_history_events(
90
- wait_new_event: true,
91
- event_filter_type: Api::Enums::V1::HistoryEventFilterType::HISTORY_EVENT_FILTER_TYPE_CLOSE_EVENT,
92
- skip_archival: true,
93
- specific_run_id: hist_run_id,
94
- rpc_options:
95
- ).next
89
+ event = begin
90
+ fetch_history_events(
91
+ wait_new_event: true,
92
+ event_filter_type: Api::Enums::V1::HistoryEventFilterType::HISTORY_EVENT_FILTER_TYPE_CLOSE_EVENT,
93
+ skip_archival: true,
94
+ specific_run_id: hist_run_id,
95
+ rpc_options:
96
+ ).next
97
+ rescue StopIteration
98
+ # Timeskipping server can return empty events with no continuation token, this will surface as an empty
99
+ # iterator.
100
+ next
101
+ end
96
102
 
97
103
  # Check each close type'
98
104
  case event.event_type
@@ -287,11 +287,10 @@ module Temporalio
287
287
  # @param id [String] Unique identifier for the workflow execution.
288
288
  # @param task_queue [String] Task queue to run the workflow on.
289
289
  # @param static_summary [String, nil] Fixed single-line summary for this workflow execution that may appear in
290
- # CLI/UI. This can be in single-line Temporal markdown format. This is currently experimental.
290
+ # CLI/UI. This can be in single-line Temporal markdown format.
291
291
  # @param static_details [String, nil] Fixed details for this workflow execution that may appear in CLI/UI. This can
292
292
  # be in Temporal markdown format and can be multiple lines. This is a fixed value on the workflow that cannot be
293
- # updated. For details that can be updated, use {Workflow.current_details=} within the workflow. This is currently
294
- # experimental.
293
+ # updated. For details that can be updated, use {Workflow.current_details=} within the workflow.
295
294
  # @param execution_timeout [Float, nil] Total workflow execution timeout in seconds including retries and continue
296
295
  # as new.
297
296
  # @param run_timeout [Float, nil] Timeout of a single workflow run in seconds.
@@ -380,11 +379,10 @@ module Temporalio
380
379
  # @param id [String] Unique identifier for the workflow execution.
381
380
  # @param task_queue [String] Task queue to run the workflow on.
382
381
  # @param static_summary [String, nil] Fixed single-line summary for this workflow execution that may appear in
383
- # CLI/UI. This can be in single-line Temporal markdown format. This is currently experimental.
382
+ # CLI/UI. This can be in single-line Temporal markdown format.
384
383
  # @param static_details [String, nil] Fixed details for this workflow execution that may appear in CLI/UI. This can
385
384
  # be in Temporal markdown format and can be multiple lines. This is a fixed value on the workflow that cannot be
386
- # updated. For details that can be updated, use {Workflow.current_details=} within the workflow. This is currently
387
- # experimental.
385
+ # updated. For details that can be updated, use {Workflow.current_details=} within the workflow.
388
386
  # @param execution_timeout [Float, nil] Total workflow execution timeout in seconds including retries and continue
389
387
  # as new.
390
388
  # @param run_timeout [Float, nil] Timeout of a single workflow run in seconds.
@@ -18,7 +18,9 @@ module Temporalio
18
18
  :keep_alive, # Optional
19
19
  :http_connect_proxy, # Optional
20
20
  :dns_load_balancing, # Optional
21
- :grpc_compression
21
+ :grpc_compression,
22
+ :payloads_warn_size,
23
+ :memo_warn_size
22
24
  )
23
25
 
24
26
  TLSOptions = Struct.new(
@@ -24,11 +24,13 @@ module Temporalio
24
24
  :default_heartbeat_throttle_interval,
25
25
  :max_worker_activities_per_second,
26
26
  :max_task_queue_activities_per_second,
27
+ :max_eager_activity_reservations_per_workflow_task,
27
28
  :graceful_shutdown_period,
28
29
  :nondeterminism_as_workflow_fail,
29
30
  :nondeterminism_as_workflow_fail_for_types,
30
31
  :deployment_options,
31
- :plugins
32
+ :plugins,
33
+ :disable_payload_error_limit
32
34
  )
33
35
 
34
36
  TunerOptions = Struct.new(
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'temporalio/internal/workflow_task_failure_error'
3
4
  require 'temporalio/worker/illegal_workflow_call_validator'
4
5
  require 'temporalio/workflow'
5
6
 
@@ -92,6 +93,11 @@ module Temporalio
92
93
  ))
93
94
  nil
94
95
  rescue Exception => e # rubocop:disable Lint/RescueException
96
+ # Errors that invalidate the whole workflow task (e.g. an async DeadlockError landing while the
97
+ # validator runs) must propagate with their class intact so they fail the task instead of being
98
+ # flattened into a NondeterminismError message that futures may store
99
+ raise if e.is_a?(Internal::WorkflowTaskFailureError)
100
+
95
101
  ", reason: #{e}"
96
102
  end
97
103
  else
@@ -108,6 +114,9 @@ module Temporalio
108
114
  ))
109
115
  nil
110
116
  rescue Exception => e # rubocop:disable Lint/RescueException
117
+ # See workflow-task-failure comment on the class-level validator rescue above
118
+ raise if e.is_a?(Internal::WorkflowTaskFailureError)
119
+
111
120
  ", reason: #{e}"
112
121
  end
113
122
  end
@@ -101,8 +101,8 @@ module Temporalio
101
101
  # @!visibility private
102
102
  def _to_bridge
103
103
  # @type self: LoggingFilterOptions
104
- "#{other_level},temporalio_sdk_core=#{core_level},temporalio_client=#{core_level}," \
105
- "temporalio_sdk=#{core_level},temporalio_bridge=#{core_level}"
104
+ "#{other_level},temporalio_common=#{core_level},temporalio_sdk_core=#{core_level}," \
105
+ "temporalio_client=#{core_level},temporalio_sdk=#{core_level},temporalio_bridge=#{core_level}"
106
106
  end
107
107
  end
108
108
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Temporalio
4
- VERSION = '1.6.0'
4
+ VERSION = '1.6.1.test.only.rc2'
5
5
  end
@@ -240,10 +240,12 @@ module Temporalio
240
240
  default_heartbeat_throttle_interval: 1.0,
241
241
  max_worker_activities_per_second: nil,
242
242
  max_task_queue_activities_per_second: nil,
243
+ max_eager_activity_reservations_per_workflow_task: 3,
243
244
  graceful_shutdown_period: 0.0,
244
245
  nondeterminism_as_workflow_fail:,
245
246
  nondeterminism_as_workflow_fail_for_types:,
246
247
  deployment_options: Worker.default_deployment_options._to_bridge_options,
248
+ disable_payload_error_limit: true,
247
249
  plugins: options.plugins.map(&:name).uniq.sort
248
250
  )
249
251
  )
@@ -61,6 +61,7 @@ module Temporalio
61
61
  :default_heartbeat_throttle_interval,
62
62
  :max_activities_per_second,
63
63
  :max_task_queue_activities_per_second,
64
+ :max_eager_activity_reservations_per_workflow_task,
64
65
  :graceful_shutdown_period,
65
66
  :disable_eager_activity_execution,
66
67
  :illegal_workflow_calls,
@@ -71,7 +72,8 @@ module Temporalio
71
72
  :patch_activation_callback,
72
73
  :workflow_task_poller_behavior,
73
74
  :activity_task_poller_behavior,
74
- :debug_mode
75
+ :debug_mode,
76
+ :disable_payload_error_limit
75
77
  )
76
78
 
77
79
  # Options as returned from {options} for `**to_h` splat use in {initialize}. See {initialize} for details.
@@ -415,6 +417,9 @@ module Temporalio
415
417
  # @param max_task_queue_activities_per_second [Float, nil] Sets the maximum number of activities per second the task
416
418
  # queue will dispatch, controlled server-side. Note that this only takes effect upon an activity poll request. If
417
419
  # multiple workers on the same queue have different values set, they will thrash with the last poller winning.
420
+ # @param max_eager_activity_reservations_per_workflow_task [Integer] Maximum number of activity slots that may be
421
+ # reserved for eager execution when completing a workflow task. Defaults to 3 and must be positive. To disable
422
+ # eager activity execution, set `disable_eager_activity_execution: true`.
418
423
  # @param graceful_shutdown_period [Float] Amount of time after shutdown is called that activities are given to
419
424
  # complete before their tasks are canceled.
420
425
  # @param disable_eager_activity_execution [Boolean] If true, disables eager activity execution. Eager activity
@@ -452,6 +457,9 @@ module Temporalio
452
457
  # @param debug_mode [Boolean] If true, deadlock detection is disabled. Deadlock detection will fail workflow tasks
453
458
  # if they block the thread for too long. This defaults to true if the `TEMPORAL_DEBUG` environment variable is
454
459
  # `true` or `1`.
460
+ # @param disable_payload_error_limit [Boolean] If true, the worker will not proactively fail workflow/activity
461
+ # tasks whose payloads exceed the namespace error limits; oversized payloads are sent to the server, which
462
+ # enforces the limit. Defaults to false (the worker fails such tasks before sending).
455
463
  def initialize(
456
464
  client:,
457
465
  task_queue:,
@@ -474,6 +482,7 @@ module Temporalio
474
482
  default_heartbeat_throttle_interval: 30,
475
483
  max_activities_per_second: nil,
476
484
  max_task_queue_activities_per_second: nil,
485
+ max_eager_activity_reservations_per_workflow_task: 3,
477
486
  graceful_shutdown_period: 0,
478
487
  disable_eager_activity_execution: false,
479
488
  illegal_workflow_calls: Worker.default_illegal_workflow_calls,
@@ -484,7 +493,8 @@ module Temporalio
484
493
  patch_activation_callback: nil,
485
494
  workflow_task_poller_behavior: PollerBehavior::SimpleMaximum.new(max_concurrent_workflow_task_polls),
486
495
  activity_task_poller_behavior: PollerBehavior::SimpleMaximum.new(max_concurrent_activity_task_polls),
487
- debug_mode: %w[true 1].include?(ENV['TEMPORAL_DEBUG'].to_s.downcase)
496
+ debug_mode: %w[true 1].include?(ENV['TEMPORAL_DEBUG'].to_s.downcase),
497
+ disable_payload_error_limit: false
488
498
  )
489
499
  Internal::ProtoUtils.assert_non_reserved_name(task_queue)
490
500
 
@@ -510,6 +520,7 @@ module Temporalio
510
520
  default_heartbeat_throttle_interval:,
511
521
  max_activities_per_second:,
512
522
  max_task_queue_activities_per_second:,
523
+ max_eager_activity_reservations_per_workflow_task:,
513
524
  graceful_shutdown_period:,
514
525
  disable_eager_activity_execution:,
515
526
  illegal_workflow_calls:,
@@ -520,7 +531,8 @@ module Temporalio
520
531
  patch_activation_callback:,
521
532
  workflow_task_poller_behavior:,
522
533
  activity_task_poller_behavior:,
523
- debug_mode:
534
+ debug_mode:,
535
+ disable_payload_error_limit:
524
536
  ).freeze
525
537
  # Collect applicable client plugins and worker plugins, then validate and apply to options
526
538
  @plugins = client.options.plugins.grep(Plugin) + plugins
@@ -541,6 +553,11 @@ module Temporalio
541
553
  raise ArgumentError,
542
554
  'default_versioning_behavior must be UNSPECIFIED when use_worker_versioning is false'
543
555
  end
556
+ unless @options.max_eager_activity_reservations_per_workflow_task.positive?
557
+ raise ArgumentError,
558
+ 'max_eager_activity_reservations_per_workflow_task must be positive; ' \
559
+ 'use disable_eager_activity_execution: true to disable eager activity execution'
560
+ end
544
561
 
545
562
  should_enforce_versioning_behavior =
546
563
  @options.deployment_options.use_worker_versioning &&
@@ -577,11 +594,14 @@ module Temporalio
577
594
  default_heartbeat_throttle_interval: @options.default_heartbeat_throttle_interval,
578
595
  max_worker_activities_per_second: @options.max_activities_per_second,
579
596
  max_task_queue_activities_per_second: @options.max_task_queue_activities_per_second,
597
+ max_eager_activity_reservations_per_workflow_task:
598
+ @options.max_eager_activity_reservations_per_workflow_task,
580
599
  graceful_shutdown_period: @options.graceful_shutdown_period,
581
600
  nondeterminism_as_workflow_fail:,
582
601
  nondeterminism_as_workflow_fail_for_types:,
583
602
  deployment_options: @options.deployment_options._to_bridge_options,
584
- plugins: (@options.client.options.plugins + @options.plugins).map(&:name).uniq.sort
603
+ plugins: (@options.client.options.plugins + @options.plugins).map(&:name).uniq.sort,
604
+ disable_payload_error_limit: @options.disable_payload_error_limit
585
605
  )
586
606
  )
587
607
 
@@ -68,7 +68,7 @@ module Temporalio
68
68
 
69
69
  # Get current details for this workflow that may appear in UI/CLI. Unlike static details set at start, this value
70
70
  # can be updated throughout the life of the workflow. This can be in Temporal markdown format and can span multiple
71
- # lines. This is currently experimental.
71
+ # lines.
72
72
  #
73
73
  # @return [String] Current details. Default is empty string.
74
74
  def self.current_details
@@ -77,7 +77,7 @@ module Temporalio
77
77
 
78
78
  # Set current details for this workflow that may appear in UI/CLI. Unlike static details set at start, this value
79
79
  # can be updated throughout the life of the workflow. This can be in Temporal markdown format and can span multiple
80
- # lines. This is currently experimental.
80
+ # lines.
81
81
  #
82
82
  # @param details [String] Current details. Can use empty string to unset.
83
83
  def self.current_details=(details)
@@ -136,7 +136,7 @@ module Temporalio
136
136
  # @param args [Array<Object>] Arguments to the activity.
137
137
  # @param task_queue [String] Task queue to run the activity on. Defaults to the current workflow's task queue.
138
138
  # @param summary [String, nil] Single-line summary for this activity that may appear in CLI/UI. This can be in
139
- # single-line Temporal markdown format. This is currently experimental.
139
+ # single-line Temporal markdown format.
140
140
  # @param schedule_to_close_timeout [Float, nil] Max amount of time the activity can take from first being scheduled
141
141
  # to being completed before it times out. This is inclusive of all retries.
142
142
  # @param schedule_to_start_timeout [Float, nil] Max amount of time the activity can take to be started from first
@@ -235,7 +235,7 @@ module Temporalio
235
235
  # @param activity [Class<Activity::Definition>, Symbol, String] Activity definition class or name.
236
236
  # @param args [Array<Object>] Arguments to the activity.
237
237
  # @param summary [String, nil] Single-line summary for this activity that may appear in CLI/UI. This can be in
238
- # single-line Temporal markdown format. This is currently experimental.
238
+ # single-line Temporal markdown format.
239
239
  # @param schedule_to_close_timeout [Float, nil] Max amount of time the activity can take from first being scheduled
240
240
  # to being completed before it times out. This is inclusive of all retries.
241
241
  # @param schedule_to_start_timeout [Float, nil] Max amount of time the activity can take to be started from first
@@ -393,7 +393,7 @@ module Temporalio
393
393
  # value cannot be negative. Since Temporal timers are server-side, timer resolution may not end up as precise as
394
394
  # system timers.
395
395
  # @param summary [String, nil] A simple string identifying this timer that may be visible in UI/CLI. While it can be
396
- # normal text, it is best to treat as a timer ID. This is currently experimental.
396
+ # normal text, it is best to treat as a timer ID.
397
397
  # @param cancellation [Cancellation] Cancellation for this timer.
398
398
  # @raise [Error::CanceledError] Sleep canceled.
399
399
  def self.sleep(duration, summary: nil, cancellation: Workflow.cancellation)
@@ -407,11 +407,10 @@ module Temporalio
407
407
  # @param id [String] Unique identifier for the workflow execution. Defaults to a new UUID from {random}.
408
408
  # @param task_queue [String] Task queue to run the workflow on. Defaults to the current workflow's task queue.
409
409
  # @param static_summary [String, nil] Fixed single-line summary for this workflow execution that may appear in
410
- # CLI/UI. This can be in single-line Temporal markdown format. This is currently experimental.
410
+ # CLI/UI. This can be in single-line Temporal markdown format.
411
411
  # @param static_details [String, nil] Fixed details for this workflow execution that may appear in CLI/UI. This can
412
412
  # be in Temporal markdown format and can be multiple lines. This is a fixed value on the workflow that cannot be
413
- # updated. For details that can be updated, use {Workflow.current_details=} within the workflow. This is currently
414
- # experimental.
413
+ # updated. For details that can be updated, use {Workflow.current_details=} within the workflow.
415
414
  # @param cancellation [Cancellation] Cancellation to apply to the child workflow. How cancellation is treated is
416
415
  # based on `cancellation_type`. This defaults to the workflow's cancellation.
417
416
  # @param cancellation_type [ChildWorkflowCancellationType] How the child workflow will react to cancellation.
@@ -480,7 +479,7 @@ module Temporalio
480
479
  # @param message [String] Message to use for timeout exception. Defaults to "execution expired" like
481
480
  # {::Timeout.timeout}.
482
481
  # @param summary [String] Timer summary for the timer created by this timeout. This is backed by {sleep} so see that
483
- # method for details. This is currently experimental.
482
+ # method for details.
484
483
  #
485
484
  # @yield Block to run with a timeout.
486
485
  # @return [Object] The result of the block.
@@ -98,7 +98,8 @@ class Temporalio::Api::Activity::V1::ActivityOptions
98
98
  start_to_close_timeout: T.nilable(Google::Protobuf::Duration),
99
99
  heartbeat_timeout: T.nilable(Google::Protobuf::Duration),
100
100
  retry_policy: T.nilable(Temporalio::Api::Common::V1::RetryPolicy),
101
- priority: T.nilable(Temporalio::Api::Common::V1::Priority)
101
+ priority: T.nilable(Temporalio::Api::Common::V1::Priority),
102
+ start_delay: T.nilable(Google::Protobuf::Duration)
102
103
  ).void
103
104
  end
104
105
  def initialize(
@@ -108,7 +109,8 @@ class Temporalio::Api::Activity::V1::ActivityOptions
108
109
  start_to_close_timeout: nil,
109
110
  heartbeat_timeout: nil,
110
111
  retry_policy: nil,
111
- priority: nil
112
+ priority: nil,
113
+ start_delay: nil
112
114
  )
113
115
  end
114
116
 
@@ -262,6 +264,27 @@ class Temporalio::Api::Activity::V1::ActivityOptions
262
264
  def clear_priority
263
265
  end
264
266
 
267
+ # Time to wait before making the first activity task available for dispatch. This delay is not applied to retry attempts.
268
+ # When updated, the time is added to the original `schedule_time`, not to the current time.
269
+ # If the resulting time is in the past, the task is made available for dispatch immediately.
270
+ sig { returns(T.nilable(Google::Protobuf::Duration)) }
271
+ def start_delay
272
+ end
273
+
274
+ # Time to wait before making the first activity task available for dispatch. This delay is not applied to retry attempts.
275
+ # When updated, the time is added to the original `schedule_time`, not to the current time.
276
+ # If the resulting time is in the past, the task is made available for dispatch immediately.
277
+ sig { params(value: T.nilable(Google::Protobuf::Duration)).void }
278
+ def start_delay=(value)
279
+ end
280
+
281
+ # Time to wait before making the first activity task available for dispatch. This delay is not applied to retry attempts.
282
+ # When updated, the time is added to the original `schedule_time`, not to the current time.
283
+ # If the resulting time is in the past, the task is made available for dispatch immediately.
284
+ sig { void }
285
+ def clear_start_delay
286
+ end
287
+
265
288
  sig { params(field: String).returns(T.untyped) }
266
289
  def [](field)
267
290
  end
@@ -338,7 +361,8 @@ class Temporalio::Api::Activity::V1::ActivityExecutionInfo
338
361
  total_heartbeat_count: T.nilable(Integer),
339
362
  sdk_name: T.nilable(String),
340
363
  sdk_version: T.nilable(String),
341
- start_delay: T.nilable(Google::Protobuf::Duration)
364
+ start_delay: T.nilable(Google::Protobuf::Duration),
365
+ execution_time: T.nilable(Google::Protobuf::Timestamp)
342
366
  ).void
343
367
  end
344
368
  def initialize(
@@ -378,7 +402,8 @@ class Temporalio::Api::Activity::V1::ActivityExecutionInfo
378
402
  total_heartbeat_count: 0,
379
403
  sdk_name: "",
380
404
  sdk_version: "",
381
- start_delay: nil
405
+ start_delay: nil,
406
+ execution_time: nil
382
407
  )
383
408
  end
384
409
 
@@ -673,17 +698,20 @@ class Temporalio::Api::Activity::V1::ActivityExecutionInfo
673
698
  def clear_schedule_time
674
699
  end
675
700
 
676
- # Scheduled time + schedule to close timeout.
701
+ # The time at which the activity's Schedule-to-Close timeout expires.
702
+ # Calculated as `schedule_time` + `start_delay` + `schedule_to_close_timeout`.
677
703
  sig { returns(T.nilable(Google::Protobuf::Timestamp)) }
678
704
  def expiration_time
679
705
  end
680
706
 
681
- # Scheduled time + schedule to close timeout.
707
+ # The time at which the activity's Schedule-to-Close timeout expires.
708
+ # Calculated as `schedule_time` + `start_delay` + `schedule_to_close_timeout`.
682
709
  sig { params(value: T.nilable(Google::Protobuf::Timestamp)).void }
683
710
  def expiration_time=(value)
684
711
  end
685
712
 
686
- # Scheduled time + schedule to close timeout.
713
+ # The time at which the activity's Schedule-to-Close timeout expires.
714
+ # Calculated as `schedule_time` + `start_delay` + `schedule_to_close_timeout`.
687
715
  sig { void }
688
716
  def clear_expiration_time
689
717
  end
@@ -979,21 +1007,39 @@ class Temporalio::Api::Activity::V1::ActivityExecutionInfo
979
1007
  def clear_sdk_version
980
1008
  end
981
1009
 
982
- # Time to wait before dispatching the first activity task. This delay is not applied to retry attempts.
1010
+ # Time to wait before making the first activity task available for dispatch. This delay is not applied to retry attempts.
983
1011
  sig { returns(T.nilable(Google::Protobuf::Duration)) }
984
1012
  def start_delay
985
1013
  end
986
1014
 
987
- # Time to wait before dispatching the first activity task. This delay is not applied to retry attempts.
1015
+ # Time to wait before making the first activity task available for dispatch. This delay is not applied to retry attempts.
988
1016
  sig { params(value: T.nilable(Google::Protobuf::Duration)).void }
989
1017
  def start_delay=(value)
990
1018
  end
991
1019
 
992
- # Time to wait before dispatching the first activity task. This delay is not applied to retry attempts.
1020
+ # Time to wait before making the first activity task available for dispatch. This delay is not applied to retry attempts.
993
1021
  sig { void }
994
1022
  def clear_start_delay
995
1023
  end
996
1024
 
1025
+ # The time at which the first activity task is made available for dispatch, computed as
1026
+ # `schedule_time + start_delay`. Same as `schedule_time` if `start_delay` is not set.
1027
+ sig { returns(T.nilable(Google::Protobuf::Timestamp)) }
1028
+ def execution_time
1029
+ end
1030
+
1031
+ # The time at which the first activity task is made available for dispatch, computed as
1032
+ # `schedule_time + start_delay`. Same as `schedule_time` if `start_delay` is not set.
1033
+ sig { params(value: T.nilable(Google::Protobuf::Timestamp)).void }
1034
+ def execution_time=(value)
1035
+ end
1036
+
1037
+ # The time at which the first activity task is made available for dispatch, computed as
1038
+ # `schedule_time + start_delay`. Same as `schedule_time` if `start_delay` is not set.
1039
+ sig { void }
1040
+ def clear_execution_time
1041
+ end
1042
+
997
1043
  sig { params(field: String).returns(T.untyped) }
998
1044
  def [](field)
999
1045
  end
@@ -1046,7 +1092,8 @@ class Temporalio::Api::Activity::V1::ActivityExecutionListInfo
1046
1092
  task_queue: T.nilable(String),
1047
1093
  state_transition_count: T.nilable(Integer),
1048
1094
  state_size_bytes: T.nilable(Integer),
1049
- execution_duration: T.nilable(Google::Protobuf::Duration)
1095
+ execution_duration: T.nilable(Google::Protobuf::Duration),
1096
+ execution_time: T.nilable(Google::Protobuf::Timestamp)
1050
1097
  ).void
1051
1098
  end
1052
1099
  def initialize(
@@ -1060,7 +1107,8 @@ class Temporalio::Api::Activity::V1::ActivityExecutionListInfo
1060
1107
  task_queue: "",
1061
1108
  state_transition_count: 0,
1062
1109
  state_size_bytes: 0,
1063
- execution_duration: nil
1110
+ execution_duration: nil,
1111
+ execution_time: nil
1064
1112
  )
1065
1113
  end
1066
1114
 
@@ -1235,6 +1283,24 @@ class Temporalio::Api::Activity::V1::ActivityExecutionListInfo
1235
1283
  def clear_execution_duration
1236
1284
  end
1237
1285
 
1286
+ # The time at which the first activity task is made available for dispatch, computed as
1287
+ # `schedule_time + start_delay`. Same as `schedule_time` if `start_delay` is not set.
1288
+ sig { returns(T.nilable(Google::Protobuf::Timestamp)) }
1289
+ def execution_time
1290
+ end
1291
+
1292
+ # The time at which the first activity task is made available for dispatch, computed as
1293
+ # `schedule_time + start_delay`. Same as `schedule_time` if `start_delay` is not set.
1294
+ sig { params(value: T.nilable(Google::Protobuf::Timestamp)).void }
1295
+ def execution_time=(value)
1296
+ end
1297
+
1298
+ # The time at which the first activity task is made available for dispatch, computed as
1299
+ # `schedule_time + start_delay`. Same as `schedule_time` if `start_delay` is not set.
1300
+ sig { void }
1301
+ def clear_execution_time
1302
+ end
1303
+
1238
1304
  sig { params(field: String).returns(T.untyped) }
1239
1305
  def [](field)
1240
1306
  end