From b134ffcaef976abbd3334333948b83f2a1e4c1ff Mon Sep 17 00:00:00 2001 From: "Jason J. Liggayu" <9956289+jasonligg@users.noreply.github.com> Date: Tue, 23 Jun 2026 19:44:19 -0400 Subject: [PATCH 1/4] fix: Convert continue as new reason from symbol to integer --- CHANGELOG.md | 24 ++--- .../internal/worker/workflow_instance.rb | 4 +- .../test/worker/workflow_instance_test.rb | 88 +++++++++++++++++++ temporalio/test/worker_workflow_test.rb | 8 +- 4 files changed, 106 insertions(+), 18 deletions(-) create mode 100644 temporalio/test/worker/workflow_instance_test.rb diff --git a/CHANGELOG.md b/CHANGELOG.md index e0ad92e3..7c0e24f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,15 @@ to docs, or any other relevant information. ## [Unreleased] +### Fixed + +#### `Workflow.suggest_continue_as_new_reasons` returns workflow enum values + +Workflow activations containing continue-as-new suggestion reasons previously failed because the worker tried to call `to_i` on bridge enum symbols. Continue-as-new suggestion reasons are now converted from bridge enum symbols to +`Temporalio::SuggestContinueAsNewReason` integer enum values before being exposed to workflows. + +## [v1.5.0] - 2026-06-11 + ### Breaking Changes #### `Activity::Info` workflow fields are now nullable @@ -65,19 +74,4 @@ correctly receives `Temporalio::Error::WorkflowUpdateFailedError`. (#454) but defers dispatch to a worker until the delay elapses. Retry attempts do not re-apply the delay. `ScheduleToStart` and `ScheduleToClose` timeout clocks begin counting after the delay elapses; `StartToClose` and `Heartbeat` are unaffected. Currently experimental. - diff --git a/temporalio/lib/temporalio/internal/worker/workflow_instance.rb b/temporalio/lib/temporalio/internal/worker/workflow_instance.rb index f5036680..970154ce 100644 --- a/temporalio/lib/temporalio/internal/worker/workflow_instance.rb +++ b/temporalio/lib/temporalio/internal/worker/workflow_instance.rb @@ -180,7 +180,9 @@ def activate(activation) @commands = [] @current_activation_error = nil @continue_as_new_suggested = activation.continue_as_new_suggested - @suggest_continue_as_new_reasons = activation.suggest_continue_as_new_reasons.map(&:to_i) + @suggest_continue_as_new_reasons = activation.suggest_continue_as_new_reasons.map do |reason| + ProtoUtils.enum_to_int(Api::Enums::V1::SuggestContinueAsNewReason, reason) + end @target_worker_deployment_version_changed = activation.target_worker_deployment_version_changed @current_deployment_version = WorkerDeploymentVersion._from_bridge( activation.deployment_version_for_current_task diff --git a/temporalio/test/worker/workflow_instance_test.rb b/temporalio/test/worker/workflow_instance_test.rb new file mode 100644 index 00000000..5a01bed6 --- /dev/null +++ b/temporalio/test/worker/workflow_instance_test.rb @@ -0,0 +1,88 @@ +# frozen_string_literal: true + +require 'logger' +require 'temporalio/converters' +require 'temporalio/internal/bridge/api' +require 'temporalio/internal/worker/workflow_instance' +require 'temporalio/runtime' +require 'temporalio/workflow' +require 'test' + +module Worker + class WorkflowInstanceTest < Test + class ContinueAsNewSuggestionWorkflow < Temporalio::Workflow::Definition + def execute + [ + Temporalio::Workflow.continue_as_new_suggested, + Temporalio::Workflow.suggest_continue_as_new_reasons + ] + end + end + + def test_continue_as_new_suggestion_reasons_are_visible_as_workflow_enum_ints + data_converter = Temporalio::Converters::DataConverter.default + initial_activation = Temporalio::Internal::Bridge::Api::WorkflowActivation::WorkflowActivation.new( + run_id: 'run-id', + timestamp: Google::Protobuf::Timestamp.new(seconds: Time.now.to_i), + history_length: 1, + history_size_bytes: 1, + jobs: [ + Temporalio::Internal::Bridge::Api::WorkflowActivation::WorkflowActivationJob.new( + initialize_workflow: Temporalio::Internal::Bridge::Api::WorkflowActivation::InitializeWorkflow.new( + workflow_type: 'ContinueAsNewSuggestionWorkflow', + workflow_id: 'workflow-id', + randomness_seed: 1, + start_time: Google::Protobuf::Timestamp.new(seconds: Time.now.to_i), + workflow_task_timeout: Google::Protobuf::Duration.new(seconds: 10) + ) + ) + ] + ) + + instance = Temporalio::Internal::Worker::WorkflowInstance.new( + Temporalio::Internal::Worker::WorkflowInstance::Details.new( + namespace: 'namespace', + task_queue: 'task-queue', + definition: Temporalio::Workflow::Definition::Info.from_class(ContinueAsNewSuggestionWorkflow), + initial_activation:, + logger: Logger.new(nil), + metric_meter: Temporalio::Runtime.default.metric_meter, + payload_converter: data_converter.payload_converter, + failure_converter: data_converter.failure_converter, + interceptors: [], + disable_eager_activity_execution: false, + illegal_calls: nil, + workflow_failure_exception_types: [], + unsafe_workflow_io_enabled: false, + assert_valid_local_activity: ->(_) {} + ) + ) + + completion = instance.activate( + Temporalio::Internal::Bridge::Api::WorkflowActivation::WorkflowActivation.new( + run_id: 'run-id', + timestamp: Google::Protobuf::Timestamp.new(seconds: Time.now.to_i), + history_length: 1, + history_size_bytes: 1, + continue_as_new_suggested: true, + suggest_continue_as_new_reasons: [ + Temporalio::Api::Enums::V1::SuggestContinueAsNewReason:: + SUGGEST_CONTINUE_AS_NEW_REASON_HISTORY_SIZE_TOO_LARGE, + Temporalio::Api::Enums::V1::SuggestContinueAsNewReason:: + SUGGEST_CONTINUE_AS_NEW_REASON_TOO_MANY_HISTORY_EVENTS + ] + ) + ) + command = completion.successful.commands.fetch(0) + result = data_converter.payload_converter.from_payload(command.complete_workflow_execution.result) + + assert_equal [ + true, + [ + Temporalio::SuggestContinueAsNewReason::HISTORY_SIZE_TOO_LARGE, + Temporalio::SuggestContinueAsNewReason::TOO_MANY_HISTORY_EVENTS + ] + ], result + end + end +end diff --git a/temporalio/test/worker_workflow_test.rb b/temporalio/test/worker_workflow_test.rb index 66beef49..dc07f53d 100644 --- a/temporalio/test/worker_workflow_test.rb +++ b/temporalio/test/worker_workflow_test.rb @@ -240,16 +240,20 @@ def execute [ Temporalio::Workflow.continue_as_new_suggested, Temporalio::Workflow.current_history_length, - Temporalio::Workflow.current_history_size + Temporalio::Workflow.current_history_size, + Temporalio::Workflow.suggest_continue_as_new_reasons ] end end def test_history_info - can_suggested, hist_len, hist_size = execute_workflow(HistoryInfoWorkflow) #: [bool, Integer, Integer] + can_suggested, hist_len, hist_size, reasons = + execute_workflow(HistoryInfoWorkflow) #: [bool, Integer, Integer, Array[Integer]] refute can_suggested assert hist_len > 60 assert hist_size > 1500 + assert_instance_of Array, reasons + assert_empty reasons end class WaitConditionWorkflow < Temporalio::Workflow::Definition From 5d96c613300ed4d59cd90dd00a12eb4e347ba45c Mon Sep 17 00:00:00 2001 From: "Jason J. Liggayu" <9956289+jasonligg@users.noreply.github.com> Date: Tue, 23 Jun 2026 21:13:06 -0400 Subject: [PATCH 2/4] spike: Preserve type info during each/map with Activation interface --- temporalio/extra/proto_gen.rb | 4 ++ temporalio/sig/google/protobuf_compat.rbs | 5 +++ .../sig/temporalio/api/common/v1/message.rbs | 6 +-- .../sig/temporalio/api/compute/v1/config.rbs | 12 +++--- .../api/errordetails/v1/message.rbs | 6 +-- .../sig/temporalio/api/history/v1/message.rbs | 6 +-- .../options/openapiv2.rbs | 18 ++++----- .../temporalio/api/taskqueue/v1/message.rbs | 6 +-- .../workflowservice/v1/request_response.rbs | 18 ++++----- .../workflow_activation.rbs | 6 +-- .../internal/worker/workflow_instance.rbs | 21 +++++++++- .../temporalio/worker_deployment_version.rbs | 4 +- temporalio/test/proto_gen_test.rb | 40 +++++++++++++++++++ temporalio/test/sig/proto_gen_test.rbs | 9 +++++ .../test/worker/workflow_instance_test.rb | 2 +- 15 files changed, 120 insertions(+), 43 deletions(-) create mode 100644 temporalio/test/proto_gen_test.rb create mode 100644 temporalio/test/sig/proto_gen_test.rbs diff --git a/temporalio/extra/proto_gen.rb b/temporalio/extra/proto_gen.rb index 182cdfeb..8a2ee6e0 100644 --- a/temporalio/extra/proto_gen.rb +++ b/temporalio/extra/proto_gen.rb @@ -473,6 +473,10 @@ def normalize_generated_rbs!(path) /\(::Google::Protobuf::EnumDescriptor & ::Google::Protobuf::_SpecificEnumDescriptor\[[^\]]+\]\)/, '::Google::Protobuf::EnumDescriptor' ) + content.gsub!( + /::Google::Protobuf::RepeatedField\[([^,\]]*::names[^,\]]*), [^\]]+\]/, + '(::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[\1])' + ) content.gsub!(/::Google::Protobuf::RepeatedField\[[^\]]+\]/, '::Google::Protobuf::RepeatedField') content.gsub!( /::Google::Protobuf::Map\[([^,\]]+), ([^,\]]+), [^\]]+\]/, diff --git a/temporalio/sig/google/protobuf_compat.rbs b/temporalio/sig/google/protobuf_compat.rbs index a39fc28b..7195e03e 100644 --- a/temporalio/sig/google/protobuf_compat.rbs +++ b/temporalio/sig/google/protobuf_compat.rbs @@ -10,6 +10,11 @@ module Google class Empty < AbstractMessage end + interface _RepeatedEnumField[out Elem] + def each: () { (Elem value) -> void } -> void + def map: [T] () { (Elem value) -> T } -> ::Array[T] + end + class DoubleValue < AbstractMessage attr_accessor value(): Float end diff --git a/temporalio/sig/temporalio/api/common/v1/message.rbs b/temporalio/sig/temporalio/api/common/v1/message.rbs index 153dc1dc..4a927c17 100644 --- a/temporalio/sig/temporalio/api/common/v1/message.rbs +++ b/temporalio/sig/temporalio/api/common/v1/message.rbs @@ -464,7 +464,7 @@ module Temporalio def clear_current_run_only: () -> void # Event types not to be reapplied - attr_accessor reset_reapply_exclude_types(): ::Google::Protobuf::RepeatedField + attr_accessor reset_reapply_exclude_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer]) attr_reader reset_reapply_exclude_types_const(): ::Array[::Integer] def clear_reset_reapply_exclude_types: () -> void @@ -499,7 +499,7 @@ module Temporalio | ("build_id" name) -> ::String | ("reset_reapply_type" name) -> (::Temporalio::Api::Enums::V1::ResetReapplyType::names | ::Integer) | ("current_run_only" name) -> bool - | ("reset_reapply_exclude_types" name) -> (::Google::Protobuf::RepeatedField) + | ("reset_reapply_exclude_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer])) def []=: ("first_workflow_task" name, ::Google::Protobuf::Empty? value) -> void @@ -508,7 +508,7 @@ module Temporalio | ("build_id" name, ((::String | ::Symbol)?) value) -> void | ("reset_reapply_type" name, (::Temporalio::Api::Enums::V1::ResetReapplyType::names | ::Temporalio::Api::Enums::V1::ResetReapplyType::strings | ::Integer | ::Float) value) -> void | ("current_run_only" name, bool value) -> void - | ("reset_reapply_exclude_types" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("reset_reapply_exclude_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer])) value) -> void end # Callback to attach to various events in the system, e.g. workflow run completion. diff --git a/temporalio/sig/temporalio/api/compute/v1/config.rbs b/temporalio/sig/temporalio/api/compute/v1/config.rbs index 51b5acc1..82b56907 100644 --- a/temporalio/sig/temporalio/api/compute/v1/config.rbs +++ b/temporalio/sig/temporalio/api/compute/v1/config.rbs @@ -14,7 +14,7 @@ module Temporalio # Optional. The set of task queue types this scaling group serves. # If not provided, this scaling group serves all not otherwise defined # task types. - attr_accessor task_queue_types(): ::Google::Protobuf::RepeatedField + attr_accessor task_queue_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer]) attr_reader task_queue_types_const(): ::Array[::Integer] def clear_task_queue_types: () -> void @@ -42,12 +42,12 @@ module Temporalio def initialize: (?init_map initial_value) -> void def []: - ("task_queue_types" name) -> (::Google::Protobuf::RepeatedField) + ("task_queue_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) | ("provider" name) -> ::Temporalio::Api::Compute::V1::ComputeProvider? | ("scaler" name) -> ::Temporalio::Api::Compute::V1::ComputeScaler? def []=: - ("task_queue_types" name, (::Google::Protobuf::RepeatedField) value) -> void + ("task_queue_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) value) -> void | ("provider" name, ::Temporalio::Api::Compute::V1::ComputeProvider? value) -> void | ("scaler" name, ::Temporalio::Api::Compute::V1::ComputeScaler? value) -> void end @@ -137,7 +137,7 @@ module Temporalio class ComputeConfigScalingGroupSummary < ::Google::Protobuf::AbstractMessage - attr_accessor task_queue_types(): ::Google::Protobuf::RepeatedField + attr_accessor task_queue_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer]) attr_reader task_queue_types_const(): ::Array[::Integer] def clear_task_queue_types: () -> void @@ -155,11 +155,11 @@ module Temporalio def initialize: (?init_map initial_value) -> void def []: - ("task_queue_types" name) -> (::Google::Protobuf::RepeatedField) + ("task_queue_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) | ("provider_type" name) -> ::String def []=: - ("task_queue_types" name, (::Google::Protobuf::RepeatedField) value) -> void + ("task_queue_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) value) -> void | ("provider_type" name, (::String | ::Symbol) value) -> void end end diff --git a/temporalio/sig/temporalio/api/errordetails/v1/message.rbs b/temporalio/sig/temporalio/api/errordetails/v1/message.rbs index adfd1995..2d462fb9 100644 --- a/temporalio/sig/temporalio/api/errordetails/v1/message.rbs +++ b/temporalio/sig/temporalio/api/errordetails/v1/message.rbs @@ -138,7 +138,7 @@ module Temporalio # Allowed namespace states for requested operation. # For example NAMESPACE_STATE_DELETED is forbidden for most operations but allowed for DescribeNamespace. - attr_accessor allowed_states(): ::Google::Protobuf::RepeatedField + attr_accessor allowed_states(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::NamespaceState::names | ::Integer]) attr_reader allowed_states_const(): ::Array[::Integer] def clear_allowed_states: () -> void @@ -156,12 +156,12 @@ module Temporalio def []: ("namespace" name) -> ::String | ("state" name) -> (::Temporalio::Api::Enums::V1::NamespaceState::names | ::Integer) - | ("allowed_states" name) -> (::Google::Protobuf::RepeatedField) + | ("allowed_states" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::NamespaceState::names | ::Integer])) def []=: ("namespace" name, (::String | ::Symbol) value) -> void | ("state" name, (::Temporalio::Api::Enums::V1::NamespaceState::names | ::Temporalio::Api::Enums::V1::NamespaceState::strings | ::Integer | ::Float) value) -> void - | ("allowed_states" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("allowed_states" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::NamespaceState::names | ::Integer])) value) -> void end class NamespaceNotFoundFailure < ::Google::Protobuf::AbstractMessage diff --git a/temporalio/sig/temporalio/api/history/v1/message.rbs b/temporalio/sig/temporalio/api/history/v1/message.rbs index 9aa5fe50..efce9438 100644 --- a/temporalio/sig/temporalio/api/history/v1/message.rbs +++ b/temporalio/sig/temporalio/api/history/v1/message.rbs @@ -859,7 +859,7 @@ module Temporalio # The reason(s) that suggest_continue_as_new is true, if it is. # Unset if suggest_continue_as_new is false. - attr_accessor suggest_continue_as_new_reasons(): ::Google::Protobuf::RepeatedField + attr_accessor suggest_continue_as_new_reasons(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer]) attr_reader suggest_continue_as_new_reasons_const(): ::Array[::Integer] def clear_suggest_continue_as_new_reasons: () -> void @@ -919,7 +919,7 @@ module Temporalio | ("identity" name) -> ::String | ("request_id" name) -> ::String | ("suggest_continue_as_new" name) -> bool - | ("suggest_continue_as_new_reasons" name) -> (::Google::Protobuf::RepeatedField) + | ("suggest_continue_as_new_reasons" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer])) | ("target_worker_deployment_version_changed" name) -> bool | ("history_size_bytes" name) -> ::Integer | ("worker_version" name) -> ::Temporalio::Api::Common::V1::WorkerVersionStamp? @@ -930,7 +930,7 @@ module Temporalio | ("identity" name, (::String | ::Symbol) value) -> void | ("request_id" name, (::String | ::Symbol) value) -> void | ("suggest_continue_as_new" name, bool value) -> void - | ("suggest_continue_as_new_reasons" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("suggest_continue_as_new_reasons" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer])) value) -> void | ("target_worker_deployment_version_changed" name, bool value) -> void | ("history_size_bytes" name, (::Integer | ::Float) value) -> void | ("worker_version" name, ::Temporalio::Api::Common::V1::WorkerVersionStamp? value) -> void diff --git a/temporalio/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs b/temporalio/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs index f3e822f5..bbc12a73 100644 --- a/temporalio/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs +++ b/temporalio/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs @@ -70,7 +70,7 @@ module Grpc # The transfer protocol of the API. Values MUST be from the list: "http", # "https", "ws", "wss". If the schemes is not included, the default scheme to # be used is the one used to access the OpenAPI definition itself. - attr_accessor schemes(): ::Google::Protobuf::RepeatedField + attr_accessor schemes(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer]) attr_reader schemes_const(): ::Array[::Integer] def clear_schemes: () -> void @@ -155,7 +155,7 @@ module Grpc | ("info" name) -> ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Info? | ("host" name) -> ::String | ("base_path" name) -> ::String - | ("schemes" name) -> (::Google::Protobuf::RepeatedField) + | ("schemes" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer])) | ("consumes" name) -> (::Google::Protobuf::RepeatedField) | ("produces" name) -> (::Google::Protobuf::RepeatedField) | ("responses" name) -> (::Google::Protobuf::Map[::String, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Response]) @@ -170,7 +170,7 @@ module Grpc | ("info" name, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Info? value) -> void | ("host" name, (::String | ::Symbol) value) -> void | ("base_path" name, (::String | ::Symbol) value) -> void - | ("schemes" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("schemes" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer])) value) -> void | ("consumes" name, (::Google::Protobuf::RepeatedField) value) -> void | ("produces" name, (::Google::Protobuf::RepeatedField) value) -> void | ("responses" name, (::Google::Protobuf::Map[::String, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Response]) value) -> void @@ -254,7 +254,7 @@ module Grpc # The transfer protocol for the operation. Values MUST be from the list: # "http", "https", "ws", "wss". The value overrides the OpenAPI Object # schemes definition. - attr_accessor schemes(): ::Google::Protobuf::RepeatedField + attr_accessor schemes(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer]) attr_reader schemes_const(): ::Array[::Integer] def clear_schemes: () -> void @@ -324,7 +324,7 @@ module Grpc | ("consumes" name) -> (::Google::Protobuf::RepeatedField) | ("produces" name) -> (::Google::Protobuf::RepeatedField) | ("responses" name) -> (::Google::Protobuf::Map[::String, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Response]) - | ("schemes" name) -> (::Google::Protobuf::RepeatedField) + | ("schemes" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer])) | ("deprecated" name) -> bool | ("security" name) -> ::Google::Protobuf::RepeatedField | ("extensions" name) -> (::Google::Protobuf::Map[::String, ::Google::Protobuf::Value]) @@ -339,7 +339,7 @@ module Grpc | ("consumes" name, (::Google::Protobuf::RepeatedField) value) -> void | ("produces" name, (::Google::Protobuf::RepeatedField) value) -> void | ("responses" name, (::Google::Protobuf::Map[::String, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Response]) value) -> void - | ("schemes" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("schemes" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer])) value) -> void | ("deprecated" name, bool value) -> void | ("security" name, ::Google::Protobuf::RepeatedField value) -> void | ("extensions" name, (::Google::Protobuf::Map[::String, ::Google::Protobuf::Value]) value) -> void @@ -1168,7 +1168,7 @@ module Grpc attr_accessor array(): ::Google::Protobuf::RepeatedField def clear_array: () -> void - attr_accessor type(): ::Google::Protobuf::RepeatedField + attr_accessor type(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::JSONSchemaSimpleTypes::names | ::Integer]) attr_reader type_const(): ::Array[::Integer] def clear_type: () -> void @@ -1271,7 +1271,7 @@ module Grpc | ("min_properties" name) -> ::Integer | ("required" name) -> (::Google::Protobuf::RepeatedField) | ("array" name) -> (::Google::Protobuf::RepeatedField) - | ("type" name) -> (::Google::Protobuf::RepeatedField) + | ("type" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::JSONSchemaSimpleTypes::names | ::Integer])) | ("format" name) -> ::String | ("enum" name) -> (::Google::Protobuf::RepeatedField) | ("field_configuration" name) -> ::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::FieldConfiguration? @@ -1299,7 +1299,7 @@ module Grpc | ("min_properties" name, (::Integer | ::Float) value) -> void | ("required" name, (::Google::Protobuf::RepeatedField) value) -> void | ("array" name, (::Google::Protobuf::RepeatedField) value) -> void - | ("type" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("type" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::JSONSchemaSimpleTypes::names | ::Integer])) value) -> void | ("format" name, (::String | ::Symbol) value) -> void | ("enum" name, (::Google::Protobuf::RepeatedField) value) -> void | ("field_configuration" name, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::FieldConfiguration? value) -> void diff --git a/temporalio/sig/temporalio/api/taskqueue/v1/message.rbs b/temporalio/sig/temporalio/api/taskqueue/v1/message.rbs index 7a43362a..fdae8475 100644 --- a/temporalio/sig/temporalio/api/taskqueue/v1/message.rbs +++ b/temporalio/sig/temporalio/api/taskqueue/v1/message.rbs @@ -569,7 +569,7 @@ module Temporalio # Task reachability for a worker in a single task queue. # See the TaskReachability docstring for information about each enum variant. # If reachability is empty, this worker is considered unreachable in this task queue. - attr_accessor reachability(): ::Google::Protobuf::RepeatedField + attr_accessor reachability(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskReachability::names | ::Integer]) attr_reader reachability_const(): ::Array[::Integer] def clear_reachability: () -> void @@ -584,11 +584,11 @@ module Temporalio def []: ("task_queue" name) -> ::String - | ("reachability" name) -> (::Google::Protobuf::RepeatedField) + | ("reachability" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskReachability::names | ::Integer])) def []=: ("task_queue" name, (::String | ::Symbol) value) -> void - | ("reachability" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("reachability" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskReachability::names | ::Integer])) value) -> void end # Reachability of tasks for a worker by build id, in one or more task queues. diff --git a/temporalio/sig/temporalio/api/workflowservice/v1/request_response.rbs b/temporalio/sig/temporalio/api/workflowservice/v1/request_response.rbs index da688807..bdf114bf 100644 --- a/temporalio/sig/temporalio/api/workflowservice/v1/request_response.rbs +++ b/temporalio/sig/temporalio/api/workflowservice/v1/request_response.rbs @@ -3348,7 +3348,7 @@ module Temporalio def clear_reset_reapply_type: () -> void # Event types not to be reapplied - attr_accessor reset_reapply_exclude_types(): ::Google::Protobuf::RepeatedField + attr_accessor reset_reapply_exclude_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer]) attr_reader reset_reapply_exclude_types_const(): ::Array[::Integer] def clear_reset_reapply_exclude_types: () -> void @@ -3393,7 +3393,7 @@ module Temporalio | ("workflow_task_finish_event_id" name) -> ::Integer | ("request_id" name) -> ::String | ("reset_reapply_type" name) -> (::Temporalio::Api::Enums::V1::ResetReapplyType::names | ::Integer) - | ("reset_reapply_exclude_types" name) -> (::Google::Protobuf::RepeatedField) + | ("reset_reapply_exclude_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer])) | ("post_reset_operations" name) -> ::Google::Protobuf::RepeatedField | ("identity" name) -> ::String @@ -3404,7 +3404,7 @@ module Temporalio | ("workflow_task_finish_event_id" name, (::Integer | ::Float) value) -> void | ("request_id" name, (::String | ::Symbol) value) -> void | ("reset_reapply_type" name, (::Temporalio::Api::Enums::V1::ResetReapplyType::names | ::Temporalio::Api::Enums::V1::ResetReapplyType::strings | ::Integer | ::Float) value) -> void - | ("reset_reapply_exclude_types" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("reset_reapply_exclude_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer])) value) -> void | ("post_reset_operations" name, ::Google::Protobuf::RepeatedField value) -> void | ("identity" name, (::String | ::Symbol) value) -> void end @@ -4236,7 +4236,7 @@ module Temporalio # Task queue types that help server cancel outstanding poll RPC # calls from SDK. This avoids a race condition that can lead to tasks being lost. - attr_accessor task_queue_types(): ::Google::Protobuf::RepeatedField + attr_accessor task_queue_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer]) attr_reader task_queue_types_const(): ::Array[::Integer] def clear_task_queue_types: () -> void @@ -4269,7 +4269,7 @@ module Temporalio | ("worker_heartbeat" name) -> ::Temporalio::Api::Worker::V1::WorkerHeartbeat? | ("worker_instance_key" name) -> ::String | ("task_queue" name) -> ::String - | ("task_queue_types" name) -> (::Google::Protobuf::RepeatedField) + | ("task_queue_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) def []=: ("namespace" name, (::String | ::Symbol) value) -> void @@ -4279,7 +4279,7 @@ module Temporalio | ("worker_heartbeat" name, ::Temporalio::Api::Worker::V1::WorkerHeartbeat? value) -> void | ("worker_instance_key" name, (::String | ::Symbol) value) -> void | ("task_queue" name, (::String | ::Symbol) value) -> void - | ("task_queue_types" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("task_queue_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) value) -> void end class ShutdownWorkerResponse < ::Google::Protobuf::AbstractMessage @@ -4521,7 +4521,7 @@ module Temporalio # Deprecated (as part of the ENHANCED mode deprecation). # Task queue types to report info about. If not specified, all types are considered. # @deprecated - attr_accessor task_queue_types(): ::Google::Protobuf::RepeatedField + attr_accessor task_queue_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer]) attr_reader task_queue_types_const(): ::Array[::Integer] def clear_task_queue_types: () -> void @@ -4574,7 +4574,7 @@ module Temporalio | ("include_task_queue_status" name) -> bool | ("api_mode" name) -> (::Temporalio::Api::Enums::V1::DescribeTaskQueueMode::names | ::Integer) | ("versions" name) -> ::Temporalio::Api::TaskQueue::V1::TaskQueueVersionSelection? - | ("task_queue_types" name) -> (::Google::Protobuf::RepeatedField) + | ("task_queue_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) | ("report_pollers" name) -> bool | ("report_task_reachability" name) -> bool @@ -4587,7 +4587,7 @@ module Temporalio | ("include_task_queue_status" name, bool value) -> void | ("api_mode" name, (::Temporalio::Api::Enums::V1::DescribeTaskQueueMode::names | ::Temporalio::Api::Enums::V1::DescribeTaskQueueMode::strings | ::Integer | ::Float) value) -> void | ("versions" name, ::Temporalio::Api::TaskQueue::V1::TaskQueueVersionSelection? value) -> void - | ("task_queue_types" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("task_queue_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) value) -> void | ("report_pollers" name, bool value) -> void | ("report_task_reachability" name, bool value) -> void end diff --git a/temporalio/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs b/temporalio/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs index 240e6569..09fc2176 100644 --- a/temporalio/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs +++ b/temporalio/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs @@ -110,7 +110,7 @@ module Temporalio # Experimental. Optionally decide the versioning behavior that the first task of the new run should use. # For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version # of the previous run. - attr_accessor suggest_continue_as_new_reasons(): ::Google::Protobuf::RepeatedField + attr_accessor suggest_continue_as_new_reasons(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer]) attr_reader suggest_continue_as_new_reasons_const(): ::Array[::Integer] def clear_suggest_continue_as_new_reasons: () -> void @@ -160,7 +160,7 @@ module Temporalio | ("continue_as_new_suggested" name) -> bool | ("deployment_version_for_current_task" name) -> ::Temporalio::Internal::Bridge::Api::Common::WorkerDeploymentVersion? | ("last_sdk_version" name) -> ::String - | ("suggest_continue_as_new_reasons" name) -> (::Google::Protobuf::RepeatedField) + | ("suggest_continue_as_new_reasons" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer])) | ("target_worker_deployment_version_changed" name) -> bool def []=: @@ -174,7 +174,7 @@ module Temporalio | ("continue_as_new_suggested" name, bool value) -> void | ("deployment_version_for_current_task" name, ::Temporalio::Internal::Bridge::Api::Common::WorkerDeploymentVersion? value) -> void | ("last_sdk_version" name, (::String | ::Symbol) value) -> void - | ("suggest_continue_as_new_reasons" name, (::Google::Protobuf::RepeatedField) value) -> void + | ("suggest_continue_as_new_reasons" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer])) value) -> void | ("target_worker_deployment_version_changed" name, bool value) -> void end diff --git a/temporalio/sig/temporalio/internal/worker/workflow_instance.rbs b/temporalio/sig/temporalio/internal/worker/workflow_instance.rbs index e2bc55e3..90300e85 100644 --- a/temporalio/sig/temporalio/internal/worker/workflow_instance.rbs +++ b/temporalio/sig/temporalio/internal/worker/workflow_instance.rbs @@ -2,6 +2,23 @@ module Temporalio module Internal module Worker class WorkflowInstance + interface _Activation + def continue_as_new_suggested: -> bool + def suggest_continue_as_new_reasons: -> ( + ::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[ + ::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer + ] + ) + def target_worker_deployment_version_changed: -> bool + def deployment_version_for_current_task: -> untyped + def history_length: -> Integer + def history_size_bytes: -> Integer + def is_replaying: -> bool + def timestamp: -> untyped + def jobs: -> untyped + def run_id: -> String + end + def self.new_completion_with_failure: ( run_id: String, error: Exception, @@ -45,7 +62,7 @@ module Temporalio def initialize: (Details details) -> void - def activate: (untyped activation) -> untyped + def activate: (_Activation activation) -> untyped def add_command: (untyped command) -> void @@ -104,4 +121,4 @@ module Temporalio end end end -end \ No newline at end of file +end diff --git a/temporalio/sig/temporalio/worker_deployment_version.rbs b/temporalio/sig/temporalio/worker_deployment_version.rbs index 5f3636a2..13bef982 100644 --- a/temporalio/sig/temporalio/worker_deployment_version.rbs +++ b/temporalio/sig/temporalio/worker_deployment_version.rbs @@ -5,7 +5,9 @@ module Temporalio def self.from_canonical_string: (String canonical) -> WorkerDeploymentVersion - def self._from_bridge: (Internal::Bridge::Worker::WorkerDeploymentVersion? bridge) -> WorkerDeploymentVersion? + def self._from_bridge: ( + (Internal::Bridge::Worker::WorkerDeploymentVersion | Internal::Bridge::Api::Common::WorkerDeploymentVersion)? bridge + ) -> WorkerDeploymentVersion? def initialize: (deployment_name: String, build_id: String) -> void diff --git a/temporalio/test/proto_gen_test.rb b/temporalio/test/proto_gen_test.rb new file mode 100644 index 00000000..3da2a500 --- /dev/null +++ b/temporalio/test/proto_gen_test.rb @@ -0,0 +1,40 @@ +# frozen_string_literal: true + +require 'test' +require 'tmpdir' + +require_relative '../extra/proto_gen' + +class ProtoGenTest < Test + def test_normalize_generated_rbs_preserves_repeated_enum_iteration_type + content = <<~RBS + module Example + class Message + attr_accessor enum_values(): ::Google::Protobuf::RepeatedField[::Example::SomeEnum::names | ::Integer, ::Example::SomeEnum::strings | ::Integer, ::Example::SomeEnum] + attr_accessor child_messages(): ::Google::Protobuf::RepeatedField[::Example::ChildMessage, ::Example::ChildMessage] + end + end + RBS + + normalized_content = normalize_rbs(content) + + assert_includes normalized_content, + 'attr_accessor enum_values(): (::Google::Protobuf::RepeatedField & ' \ + '::Google::Protobuf::_RepeatedEnumField[::Example::SomeEnum::names | ::Integer])' + assert_includes normalized_content, + 'attr_accessor child_messages(): ::Google::Protobuf::RepeatedField' + end + + private + + def normalize_rbs(content) + Dir.mktmpdir do |dir| + path = File.join(dir, 'example_pb.rbs') + File.write(path, content) + + ProtoGen.new.send(:normalize_generated_rbs!, path) + + File.read(File.join(dir, 'example.rbs')) + end + end +end diff --git a/temporalio/test/sig/proto_gen_test.rbs b/temporalio/test/sig/proto_gen_test.rbs new file mode 100644 index 00000000..caa00f9c --- /dev/null +++ b/temporalio/test/sig/proto_gen_test.rbs @@ -0,0 +1,9 @@ +class Dir + def self.mktmpdir: () { (String dir) -> untyped } -> untyped +end + +class ProtoGenTest < Test + private + + def normalize_rbs: (String content) -> String +end diff --git a/temporalio/test/worker/workflow_instance_test.rb b/temporalio/test/worker/workflow_instance_test.rb index 5a01bed6..b2c7028d 100644 --- a/temporalio/test/worker/workflow_instance_test.rb +++ b/temporalio/test/worker/workflow_instance_test.rb @@ -51,7 +51,7 @@ def test_continue_as_new_suggestion_reasons_are_visible_as_workflow_enum_ints failure_converter: data_converter.failure_converter, interceptors: [], disable_eager_activity_execution: false, - illegal_calls: nil, + illegal_calls: {}, workflow_failure_exception_types: [], unsafe_workflow_io_enabled: false, assert_valid_local_activity: ->(_) {} From 7d1f5e3fd90fb67c4eb6b42e94a869283f291280 Mon Sep 17 00:00:00 2001 From: "Jason J. Liggayu" <9956289+jasonligg@users.noreply.github.com> Date: Thu, 25 Jun 2026 14:55:56 -0400 Subject: [PATCH 3/4] Revert "spike: Preserve type info during each/map with Activation interface" This reverts commit 5d96c613300ed4d59cd90dd00a12eb4e347ba45c. --- temporalio/extra/proto_gen.rb | 4 -- temporalio/sig/google/protobuf_compat.rbs | 5 --- .../sig/temporalio/api/common/v1/message.rbs | 6 +-- .../sig/temporalio/api/compute/v1/config.rbs | 12 +++--- .../api/errordetails/v1/message.rbs | 6 +-- .../sig/temporalio/api/history/v1/message.rbs | 6 +-- .../options/openapiv2.rbs | 18 ++++----- .../temporalio/api/taskqueue/v1/message.rbs | 6 +-- .../workflowservice/v1/request_response.rbs | 18 ++++----- .../workflow_activation.rbs | 6 +-- .../internal/worker/workflow_instance.rbs | 21 +--------- .../temporalio/worker_deployment_version.rbs | 4 +- temporalio/test/proto_gen_test.rb | 40 ------------------- temporalio/test/sig/proto_gen_test.rbs | 9 ----- .../test/worker/workflow_instance_test.rb | 2 +- 15 files changed, 43 insertions(+), 120 deletions(-) delete mode 100644 temporalio/test/proto_gen_test.rb delete mode 100644 temporalio/test/sig/proto_gen_test.rbs diff --git a/temporalio/extra/proto_gen.rb b/temporalio/extra/proto_gen.rb index 8a2ee6e0..182cdfeb 100644 --- a/temporalio/extra/proto_gen.rb +++ b/temporalio/extra/proto_gen.rb @@ -473,10 +473,6 @@ def normalize_generated_rbs!(path) /\(::Google::Protobuf::EnumDescriptor & ::Google::Protobuf::_SpecificEnumDescriptor\[[^\]]+\]\)/, '::Google::Protobuf::EnumDescriptor' ) - content.gsub!( - /::Google::Protobuf::RepeatedField\[([^,\]]*::names[^,\]]*), [^\]]+\]/, - '(::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[\1])' - ) content.gsub!(/::Google::Protobuf::RepeatedField\[[^\]]+\]/, '::Google::Protobuf::RepeatedField') content.gsub!( /::Google::Protobuf::Map\[([^,\]]+), ([^,\]]+), [^\]]+\]/, diff --git a/temporalio/sig/google/protobuf_compat.rbs b/temporalio/sig/google/protobuf_compat.rbs index 7195e03e..a39fc28b 100644 --- a/temporalio/sig/google/protobuf_compat.rbs +++ b/temporalio/sig/google/protobuf_compat.rbs @@ -10,11 +10,6 @@ module Google class Empty < AbstractMessage end - interface _RepeatedEnumField[out Elem] - def each: () { (Elem value) -> void } -> void - def map: [T] () { (Elem value) -> T } -> ::Array[T] - end - class DoubleValue < AbstractMessage attr_accessor value(): Float end diff --git a/temporalio/sig/temporalio/api/common/v1/message.rbs b/temporalio/sig/temporalio/api/common/v1/message.rbs index 4a927c17..153dc1dc 100644 --- a/temporalio/sig/temporalio/api/common/v1/message.rbs +++ b/temporalio/sig/temporalio/api/common/v1/message.rbs @@ -464,7 +464,7 @@ module Temporalio def clear_current_run_only: () -> void # Event types not to be reapplied - attr_accessor reset_reapply_exclude_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer]) + attr_accessor reset_reapply_exclude_types(): ::Google::Protobuf::RepeatedField attr_reader reset_reapply_exclude_types_const(): ::Array[::Integer] def clear_reset_reapply_exclude_types: () -> void @@ -499,7 +499,7 @@ module Temporalio | ("build_id" name) -> ::String | ("reset_reapply_type" name) -> (::Temporalio::Api::Enums::V1::ResetReapplyType::names | ::Integer) | ("current_run_only" name) -> bool - | ("reset_reapply_exclude_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer])) + | ("reset_reapply_exclude_types" name) -> (::Google::Protobuf::RepeatedField) def []=: ("first_workflow_task" name, ::Google::Protobuf::Empty? value) -> void @@ -508,7 +508,7 @@ module Temporalio | ("build_id" name, ((::String | ::Symbol)?) value) -> void | ("reset_reapply_type" name, (::Temporalio::Api::Enums::V1::ResetReapplyType::names | ::Temporalio::Api::Enums::V1::ResetReapplyType::strings | ::Integer | ::Float) value) -> void | ("current_run_only" name, bool value) -> void - | ("reset_reapply_exclude_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer])) value) -> void + | ("reset_reapply_exclude_types" name, (::Google::Protobuf::RepeatedField) value) -> void end # Callback to attach to various events in the system, e.g. workflow run completion. diff --git a/temporalio/sig/temporalio/api/compute/v1/config.rbs b/temporalio/sig/temporalio/api/compute/v1/config.rbs index 82b56907..51b5acc1 100644 --- a/temporalio/sig/temporalio/api/compute/v1/config.rbs +++ b/temporalio/sig/temporalio/api/compute/v1/config.rbs @@ -14,7 +14,7 @@ module Temporalio # Optional. The set of task queue types this scaling group serves. # If not provided, this scaling group serves all not otherwise defined # task types. - attr_accessor task_queue_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer]) + attr_accessor task_queue_types(): ::Google::Protobuf::RepeatedField attr_reader task_queue_types_const(): ::Array[::Integer] def clear_task_queue_types: () -> void @@ -42,12 +42,12 @@ module Temporalio def initialize: (?init_map initial_value) -> void def []: - ("task_queue_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) + ("task_queue_types" name) -> (::Google::Protobuf::RepeatedField) | ("provider" name) -> ::Temporalio::Api::Compute::V1::ComputeProvider? | ("scaler" name) -> ::Temporalio::Api::Compute::V1::ComputeScaler? def []=: - ("task_queue_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) value) -> void + ("task_queue_types" name, (::Google::Protobuf::RepeatedField) value) -> void | ("provider" name, ::Temporalio::Api::Compute::V1::ComputeProvider? value) -> void | ("scaler" name, ::Temporalio::Api::Compute::V1::ComputeScaler? value) -> void end @@ -137,7 +137,7 @@ module Temporalio class ComputeConfigScalingGroupSummary < ::Google::Protobuf::AbstractMessage - attr_accessor task_queue_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer]) + attr_accessor task_queue_types(): ::Google::Protobuf::RepeatedField attr_reader task_queue_types_const(): ::Array[::Integer] def clear_task_queue_types: () -> void @@ -155,11 +155,11 @@ module Temporalio def initialize: (?init_map initial_value) -> void def []: - ("task_queue_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) + ("task_queue_types" name) -> (::Google::Protobuf::RepeatedField) | ("provider_type" name) -> ::String def []=: - ("task_queue_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) value) -> void + ("task_queue_types" name, (::Google::Protobuf::RepeatedField) value) -> void | ("provider_type" name, (::String | ::Symbol) value) -> void end end diff --git a/temporalio/sig/temporalio/api/errordetails/v1/message.rbs b/temporalio/sig/temporalio/api/errordetails/v1/message.rbs index 2d462fb9..adfd1995 100644 --- a/temporalio/sig/temporalio/api/errordetails/v1/message.rbs +++ b/temporalio/sig/temporalio/api/errordetails/v1/message.rbs @@ -138,7 +138,7 @@ module Temporalio # Allowed namespace states for requested operation. # For example NAMESPACE_STATE_DELETED is forbidden for most operations but allowed for DescribeNamespace. - attr_accessor allowed_states(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::NamespaceState::names | ::Integer]) + attr_accessor allowed_states(): ::Google::Protobuf::RepeatedField attr_reader allowed_states_const(): ::Array[::Integer] def clear_allowed_states: () -> void @@ -156,12 +156,12 @@ module Temporalio def []: ("namespace" name) -> ::String | ("state" name) -> (::Temporalio::Api::Enums::V1::NamespaceState::names | ::Integer) - | ("allowed_states" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::NamespaceState::names | ::Integer])) + | ("allowed_states" name) -> (::Google::Protobuf::RepeatedField) def []=: ("namespace" name, (::String | ::Symbol) value) -> void | ("state" name, (::Temporalio::Api::Enums::V1::NamespaceState::names | ::Temporalio::Api::Enums::V1::NamespaceState::strings | ::Integer | ::Float) value) -> void - | ("allowed_states" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::NamespaceState::names | ::Integer])) value) -> void + | ("allowed_states" name, (::Google::Protobuf::RepeatedField) value) -> void end class NamespaceNotFoundFailure < ::Google::Protobuf::AbstractMessage diff --git a/temporalio/sig/temporalio/api/history/v1/message.rbs b/temporalio/sig/temporalio/api/history/v1/message.rbs index efce9438..9aa5fe50 100644 --- a/temporalio/sig/temporalio/api/history/v1/message.rbs +++ b/temporalio/sig/temporalio/api/history/v1/message.rbs @@ -859,7 +859,7 @@ module Temporalio # The reason(s) that suggest_continue_as_new is true, if it is. # Unset if suggest_continue_as_new is false. - attr_accessor suggest_continue_as_new_reasons(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer]) + attr_accessor suggest_continue_as_new_reasons(): ::Google::Protobuf::RepeatedField attr_reader suggest_continue_as_new_reasons_const(): ::Array[::Integer] def clear_suggest_continue_as_new_reasons: () -> void @@ -919,7 +919,7 @@ module Temporalio | ("identity" name) -> ::String | ("request_id" name) -> ::String | ("suggest_continue_as_new" name) -> bool - | ("suggest_continue_as_new_reasons" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer])) + | ("suggest_continue_as_new_reasons" name) -> (::Google::Protobuf::RepeatedField) | ("target_worker_deployment_version_changed" name) -> bool | ("history_size_bytes" name) -> ::Integer | ("worker_version" name) -> ::Temporalio::Api::Common::V1::WorkerVersionStamp? @@ -930,7 +930,7 @@ module Temporalio | ("identity" name, (::String | ::Symbol) value) -> void | ("request_id" name, (::String | ::Symbol) value) -> void | ("suggest_continue_as_new" name, bool value) -> void - | ("suggest_continue_as_new_reasons" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer])) value) -> void + | ("suggest_continue_as_new_reasons" name, (::Google::Protobuf::RepeatedField) value) -> void | ("target_worker_deployment_version_changed" name, bool value) -> void | ("history_size_bytes" name, (::Integer | ::Float) value) -> void | ("worker_version" name, ::Temporalio::Api::Common::V1::WorkerVersionStamp? value) -> void diff --git a/temporalio/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs b/temporalio/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs index bbc12a73..f3e822f5 100644 --- a/temporalio/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs +++ b/temporalio/sig/temporalio/api/protoc_gen_openapiv2/options/openapiv2.rbs @@ -70,7 +70,7 @@ module Grpc # The transfer protocol of the API. Values MUST be from the list: "http", # "https", "ws", "wss". If the schemes is not included, the default scheme to # be used is the one used to access the OpenAPI definition itself. - attr_accessor schemes(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer]) + attr_accessor schemes(): ::Google::Protobuf::RepeatedField attr_reader schemes_const(): ::Array[::Integer] def clear_schemes: () -> void @@ -155,7 +155,7 @@ module Grpc | ("info" name) -> ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Info? | ("host" name) -> ::String | ("base_path" name) -> ::String - | ("schemes" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer])) + | ("schemes" name) -> (::Google::Protobuf::RepeatedField) | ("consumes" name) -> (::Google::Protobuf::RepeatedField) | ("produces" name) -> (::Google::Protobuf::RepeatedField) | ("responses" name) -> (::Google::Protobuf::Map[::String, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Response]) @@ -170,7 +170,7 @@ module Grpc | ("info" name, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Info? value) -> void | ("host" name, (::String | ::Symbol) value) -> void | ("base_path" name, (::String | ::Symbol) value) -> void - | ("schemes" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer])) value) -> void + | ("schemes" name, (::Google::Protobuf::RepeatedField) value) -> void | ("consumes" name, (::Google::Protobuf::RepeatedField) value) -> void | ("produces" name, (::Google::Protobuf::RepeatedField) value) -> void | ("responses" name, (::Google::Protobuf::Map[::String, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Response]) value) -> void @@ -254,7 +254,7 @@ module Grpc # The transfer protocol for the operation. Values MUST be from the list: # "http", "https", "ws", "wss". The value overrides the OpenAPI Object # schemes definition. - attr_accessor schemes(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer]) + attr_accessor schemes(): ::Google::Protobuf::RepeatedField attr_reader schemes_const(): ::Array[::Integer] def clear_schemes: () -> void @@ -324,7 +324,7 @@ module Grpc | ("consumes" name) -> (::Google::Protobuf::RepeatedField) | ("produces" name) -> (::Google::Protobuf::RepeatedField) | ("responses" name) -> (::Google::Protobuf::Map[::String, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Response]) - | ("schemes" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer])) + | ("schemes" name) -> (::Google::Protobuf::RepeatedField) | ("deprecated" name) -> bool | ("security" name) -> ::Google::Protobuf::RepeatedField | ("extensions" name) -> (::Google::Protobuf::Map[::String, ::Google::Protobuf::Value]) @@ -339,7 +339,7 @@ module Grpc | ("consumes" name, (::Google::Protobuf::RepeatedField) value) -> void | ("produces" name, (::Google::Protobuf::RepeatedField) value) -> void | ("responses" name, (::Google::Protobuf::Map[::String, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::Response]) value) -> void - | ("schemes" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::Scheme::names | ::Integer])) value) -> void + | ("schemes" name, (::Google::Protobuf::RepeatedField) value) -> void | ("deprecated" name, bool value) -> void | ("security" name, ::Google::Protobuf::RepeatedField value) -> void | ("extensions" name, (::Google::Protobuf::Map[::String, ::Google::Protobuf::Value]) value) -> void @@ -1168,7 +1168,7 @@ module Grpc attr_accessor array(): ::Google::Protobuf::RepeatedField def clear_array: () -> void - attr_accessor type(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::JSONSchemaSimpleTypes::names | ::Integer]) + attr_accessor type(): ::Google::Protobuf::RepeatedField attr_reader type_const(): ::Array[::Integer] def clear_type: () -> void @@ -1271,7 +1271,7 @@ module Grpc | ("min_properties" name) -> ::Integer | ("required" name) -> (::Google::Protobuf::RepeatedField) | ("array" name) -> (::Google::Protobuf::RepeatedField) - | ("type" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::JSONSchemaSimpleTypes::names | ::Integer])) + | ("type" name) -> (::Google::Protobuf::RepeatedField) | ("format" name) -> ::String | ("enum" name) -> (::Google::Protobuf::RepeatedField) | ("field_configuration" name) -> ::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::FieldConfiguration? @@ -1299,7 +1299,7 @@ module Grpc | ("min_properties" name, (::Integer | ::Float) value) -> void | ("required" name, (::Google::Protobuf::RepeatedField) value) -> void | ("array" name, (::Google::Protobuf::RepeatedField) value) -> void - | ("type" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::JSONSchemaSimpleTypes::names | ::Integer])) value) -> void + | ("type" name, (::Google::Protobuf::RepeatedField) value) -> void | ("format" name, (::String | ::Symbol) value) -> void | ("enum" name, (::Google::Protobuf::RepeatedField) value) -> void | ("field_configuration" name, ::Grpc::Gateway::ProtocGenOpenapiv2::Options::JSONSchema::FieldConfiguration? value) -> void diff --git a/temporalio/sig/temporalio/api/taskqueue/v1/message.rbs b/temporalio/sig/temporalio/api/taskqueue/v1/message.rbs index fdae8475..7a43362a 100644 --- a/temporalio/sig/temporalio/api/taskqueue/v1/message.rbs +++ b/temporalio/sig/temporalio/api/taskqueue/v1/message.rbs @@ -569,7 +569,7 @@ module Temporalio # Task reachability for a worker in a single task queue. # See the TaskReachability docstring for information about each enum variant. # If reachability is empty, this worker is considered unreachable in this task queue. - attr_accessor reachability(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskReachability::names | ::Integer]) + attr_accessor reachability(): ::Google::Protobuf::RepeatedField attr_reader reachability_const(): ::Array[::Integer] def clear_reachability: () -> void @@ -584,11 +584,11 @@ module Temporalio def []: ("task_queue" name) -> ::String - | ("reachability" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskReachability::names | ::Integer])) + | ("reachability" name) -> (::Google::Protobuf::RepeatedField) def []=: ("task_queue" name, (::String | ::Symbol) value) -> void - | ("reachability" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskReachability::names | ::Integer])) value) -> void + | ("reachability" name, (::Google::Protobuf::RepeatedField) value) -> void end # Reachability of tasks for a worker by build id, in one or more task queues. diff --git a/temporalio/sig/temporalio/api/workflowservice/v1/request_response.rbs b/temporalio/sig/temporalio/api/workflowservice/v1/request_response.rbs index bdf114bf..da688807 100644 --- a/temporalio/sig/temporalio/api/workflowservice/v1/request_response.rbs +++ b/temporalio/sig/temporalio/api/workflowservice/v1/request_response.rbs @@ -3348,7 +3348,7 @@ module Temporalio def clear_reset_reapply_type: () -> void # Event types not to be reapplied - attr_accessor reset_reapply_exclude_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer]) + attr_accessor reset_reapply_exclude_types(): ::Google::Protobuf::RepeatedField attr_reader reset_reapply_exclude_types_const(): ::Array[::Integer] def clear_reset_reapply_exclude_types: () -> void @@ -3393,7 +3393,7 @@ module Temporalio | ("workflow_task_finish_event_id" name) -> ::Integer | ("request_id" name) -> ::String | ("reset_reapply_type" name) -> (::Temporalio::Api::Enums::V1::ResetReapplyType::names | ::Integer) - | ("reset_reapply_exclude_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer])) + | ("reset_reapply_exclude_types" name) -> (::Google::Protobuf::RepeatedField) | ("post_reset_operations" name) -> ::Google::Protobuf::RepeatedField | ("identity" name) -> ::String @@ -3404,7 +3404,7 @@ module Temporalio | ("workflow_task_finish_event_id" name, (::Integer | ::Float) value) -> void | ("request_id" name, (::String | ::Symbol) value) -> void | ("reset_reapply_type" name, (::Temporalio::Api::Enums::V1::ResetReapplyType::names | ::Temporalio::Api::Enums::V1::ResetReapplyType::strings | ::Integer | ::Float) value) -> void - | ("reset_reapply_exclude_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::ResetReapplyExcludeType::names | ::Integer])) value) -> void + | ("reset_reapply_exclude_types" name, (::Google::Protobuf::RepeatedField) value) -> void | ("post_reset_operations" name, ::Google::Protobuf::RepeatedField value) -> void | ("identity" name, (::String | ::Symbol) value) -> void end @@ -4236,7 +4236,7 @@ module Temporalio # Task queue types that help server cancel outstanding poll RPC # calls from SDK. This avoids a race condition that can lead to tasks being lost. - attr_accessor task_queue_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer]) + attr_accessor task_queue_types(): ::Google::Protobuf::RepeatedField attr_reader task_queue_types_const(): ::Array[::Integer] def clear_task_queue_types: () -> void @@ -4269,7 +4269,7 @@ module Temporalio | ("worker_heartbeat" name) -> ::Temporalio::Api::Worker::V1::WorkerHeartbeat? | ("worker_instance_key" name) -> ::String | ("task_queue" name) -> ::String - | ("task_queue_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) + | ("task_queue_types" name) -> (::Google::Protobuf::RepeatedField) def []=: ("namespace" name, (::String | ::Symbol) value) -> void @@ -4279,7 +4279,7 @@ module Temporalio | ("worker_heartbeat" name, ::Temporalio::Api::Worker::V1::WorkerHeartbeat? value) -> void | ("worker_instance_key" name, (::String | ::Symbol) value) -> void | ("task_queue" name, (::String | ::Symbol) value) -> void - | ("task_queue_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) value) -> void + | ("task_queue_types" name, (::Google::Protobuf::RepeatedField) value) -> void end class ShutdownWorkerResponse < ::Google::Protobuf::AbstractMessage @@ -4521,7 +4521,7 @@ module Temporalio # Deprecated (as part of the ENHANCED mode deprecation). # Task queue types to report info about. If not specified, all types are considered. # @deprecated - attr_accessor task_queue_types(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer]) + attr_accessor task_queue_types(): ::Google::Protobuf::RepeatedField attr_reader task_queue_types_const(): ::Array[::Integer] def clear_task_queue_types: () -> void @@ -4574,7 +4574,7 @@ module Temporalio | ("include_task_queue_status" name) -> bool | ("api_mode" name) -> (::Temporalio::Api::Enums::V1::DescribeTaskQueueMode::names | ::Integer) | ("versions" name) -> ::Temporalio::Api::TaskQueue::V1::TaskQueueVersionSelection? - | ("task_queue_types" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) + | ("task_queue_types" name) -> (::Google::Protobuf::RepeatedField) | ("report_pollers" name) -> bool | ("report_task_reachability" name) -> bool @@ -4587,7 +4587,7 @@ module Temporalio | ("include_task_queue_status" name, bool value) -> void | ("api_mode" name, (::Temporalio::Api::Enums::V1::DescribeTaskQueueMode::names | ::Temporalio::Api::Enums::V1::DescribeTaskQueueMode::strings | ::Integer | ::Float) value) -> void | ("versions" name, ::Temporalio::Api::TaskQueue::V1::TaskQueueVersionSelection? value) -> void - | ("task_queue_types" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::TaskQueueType::names | ::Integer])) value) -> void + | ("task_queue_types" name, (::Google::Protobuf::RepeatedField) value) -> void | ("report_pollers" name, bool value) -> void | ("report_task_reachability" name, bool value) -> void end diff --git a/temporalio/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs b/temporalio/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs index 09fc2176..240e6569 100644 --- a/temporalio/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs +++ b/temporalio/sig/temporalio/internal/bridge/api/workflow_activation/workflow_activation.rbs @@ -110,7 +110,7 @@ module Temporalio # Experimental. Optionally decide the versioning behavior that the first task of the new run should use. # For example, choose to AutoUpgrade on continue-as-new instead of inheriting the pinned version # of the previous run. - attr_accessor suggest_continue_as_new_reasons(): (::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer]) + attr_accessor suggest_continue_as_new_reasons(): ::Google::Protobuf::RepeatedField attr_reader suggest_continue_as_new_reasons_const(): ::Array[::Integer] def clear_suggest_continue_as_new_reasons: () -> void @@ -160,7 +160,7 @@ module Temporalio | ("continue_as_new_suggested" name) -> bool | ("deployment_version_for_current_task" name) -> ::Temporalio::Internal::Bridge::Api::Common::WorkerDeploymentVersion? | ("last_sdk_version" name) -> ::String - | ("suggest_continue_as_new_reasons" name) -> ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer])) + | ("suggest_continue_as_new_reasons" name) -> (::Google::Protobuf::RepeatedField) | ("target_worker_deployment_version_changed" name) -> bool def []=: @@ -174,7 +174,7 @@ module Temporalio | ("continue_as_new_suggested" name, bool value) -> void | ("deployment_version_for_current_task" name, ::Temporalio::Internal::Bridge::Api::Common::WorkerDeploymentVersion? value) -> void | ("last_sdk_version" name, (::String | ::Symbol) value) -> void - | ("suggest_continue_as_new_reasons" name, ((::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer])) value) -> void + | ("suggest_continue_as_new_reasons" name, (::Google::Protobuf::RepeatedField) value) -> void | ("target_worker_deployment_version_changed" name, bool value) -> void end diff --git a/temporalio/sig/temporalio/internal/worker/workflow_instance.rbs b/temporalio/sig/temporalio/internal/worker/workflow_instance.rbs index 90300e85..e2bc55e3 100644 --- a/temporalio/sig/temporalio/internal/worker/workflow_instance.rbs +++ b/temporalio/sig/temporalio/internal/worker/workflow_instance.rbs @@ -2,23 +2,6 @@ module Temporalio module Internal module Worker class WorkflowInstance - interface _Activation - def continue_as_new_suggested: -> bool - def suggest_continue_as_new_reasons: -> ( - ::Google::Protobuf::RepeatedField & ::Google::Protobuf::_RepeatedEnumField[ - ::Temporalio::Api::Enums::V1::SuggestContinueAsNewReason::names | ::Integer - ] - ) - def target_worker_deployment_version_changed: -> bool - def deployment_version_for_current_task: -> untyped - def history_length: -> Integer - def history_size_bytes: -> Integer - def is_replaying: -> bool - def timestamp: -> untyped - def jobs: -> untyped - def run_id: -> String - end - def self.new_completion_with_failure: ( run_id: String, error: Exception, @@ -62,7 +45,7 @@ module Temporalio def initialize: (Details details) -> void - def activate: (_Activation activation) -> untyped + def activate: (untyped activation) -> untyped def add_command: (untyped command) -> void @@ -121,4 +104,4 @@ module Temporalio end end end -end +end \ No newline at end of file diff --git a/temporalio/sig/temporalio/worker_deployment_version.rbs b/temporalio/sig/temporalio/worker_deployment_version.rbs index 13bef982..5f3636a2 100644 --- a/temporalio/sig/temporalio/worker_deployment_version.rbs +++ b/temporalio/sig/temporalio/worker_deployment_version.rbs @@ -5,9 +5,7 @@ module Temporalio def self.from_canonical_string: (String canonical) -> WorkerDeploymentVersion - def self._from_bridge: ( - (Internal::Bridge::Worker::WorkerDeploymentVersion | Internal::Bridge::Api::Common::WorkerDeploymentVersion)? bridge - ) -> WorkerDeploymentVersion? + def self._from_bridge: (Internal::Bridge::Worker::WorkerDeploymentVersion? bridge) -> WorkerDeploymentVersion? def initialize: (deployment_name: String, build_id: String) -> void diff --git a/temporalio/test/proto_gen_test.rb b/temporalio/test/proto_gen_test.rb deleted file mode 100644 index 3da2a500..00000000 --- a/temporalio/test/proto_gen_test.rb +++ /dev/null @@ -1,40 +0,0 @@ -# frozen_string_literal: true - -require 'test' -require 'tmpdir' - -require_relative '../extra/proto_gen' - -class ProtoGenTest < Test - def test_normalize_generated_rbs_preserves_repeated_enum_iteration_type - content = <<~RBS - module Example - class Message - attr_accessor enum_values(): ::Google::Protobuf::RepeatedField[::Example::SomeEnum::names | ::Integer, ::Example::SomeEnum::strings | ::Integer, ::Example::SomeEnum] - attr_accessor child_messages(): ::Google::Protobuf::RepeatedField[::Example::ChildMessage, ::Example::ChildMessage] - end - end - RBS - - normalized_content = normalize_rbs(content) - - assert_includes normalized_content, - 'attr_accessor enum_values(): (::Google::Protobuf::RepeatedField & ' \ - '::Google::Protobuf::_RepeatedEnumField[::Example::SomeEnum::names | ::Integer])' - assert_includes normalized_content, - 'attr_accessor child_messages(): ::Google::Protobuf::RepeatedField' - end - - private - - def normalize_rbs(content) - Dir.mktmpdir do |dir| - path = File.join(dir, 'example_pb.rbs') - File.write(path, content) - - ProtoGen.new.send(:normalize_generated_rbs!, path) - - File.read(File.join(dir, 'example.rbs')) - end - end -end diff --git a/temporalio/test/sig/proto_gen_test.rbs b/temporalio/test/sig/proto_gen_test.rbs deleted file mode 100644 index caa00f9c..00000000 --- a/temporalio/test/sig/proto_gen_test.rbs +++ /dev/null @@ -1,9 +0,0 @@ -class Dir - def self.mktmpdir: () { (String dir) -> untyped } -> untyped -end - -class ProtoGenTest < Test - private - - def normalize_rbs: (String content) -> String -end diff --git a/temporalio/test/worker/workflow_instance_test.rb b/temporalio/test/worker/workflow_instance_test.rb index b2c7028d..5a01bed6 100644 --- a/temporalio/test/worker/workflow_instance_test.rb +++ b/temporalio/test/worker/workflow_instance_test.rb @@ -51,7 +51,7 @@ def test_continue_as_new_suggestion_reasons_are_visible_as_workflow_enum_ints failure_converter: data_converter.failure_converter, interceptors: [], disable_eager_activity_execution: false, - illegal_calls: {}, + illegal_calls: nil, workflow_failure_exception_types: [], unsafe_workflow_io_enabled: false, assert_valid_local_activity: ->(_) {} From 8c93b5b82fdc80a1ab978d71fcb80e4d0a010e24 Mon Sep 17 00:00:00 2001 From: "Jason J. Liggayu" <9956289+jasonligg@users.noreply.github.com> Date: Thu, 25 Jun 2026 15:12:37 -0400 Subject: [PATCH 4/4] Move changelog note for backoff_start_interval to Unreleased Added section --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c0e24f8..d7aa2cc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,10 @@ to docs, or any other relevant information. ## [Unreleased] +### Added + +- Exposed `Temporalio::Workflow::ContinueAsNewError#backoff_start_interval`, to allow the new workflow to start after a delay. + ### Fixed #### `Workflow.suggest_continue_as_new_reasons` returns workflow enum values @@ -44,8 +48,6 @@ Existing workflow-only code paths are unaffected at runtime. The recommended mig ### Added -- Exposed `Temporalio::Workflow::ContinueAsNewError#backoff_start_interval`, to allow the new workflow to start after a delay. - #### Standalone Activities Activities can now be started directly from a client, independently of any workflow. `Client#start_activity`