From 2c30438762fe8052b8925262ebe2f138853611c7 Mon Sep 17 00:00:00 2001 From: Mohammad Dashti Date: Sat, 17 Oct 2026 23:52:12 -0700 Subject: [PATCH 1/6] Pinned the stream crate and regenerated the stream protos. --- scripts/gen_protos.py | 5 + temporalio/api/enums/v1/__init__.py | 2 + temporalio/api/enums/v1/stream_pb2.py | 35 + temporalio/api/enums/v1/stream_pb2.pyi | 77 + temporalio/api/history/v1/message_pb2.py | 267 +-- temporalio/api/history/v1/message_pb2.pyi | 18 + temporalio/api/stream/__init__.py | 0 temporalio/api/stream/v1/__init__.py | 17 + temporalio/api/stream/v1/message_pb2.py | 156 ++ temporalio/api/stream/v1/message_pb2.pyi | 420 +++++ temporalio/api/workflowservice/v1/__init__.py | 30 + .../v1/stream_request_response_pb2.py | 287 +++ .../v1/stream_request_response_pb2.pyi | 654 +++++++ .../v1/stream_request_response_pb2_grpc.py | 4 + .../v1/stream_request_response_pb2_grpc.pyi | 4 + temporalio/bridge/Cargo.lock | 5 +- temporalio/bridge/Cargo.toml | 2 +- temporalio/bridge/proto/streams/__init__.py | 48 + .../bridge/proto/streams/streams_pb2.py | 530 +++++- .../bridge/proto/streams/streams_pb2.pyi | 1620 +++++++++++++++-- .../bridge/proto/streams/v1/__init__.py | 3 +- .../bridge/proto/streams/v1/message_pb2.py | 38 +- .../bridge/proto/streams/v1/message_pb2.pyi | 148 +- .../proto/workflow_activation/__init__.py | 2 + .../workflow_activation_pb2.py | 125 +- .../workflow_activation_pb2.pyi | 39 + .../workflow_completion_pb2.py | 8 +- .../workflow_completion_pb2.pyi | 11 + temporalio/bridge/sdk-core | 2 +- temporalio/bridge/streams_generated.py | 79 + 30 files changed, 4241 insertions(+), 395 deletions(-) create mode 100644 temporalio/api/enums/v1/stream_pb2.py create mode 100644 temporalio/api/enums/v1/stream_pb2.pyi create mode 100644 temporalio/api/stream/__init__.py create mode 100644 temporalio/api/stream/v1/__init__.py create mode 100644 temporalio/api/stream/v1/message_pb2.py create mode 100644 temporalio/api/stream/v1/message_pb2.pyi create mode 100644 temporalio/api/workflowservice/v1/stream_request_response_pb2.py create mode 100644 temporalio/api/workflowservice/v1/stream_request_response_pb2.pyi create mode 100644 temporalio/api/workflowservice/v1/stream_request_response_pb2_grpc.py create mode 100644 temporalio/api/workflowservice/v1/stream_request_response_pb2_grpc.pyi diff --git a/scripts/gen_protos.py b/scripts/gen_protos.py index f7f8edca87..b1924f2fca 100644 --- a/scripts/gen_protos.py +++ b/scripts/gen_protos.py @@ -47,6 +47,9 @@ def find_streams_proto_dir() -> Path: streams_proto_dir = find_streams_proto_dir() +# The stream API that the crate carries until it lands upstream. Core's api_upstream does not have +# it, so its modules go into temporalio.api from here. +streams_api_proto_dir = streams_proto_dir / "api_stream" # Exclude testsrv dependencies protos proto_paths = [ @@ -58,6 +61,7 @@ def find_streams_proto_dir() -> Path: ] # The crate's api_include copy is left out, since api_upstream generates those modules. proto_paths.extend((streams_proto_dir / "temporal").glob("**/*.proto")) +proto_paths.extend(streams_api_proto_dir.glob("**/*.proto")) proto_paths.extend(test_proto_dir.glob("**/*.proto")) proto_paths.extend(additional_proto_dir.glob("**/*.proto")) @@ -216,6 +220,7 @@ def generate_protos(output_dir: Path): sys.executable, "-mgrpc_tools.protoc", f"--proto_path={api_proto_dir}", + f"--proto_path={streams_api_proto_dir}", f"--proto_path={api_cloud_proto_dir}", f"--proto_path={core_proto_dir}", f"--proto_path={testsrv_proto_dir}", diff --git a/temporalio/api/enums/v1/__init__.py b/temporalio/api/enums/v1/__init__.py index 518a2f32bc..cd3b4d20cc 100644 --- a/temporalio/api/enums/v1/__init__.py +++ b/temporalio/api/enums/v1/__init__.py @@ -44,6 +44,7 @@ from .query_pb2 import QueryRejectCondition, QueryResultType from .reset_pb2 import ResetReapplyExcludeType, ResetReapplyType, ResetType from .schedule_pb2 import ScheduleOverlapPolicy +from .stream_pb2 import StreamOwnerKind from .task_queue_pb2 import ( BuildIdTaskReachability, DescribeTaskQueueMode, @@ -120,6 +121,7 @@ "Severity", "SignalExternalWorkflowExecutionFailedCause", "StartChildWorkflowExecutionFailedCause", + "StreamOwnerKind", "SuggestContinueAsNewReason", "TaskQueueKind", "TaskQueueType", diff --git a/temporalio/api/enums/v1/stream_pb2.py b/temporalio/api/enums/v1/stream_pb2.py new file mode 100644 index 0000000000..5571d5c4d8 --- /dev/null +++ b/temporalio/api/enums/v1/stream_pb2.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/enums/v1/stream.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import enum_type_wrapper + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b"\n\"temporal/api/enums/v1/stream.proto\x12\x15temporal.api.enums.v1*\x9d\x01\n\x0fStreamOwnerKind\x12!\n\x1dSTREAM_OWNER_KIND_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSTREAM_OWNER_KIND_WORKFLOW\x10\x01\x12\x1e\n\x1aSTREAM_OWNER_KIND_ACTIVITY\x10\x02\x12'\n#STREAM_OWNER_KIND_WORKFLOW_ACTIVITY\x10\x03\x42\x83\x01\n\x18io.temporal.api.enums.v1B\x0bStreamProtoP\x01Z!go.temporal.io/api/enums/v1;enums\xaa\x02\x17Temporalio.Api.Enums.V1\xea\x02\x1aTemporalio::Api::Enums::V1b\x06proto3" +) + +_STREAMOWNERKIND = DESCRIPTOR.enum_types_by_name["StreamOwnerKind"] +StreamOwnerKind = enum_type_wrapper.EnumTypeWrapper(_STREAMOWNERKIND) +STREAM_OWNER_KIND_UNSPECIFIED = 0 +STREAM_OWNER_KIND_WORKFLOW = 1 +STREAM_OWNER_KIND_ACTIVITY = 2 +STREAM_OWNER_KIND_WORKFLOW_ACTIVITY = 3 + + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b"\n\030io.temporal.api.enums.v1B\013StreamProtoP\001Z!go.temporal.io/api/enums/v1;enums\252\002\027Temporalio.Api.Enums.V1\352\002\032Temporalio::Api::Enums::V1" + _STREAMOWNERKIND._serialized_start = 62 + _STREAMOWNERKIND._serialized_end = 219 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/enums/v1/stream_pb2.pyi b/temporalio/api/enums/v1/stream_pb2.pyi new file mode 100644 index 0000000000..b2eb6b8810 --- /dev/null +++ b/temporalio/api/enums/v1/stream_pb2.pyi @@ -0,0 +1,77 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import sys +import typing + +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _StreamOwnerKind: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _StreamOwnerKindEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ + _StreamOwnerKind.ValueType + ], + builtins.type, +): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + STREAM_OWNER_KIND_UNSPECIFIED: _StreamOwnerKind.ValueType # 0 + STREAM_OWNER_KIND_WORKFLOW: _StreamOwnerKind.ValueType # 1 + """A Workflow owns the stream. The Workflow closes the stream itself, with a result or a + failure. If the Workflow's run chain ends with no close and callbacks are attached, the + stream notifier closes the stream with a failure within `streamnotifier.ownerCheckInterval`. + """ + STREAM_OWNER_KIND_ACTIVITY: _StreamOwnerKind.ValueType # 2 + """A standalone Activity owns the stream. The Activity closes the stream itself, with a result + or a failure. If the Activity run reaches a terminal status with no close and callbacks + are attached, the stream notifier closes the stream within + `streamnotifier.ownerCheckInterval`. A completed run gives no result. A failed, canceled, + terminated or timed-out run gives the run's own failure. + """ + STREAM_OWNER_KIND_WORKFLOW_ACTIVITY: _StreamOwnerKind.ValueType # 3 + """An Activity that a Workflow scheduled owns the stream. `workflow_id` names the Workflow, + `run_id` the run that scheduled the Activity, and `activity_id` the Activity. The stream + closes when the Workflow sees the Activity end. If the Activity is no longer pending in the + run and no close came, the stream notifier closes the stream with a failure, after + `streamnotifier.ownerStartGrace` from its start and `streamnotifier.ownerCloseGrace` from + the first check that found the Activity gone. + """ + +class StreamOwnerKind(_StreamOwnerKind, metaclass=_StreamOwnerKindEnumTypeWrapper): + """What owns a stream. The owner decides when the stream closes.""" + +STREAM_OWNER_KIND_UNSPECIFIED: StreamOwnerKind.ValueType # 0 +STREAM_OWNER_KIND_WORKFLOW: StreamOwnerKind.ValueType # 1 +"""A Workflow owns the stream. The Workflow closes the stream itself, with a result or a +failure. If the Workflow's run chain ends with no close and callbacks are attached, the +stream notifier closes the stream with a failure within `streamnotifier.ownerCheckInterval`. +""" +STREAM_OWNER_KIND_ACTIVITY: StreamOwnerKind.ValueType # 2 +"""A standalone Activity owns the stream. The Activity closes the stream itself, with a result +or a failure. If the Activity run reaches a terminal status with no close and callbacks +are attached, the stream notifier closes the stream within +`streamnotifier.ownerCheckInterval`. A completed run gives no result. A failed, canceled, +terminated or timed-out run gives the run's own failure. +""" +STREAM_OWNER_KIND_WORKFLOW_ACTIVITY: StreamOwnerKind.ValueType # 3 +"""An Activity that a Workflow scheduled owns the stream. `workflow_id` names the Workflow, +`run_id` the run that scheduled the Activity, and `activity_id` the Activity. The stream +closes when the Workflow sees the Activity end. If the Activity is no longer pending in the +run and no close came, the stream notifier closes the stream with a failure, after +`streamnotifier.ownerStartGrace` from its start and `streamnotifier.ownerCloseGrace` from +the first check that found the Activity gone. +""" +global___StreamOwnerKind = StreamOwnerKind diff --git a/temporalio/api/history/v1/message_pb2.py b/temporalio/api/history/v1/message_pb2.py index 7f406dccee..06b9499b64 100644 --- a/temporalio/api/history/v1/message_pb2.py +++ b/temporalio/api/history/v1/message_pb2.py @@ -14,6 +14,7 @@ _sym_db = _symbol_database.Default() +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 @@ -58,7 +59,7 @@ ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n%temporal/api/history/v1/message.proto\x12\x17temporal.api.history.v1\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a&temporal/api/enums/v1/event_type.proto\x1a(temporal/api/enums/v1/failed_cause.proto\x1a"temporal/api/enums/v1/update.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a$temporal/api/common/v1/message.proto\x1a(temporal/api/deployment/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a\'temporal/api/taskqueue/v1/message.proto\x1a$temporal/api/update/v1/message.proto\x1a&temporal/api/workflow/v1/message.proto\x1a\x30temporal/api/sdk/v1/task_complete_metadata.proto\x1a\'temporal/api/sdk/v1/user_metadata.proto\x1a,temporal/api/sdk/v1/event_group_marker.proto"\xda\x12\n\'WorkflowExecutionStartedEventAttributes\x12;\n\rworkflow_type\x18\x01 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12!\n\x19parent_workflow_namespace\x18\x02 \x01(\t\x12$\n\x1cparent_workflow_namespace_id\x18\x1b \x01(\t\x12L\n\x19parent_workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12!\n\x19parent_initiated_event_id\x18\x04 \x01(\x03\x12\x38\n\ntask_queue\x18\x05 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12/\n\x05input\x18\x06 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12=\n\x1aworkflow_execution_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12"\n\x1a\x63ontinued_execution_run_id\x18\n \x01(\t\x12@\n\tinitiator\x18\x0b \x01(\x0e\x32-.temporal.api.enums.v1.ContinueAsNewInitiator\x12;\n\x11\x63ontinued_failure\x18\x0c \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12@\n\x16last_completion_result\x18\r \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12!\n\x19original_execution_run_id\x18\x0e \x01(\t\x12\x10\n\x08identity\x18\x0f \x01(\t\x12\x1e\n\x16\x66irst_execution_run_id\x18\x10 \x01(\t\x12\x39\n\x0cretry_policy\x18\x11 \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x0f\n\x07\x61ttempt\x18\x12 \x01(\x05\x12\x46\n"workflow_execution_expiration_time\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\rcron_schedule\x18\x14 \x01(\t\x12>\n\x1b\x66irst_workflow_task_backoff\x18\x15 \x01(\x0b\x32\x19.google.protobuf.Duration\x12*\n\x04memo\x18\x16 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\x12\x43\n\x11search_attributes\x18\x17 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x45\n\x16prev_auto_reset_points\x18\x18 \x01(\x0b\x32%.temporal.api.workflow.v1.ResetPoints\x12.\n\x06header\x18\x19 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12&\n\x1eparent_initiated_event_version\x18\x1a \x01(\x03\x12\x13\n\x0bworkflow_id\x18\x1c \x01(\t\x12L\n\x14source_version_stamp\x18\x1d \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12>\n\x14\x63ompletion_callbacks\x18\x1e \x03(\x0b\x32 .temporal.api.common.v1.Callback\x12J\n\x17root_workflow_execution\x18\x1f \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x1e\n\x12inherited_build_id\x18 \x01(\tB\x02\x18\x01\x12I\n\x13versioning_override\x18! \x01(\x0b\x32,.temporal.api.workflow.v1.VersioningOverride\x12\x33\n\'parent_pinned_worker_deployment_version\x18" \x01(\tB\x02\x18\x01\x12\x32\n\x08priority\x18# \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12U\n\x18inherited_pinned_version\x18% \x01(\x0b\x32\x33.temporal.api.deployment.v1.WorkerDeploymentVersion\x12Y\n\x1binherited_auto_upgrade_info\x18\' \x01(\x0b\x32\x34.temporal.api.deployment.v1.InheritedAutoUpgradeInfo\x12 \n\x18\x65\x61ger_execution_accepted\x18& \x01(\x08\x12^\n\x1f\x64\x65\x63lined_target_version_upgrade\x18( \x01(\x0b\x32\x35.temporal.api.history.v1.DeclinedTargetVersionUpgrade\x12H\n\x14time_skipping_config\x18) \x01(\x0b\x32*.temporal.api.common.v1.TimeSkippingConfig\x12]\n\x1ftime_skipping_state_propagation\x18+ \x01(\x0b\x32\x34.temporal.api.common.v1.TimeSkippingStatePropagationJ\x04\x08$\x10%J\x04\x08*\x10+R parent_pinned_deployment_versionR\x18initial_skipped_duration"\x88\x01\n\x1c\x44\x65\x63linedTargetVersionUpgrade\x12O\n\x12\x64\x65ployment_version\x18\x01 \x01(\x0b\x32\x33.temporal.api.deployment.v1.WorkerDeploymentVersion\x12\x17\n\x0frevision_number\x18\x02 \x01(\x03"\xa5\x01\n)WorkflowExecutionCompletedEventAttributes\x12\x30\n\x06result\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x1c\n\x14new_execution_run_id\x18\x03 \x01(\t"\xdb\x01\n&WorkflowExecutionFailedEventAttributes\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x36\n\x0bretry_state\x18\x02 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState\x12(\n workflow_task_completed_event_id\x18\x03 \x01(\x03\x12\x1c\n\x14new_execution_run_id\x18\x04 \x01(\t"\x80\x01\n(WorkflowExecutionTimedOutEventAttributes\x12\x36\n\x0bretry_state\x18\x01 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState\x12\x1c\n\x14new_execution_run_id\x18\x02 \x01(\t"\xa5\x07\n.WorkflowExecutionContinuedAsNewEventAttributes\x12\x1c\n\x14new_execution_run_id\x18\x01 \x01(\t\x12;\n\rworkflow_type\x18\x02 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x38\n\ntask_queue\x18\x03 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12/\n\x05input\x18\x04 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x37\n\x14workflow_run_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n workflow_task_completed_event_id\x18\x07 \x01(\x03\x12\x39\n\x16\x62\x61\x63koff_start_interval\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12@\n\tinitiator\x18\t \x01(\x0e\x32-.temporal.api.enums.v1.ContinueAsNewInitiator\x12\x35\n\x07\x66\x61ilure\x18\n \x01(\x0b\x32 .temporal.api.failure.v1.FailureB\x02\x18\x01\x12@\n\x16last_completion_result\x18\x0b \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12.\n\x06header\x18\x0c \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12*\n\x04memo\x18\r \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\x12\x43\n\x11search_attributes\x18\x0e \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x1c\n\x10inherit_build_id\x18\x0f \x01(\x08\x42\x02\x18\x01\x12[\n\x1binitial_versioning_behavior\x18\x10 \x01(\x0e\x32\x36.temporal.api.enums.v1.ContinueAsNewVersioningBehavior"\xac\x01\n$WorkflowTaskScheduledEventAttributes\x12\x38\n\ntask_queue\x18\x01 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12\x39\n\x16start_to_close_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0f\n\x07\x61ttempt\x18\x03 \x01(\x05"\xa0\x03\n"WorkflowTaskStartedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x12\n\nrequest_id\x18\x03 \x01(\t\x12\x1f\n\x17suggest_continue_as_new\x18\x04 \x01(\x08\x12Z\n\x1fsuggest_continue_as_new_reasons\x18\x08 \x03(\x0e\x32\x31.temporal.api.enums.v1.SuggestContinueAsNewReason\x12\x30\n(target_worker_deployment_version_changed\x18\t \x01(\x08\x12\x1a\n\x12history_size_bytes\x18\x05 \x01(\x03\x12\x46\n\x0eworker_version\x18\x06 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12%\n\x19\x62uild_id_redirect_counter\x18\x07 \x01(\x03\x42\x02\x18\x01"\x82\x05\n$WorkflowTaskCompletedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03\x12\x10\n\x08identity\x18\x03 \x01(\t\x12\x1b\n\x0f\x62inary_checksum\x18\x04 \x01(\tB\x02\x18\x01\x12\x46\n\x0eworker_version\x18\x05 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12H\n\x0csdk_metadata\x18\x06 \x01(\x0b\x32\x32.temporal.api.sdk.v1.WorkflowTaskCompletedMetadata\x12\x43\n\x11metering_metadata\x18\r \x01(\x0b\x32(.temporal.api.common.v1.MeteringMetadata\x12>\n\ndeployment\x18\x07 \x01(\x0b\x32&.temporal.api.deployment.v1.DeploymentB\x02\x18\x01\x12\x46\n\x13versioning_behavior\x18\x08 \x01(\x0e\x32).temporal.api.enums.v1.VersioningBehavior\x12%\n\x19worker_deployment_version\x18\t \x01(\tB\x02\x18\x01\x12\x1e\n\x16worker_deployment_name\x18\n \x01(\t\x12O\n\x12\x64\x65ployment_version\x18\x0b \x01(\x0b\x32\x33.temporal.api.deployment.v1.WorkerDeploymentVersion"\x95\x01\n#WorkflowTaskTimedOutEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03\x12\x38\n\x0ctimeout_type\x18\x03 \x01(\x0e\x32".temporal.api.enums.v1.TimeoutType"\x87\x03\n!WorkflowTaskFailedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03\x12=\n\x05\x63\x61use\x18\x03 \x01(\x0e\x32..temporal.api.enums.v1.WorkflowTaskFailedCause\x12\x31\n\x07\x66\x61ilure\x18\x04 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x13\n\x0b\x62\x61se_run_id\x18\x06 \x01(\t\x12\x12\n\nnew_run_id\x18\x07 \x01(\t\x12\x1a\n\x12\x66ork_event_version\x18\x08 \x01(\x03\x12\x1b\n\x0f\x62inary_checksum\x18\t \x01(\tB\x02\x18\x01\x12\x46\n\x0eworker_version\x18\n \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01"\xc2\x05\n$ActivityTaskScheduledEventAttributes\x12\x13\n\x0b\x61\x63tivity_id\x18\x01 \x01(\t\x12;\n\ractivity_type\x18\x02 \x01(\x0b\x32$.temporal.api.common.v1.ActivityType\x12\x38\n\ntask_queue\x18\x04 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12.\n\x06header\x18\x05 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12/\n\x05input\x18\x06 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12<\n\x19schedule_to_close_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n workflow_task_completed_event_id\x18\x0b \x01(\x03\x12\x39\n\x0cretry_policy\x18\x0c \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12!\n\x15use_workflow_build_id\x18\r \x01(\x08\x42\x02\x18\x01\x12\x32\n\x08priority\x18\x0e \x01(\x0b\x32 .temporal.api.common.v1.PriorityJ\x04\x08\x03\x10\x04"\x9e\x02\n"ActivityTaskStartedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x12\n\nrequest_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x05\x12\x36\n\x0clast_failure\x18\x05 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x46\n\x0eworker_version\x18\x06 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12%\n\x19\x62uild_id_redirect_counter\x18\x07 \x01(\x03\x42\x02\x18\x01"\xe8\x01\n$ActivityTaskCompletedEventAttributes\x12\x30\n\x06result\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x1a\n\x12scheduled_event_id\x18\x02 \x01(\x03\x12\x18\n\x10started_event_id\x18\x03 \x01(\x03\x12\x10\n\x08identity\x18\x04 \x01(\t\x12\x46\n\x0eworker_version\x18\x05 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01"\xdd\x02\n!ActivityTaskFailedEventAttributes\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x1a\n\x12scheduled_event_id\x18\x02 \x01(\x03\x12\x18\n\x10started_event_id\x18\x03 \x01(\x03\x12\x10\n\x08identity\x18\x04 \x01(\t\x12\x36\n\x0bretry_state\x18\x05 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState\x12\x46\n\x0eworker_version\x18\x06 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12=\n\x05\x63\x61use\x18\x07 \x01(\x0e\x32..temporal.api.enums.v1.ActivityTaskFailedCause"\xc6\x01\n#ActivityTaskTimedOutEventAttributes\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x1a\n\x12scheduled_event_id\x18\x02 \x01(\x03\x12\x18\n\x10started_event_id\x18\x03 \x01(\x03\x12\x36\n\x0bretry_state\x18\x04 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState"r\n*ActivityTaskCancelRequestedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03"\x92\x02\n#ActivityTaskCanceledEventAttributes\x12\x31\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12(\n latest_cancel_requested_event_id\x18\x02 \x01(\x03\x12\x1a\n\x12scheduled_event_id\x18\x03 \x01(\x03\x12\x18\n\x10started_event_id\x18\x04 \x01(\x03\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x46\n\x0eworker_version\x18\x06 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01"\x93\x01\n\x1bTimerStartedEventAttributes\x12\x10\n\x08timer_id\x18\x01 \x01(\t\x12\x38\n\x15start_to_fire_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n workflow_task_completed_event_id\x18\x03 \x01(\x03"G\n\x19TimerFiredEventAttributes\x12\x10\n\x08timer_id\x18\x01 \x01(\t\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03"\x86\x01\n\x1cTimerCanceledEventAttributes\x12\x10\n\x08timer_id\x18\x01 \x01(\t\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x03 \x01(\x03\x12\x10\n\x08identity\x18\x04 \x01(\t"\xc7\x01\n/WorkflowExecutionCancelRequestedEventAttributes\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12#\n\x1b\x65xternal_initiated_event_id\x18\x02 \x01(\x03\x12N\n\x1b\x65xternal_workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x10\n\x08identity\x18\x04 \x01(\t"\x87\x01\n(WorkflowExecutionCanceledEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x31\n\x07\x64\x65tails\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Payloads"\xe9\x02\n\x1dMarkerRecordedEventAttributes\x12\x13\n\x0bmarker_name\x18\x01 \x01(\t\x12T\n\x07\x64\x65tails\x18\x02 \x03(\x0b\x32\x43.temporal.api.history.v1.MarkerRecordedEventAttributes.DetailsEntry\x12(\n workflow_task_completed_event_id\x18\x03 \x01(\x03\x12.\n\x06header\x18\x04 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12\x31\n\x07\x66\x61ilure\x18\x05 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x1aP\n\x0c\x44\x65tailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Payloads:\x02\x38\x01"\xbf\x02\n(WorkflowExecutionSignaledEventAttributes\x12\x13\n\x0bsignal_name\x18\x01 \x01(\t\x12/\n\x05input\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x10\n\x08identity\x18\x03 \x01(\t\x12.\n\x06header\x18\x04 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12\'\n\x1bskip_generate_workflow_task\x18\x05 \x01(\x08\x42\x02\x18\x01\x12N\n\x1b\x65xternal_workflow_execution\x18\x06 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x12\n\nrequest_id\x18\x07 \x01(\t"\x81\x01\n*WorkflowExecutionTerminatedEventAttributes\x12\x0e\n\x06reason\x18\x01 \x01(\t\x12\x31\n\x07\x64\x65tails\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x10\n\x08identity\x18\x03 \x01(\t"\x9c\x02\n>RequestCancelExternalWorkflowExecutionInitiatedEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x13\n\x07\x63ontrol\x18\x04 \x01(\tB\x02\x18\x01\x12\x1b\n\x13\x63hild_workflow_only\x18\x05 \x01(\x08\x12\x0e\n\x06reason\x18\x06 \x01(\t"\xda\x02\n;RequestCancelExternalWorkflowExecutionFailedEventAttributes\x12P\n\x05\x63\x61use\x18\x01 \x01(\x0e\x32\x41.temporal.api.enums.v1.CancelExternalWorkflowExecutionFailedCause\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x11\n\tnamespace\x18\x03 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x04 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x13\n\x07\x63ontrol\x18\x06 \x01(\tB\x02\x18\x01"\xc5\x01\n7ExternalWorkflowExecutionCancelRequestedEventAttributes\x12\x1a\n\x12initiated_event_id\x18\x01 \x01(\x03\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x04 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution"\xfb\x02\n7SignalExternalWorkflowExecutionInitiatedEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\t \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x13\n\x0bsignal_name\x18\x04 \x01(\t\x12/\n\x05input\x18\x05 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x13\n\x07\x63ontrol\x18\x06 \x01(\tB\x02\x18\x01\x12\x1b\n\x13\x63hild_workflow_only\x18\x07 \x01(\x08\x12.\n\x06header\x18\x08 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header"\xd3\x02\n4SignalExternalWorkflowExecutionFailedEventAttributes\x12P\n\x05\x63\x61use\x18\x01 \x01(\x0e\x32\x41.temporal.api.enums.v1.SignalExternalWorkflowExecutionFailedCause\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x11\n\tnamespace\x18\x03 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x04 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x13\n\x07\x63ontrol\x18\x06 \x01(\tB\x02\x18\x01"\xd3\x01\n0ExternalWorkflowExecutionSignaledEventAttributes\x12\x1a\n\x12initiated_event_id\x18\x01 \x01(\x03\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x05 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x13\n\x07\x63ontrol\x18\x04 \x01(\tB\x02\x18\x01"\x9e\x01\n-UpsertWorkflowSearchAttributesEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x43\n\x11search_attributes\x18\x02 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes"\x8a\x01\n)WorkflowPropertiesModifiedEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x33\n\rupserted_memo\x18\x02 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo"\xfc\t\n3StartChildWorkflowExecutionInitiatedEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x12 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12;\n\rworkflow_type\x18\x03 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x38\n\ntask_queue\x18\x04 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12/\n\x05input\x18\x05 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12=\n\x1aworkflow_execution_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x45\n\x13parent_close_policy\x18\t \x01(\x0e\x32(.temporal.api.enums.v1.ParentClosePolicy\x12\x13\n\x07\x63ontrol\x18\n \x01(\tB\x02\x18\x01\x12(\n workflow_task_completed_event_id\x18\x0b \x01(\x03\x12N\n\x18workflow_id_reuse_policy\x18\x0c \x01(\x0e\x32,.temporal.api.enums.v1.WorkflowIdReusePolicy\x12\x39\n\x0cretry_policy\x18\r \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x15\n\rcron_schedule\x18\x0e \x01(\t\x12.\n\x06header\x18\x0f \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12*\n\x04memo\x18\x10 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\x12\x43\n\x11search_attributes\x18\x11 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x1c\n\x10inherit_build_id\x18\x13 \x01(\x08\x42\x02\x18\x01\x12\x32\n\x08priority\x18\x14 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12H\n\x14time_skipping_config\x18\x15 \x01(\x0b\x32*.temporal.api.common.v1.TimeSkippingConfig\x12]\n\x1ftime_skipping_state_propagation\x18\x17 \x01(\x0b\x32\x34.temporal.api.common.v1.TimeSkippingStatePropagation\x12I\n\x13versioning_override\x18\x18 \x01(\x0b\x32,.temporal.api.workflow.v1.VersioningOverrideJ\x04\x08\x16\x10\x17R\x18initial_skipped_duration"\xd6\x02\n0StartChildWorkflowExecutionFailedEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x08 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12;\n\rworkflow_type\x18\x03 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12L\n\x05\x63\x61use\x18\x04 \x01(\x0e\x32=.temporal.api.enums.v1.StartChildWorkflowExecutionFailedCause\x12\x13\n\x07\x63ontrol\x18\x05 \x01(\tB\x02\x18\x01\x12\x1a\n\x12initiated_event_id\x18\x06 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x07 \x01(\x03"\xa7\x02\n,ChildWorkflowExecutionStartedEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x06 \x01(\t\x12\x1a\n\x12initiated_event_id\x18\x02 \x01(\x03\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x04 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12.\n\x06header\x18\x05 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header"\xc5\x02\n.ChildWorkflowExecutionCompletedEventAttributes\x12\x30\n\x06result\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x04 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x18\n\x10started_event_id\x18\x06 \x01(\x03"\xfb\x02\n+ChildWorkflowExecutionFailedEventAttributes\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x08 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x04 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x18\n\x10started_event_id\x18\x06 \x01(\x03\x12\x36\n\x0bretry_state\x18\x07 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState"\xc5\x02\n-ChildWorkflowExecutionCanceledEventAttributes\x12\x31\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x04 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x18\n\x10started_event_id\x18\x06 \x01(\x03"\xca\x02\n-ChildWorkflowExecutionTimedOutEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x02 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x03 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x04 \x01(\x03\x12\x18\n\x10started_event_id\x18\x05 \x01(\x03\x12\x36\n\x0bretry_state\x18\x06 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState"\x94\x02\n/ChildWorkflowExecutionTerminatedEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x06 \x01(\t\x12\x45\n\x12workflow_execution\x18\x02 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x03 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x04 \x01(\x03\x12\x18\n\x10started_event_id\x18\x05 \x01(\x03"\xda\x05\n.WorkflowExecutionOptionsUpdatedEventAttributes\x12I\n\x13versioning_override\x18\x01 \x01(\x0b\x32,.temporal.api.workflow.v1.VersioningOverride\x12!\n\x19unset_versioning_override\x18\x02 \x01(\x08\x12\x1b\n\x13\x61ttached_request_id\x18\x03 \x01(\t\x12G\n\x1d\x61ttached_completion_callbacks\x18\x04 \x03(\x0b\x32 .temporal.api.common.v1.Callback\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x32\n\x08priority\x18\x06 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12H\n\x14time_skipping_config\x18\x07 \x01(\x0b\x32*.temporal.api.common.v1.TimeSkippingConfig\x12$\n\x1ctime_skipping_config_updated\x18\t \x01(\x08\x12\x84\x01\n\x17workflow_update_options\x18\x08 \x03(\x0b\x32\x63.temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes.WorkflowUpdateOptionsUpdate\x1a\x96\x01\n\x1bWorkflowUpdateOptionsUpdate\x12\x11\n\tupdate_id\x18\x01 \x01(\t\x12\x1b\n\x13\x61ttached_request_id\x18\x02 \x01(\t\x12G\n\x1d\x61ttached_completion_callbacks\x18\x03 \x03(\x0b\x32 .temporal.api.common.v1.Callback"\xc0\x02\n3WorkflowPropertiesModifiedExternallyEventAttributes\x12\x16\n\x0enew_task_queue\x18\x01 \x01(\t\x12<\n\x19new_workflow_task_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12;\n\x18new_workflow_run_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x41\n\x1enew_workflow_execution_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\rupserted_memo\x18\x05 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo"\x90\x01\n3ActivityPropertiesModifiedExternallyEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12=\n\x10new_retry_policy\x18\x02 \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy"\xdc\x01\n.WorkflowExecutionUpdateAcceptedEventAttributes\x12\x1c\n\x14protocol_instance_id\x18\x01 \x01(\t\x12#\n\x1b\x61\x63\x63\x65pted_request_message_id\x18\x02 \x01(\t\x12,\n$accepted_request_sequencing_event_id\x18\x03 \x01(\x03\x12\x39\n\x10\x61\x63\x63\x65pted_request\x18\x04 \x01(\x0b\x32\x1f.temporal.api.update.v1.Request"\xaa\x01\n/WorkflowExecutionUpdateCompletedEventAttributes\x12*\n\x04meta\x18\x01 \x01(\x0b\x32\x1c.temporal.api.update.v1.Meta\x12\x19\n\x11\x61\x63\x63\x65pted_event_id\x18\x03 \x01(\x03\x12\x30\n\x07outcome\x18\x02 \x01(\x0b\x32\x1f.temporal.api.update.v1.Outcome"\x8f\x02\n.WorkflowExecutionUpdateRejectedEventAttributes\x12\x1c\n\x14protocol_instance_id\x18\x01 \x01(\t\x12#\n\x1brejected_request_message_id\x18\x02 \x01(\t\x12,\n$rejected_request_sequencing_event_id\x18\x03 \x01(\x03\x12\x39\n\x10rejected_request\x18\x04 \x01(\x0b\x32\x1f.temporal.api.update.v1.Request\x12\x31\n\x07\x66\x61ilure\x18\x05 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\xa4\x01\n.WorkflowExecutionUpdateAdmittedEventAttributes\x12\x30\n\x07request\x18\x01 \x01(\x0b\x32\x1f.temporal.api.update.v1.Request\x12@\n\x06origin\x18\x02 \x01(\x0e\x32\x30.temporal.api.enums.v1.UpdateAdmittedEventOrigin"^\n&WorkflowExecutionPausedEventAttributes\x12\x10\n\x08identity\x18\x01 \x01(\t\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12\x12\n\nrequest_id\x18\x03 \x01(\t"`\n(WorkflowExecutionUnpausedEventAttributes\x12\x10\n\x08identity\x18\x01 \x01(\t\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12\x12\n\nrequest_id\x18\x03 \x01(\t"\xc5\x01\n8WorkflowExecutionTimeSkippingTransitionedEventAttributes\x12/\n\x0btarget_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x1b\x64isabled_after_fast_forward\x18\x02 \x01(\x08\x12\x33\n\x0fwall_clock_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"\xb4\x04\n&NexusOperationScheduledEventAttributes\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x0f\n\x07service\x18\x02 \x01(\t\x12\x11\n\toperation\x18\x03 \x01(\t\x12.\n\x05input\x18\x04 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x66\n\x0cnexus_header\x18\x06 \x03(\x0b\x32P.temporal.api.history.v1.NexusOperationScheduledEventAttributes.NexusHeaderEntry\x12(\n workflow_task_completed_event_id\x18\x07 \x01(\x03\x12\x12\n\nrequest_id\x18\x08 \x01(\t\x12\x13\n\x0b\x65ndpoint_id\x18\t \x01(\t\x12<\n\x19schedule_to_start_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x32\n\x10NexusHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x89\x01\n$NexusOperationStartedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x18\n\x0coperation_id\x18\x03 \x01(\tB\x02\x18\x01\x12\x12\n\nrequest_id\x18\x04 \x01(\t\x12\x17\n\x0foperation_token\x18\x05 \x01(\t"\x89\x01\n&NexusOperationCompletedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12/\n\x06result\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x12\n\nrequest_id\x18\x03 \x01(\t"\x88\x01\n#NexusOperationFailedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x12\n\nrequest_id\x18\x03 \x01(\t"\x8a\x01\n%NexusOperationTimedOutEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x12\n\nrequest_id\x18\x03 \x01(\t"\x8a\x01\n%NexusOperationCanceledEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x12\n\nrequest_id\x18\x03 \x01(\t"t\n,NexusOperationCancelRequestedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03"\x97\x01\n3NexusOperationCancelRequestCompletedEventAttributes\x12\x1a\n\x12requested_event_id\x18\x01 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x1a\n\x12scheduled_event_id\x18\x03 \x01(\x03"\xc7\x01\n0NexusOperationCancelRequestFailedEventAttributes\x12\x1a\n\x12requested_event_id\x18\x01 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x31\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x1a\n\x12scheduled_event_id\x18\x04 \x01(\x03"\xca?\n\x0cHistoryEvent\x12\x10\n\x08\x65vent_id\x18\x01 \x01(\x03\x12.\n\nevent_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\nevent_type\x18\x03 \x01(\x0e\x32 .temporal.api.enums.v1.EventType\x12\x0f\n\x07version\x18\x04 \x01(\x03\x12\x0f\n\x07task_id\x18\x05 \x01(\x03\x12\x1a\n\x11worker_may_ignore\x18\xac\x02 \x01(\x08\x12\x39\n\ruser_metadata\x18\xad\x02 \x01(\x0b\x32!.temporal.api.sdk.v1.UserMetadata\x12,\n\x05links\x18\xae\x02 \x03(\x0b\x32\x1c.temporal.api.common.v1.Link\x12\x35\n\tprincipal\x18\xaf\x02 \x01(\x0b\x32!.temporal.api.common.v1.Principal\x12\x43\n\x13\x65vent_group_markers\x18\xb0\x02 \x03(\x0b\x32%.temporal.api.sdk.v1.EventGroupMarker\x12w\n+workflow_execution_started_event_attributes\x18\x06 \x01(\x0b\x32@.temporal.api.history.v1.WorkflowExecutionStartedEventAttributesH\x00\x12{\n-workflow_execution_completed_event_attributes\x18\x07 \x01(\x0b\x32\x42.temporal.api.history.v1.WorkflowExecutionCompletedEventAttributesH\x00\x12u\n*workflow_execution_failed_event_attributes\x18\x08 \x01(\x0b\x32?.temporal.api.history.v1.WorkflowExecutionFailedEventAttributesH\x00\x12z\n-workflow_execution_timed_out_event_attributes\x18\t \x01(\x0b\x32\x41.temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributesH\x00\x12q\n(workflow_task_scheduled_event_attributes\x18\n \x01(\x0b\x32=.temporal.api.history.v1.WorkflowTaskScheduledEventAttributesH\x00\x12m\n&workflow_task_started_event_attributes\x18\x0b \x01(\x0b\x32;.temporal.api.history.v1.WorkflowTaskStartedEventAttributesH\x00\x12q\n(workflow_task_completed_event_attributes\x18\x0c \x01(\x0b\x32=.temporal.api.history.v1.WorkflowTaskCompletedEventAttributesH\x00\x12p\n(workflow_task_timed_out_event_attributes\x18\r \x01(\x0b\x32<.temporal.api.history.v1.WorkflowTaskTimedOutEventAttributesH\x00\x12k\n%workflow_task_failed_event_attributes\x18\x0e \x01(\x0b\x32:.temporal.api.history.v1.WorkflowTaskFailedEventAttributesH\x00\x12q\n(activity_task_scheduled_event_attributes\x18\x0f \x01(\x0b\x32=.temporal.api.history.v1.ActivityTaskScheduledEventAttributesH\x00\x12m\n&activity_task_started_event_attributes\x18\x10 \x01(\x0b\x32;.temporal.api.history.v1.ActivityTaskStartedEventAttributesH\x00\x12q\n(activity_task_completed_event_attributes\x18\x11 \x01(\x0b\x32=.temporal.api.history.v1.ActivityTaskCompletedEventAttributesH\x00\x12k\n%activity_task_failed_event_attributes\x18\x12 \x01(\x0b\x32:.temporal.api.history.v1.ActivityTaskFailedEventAttributesH\x00\x12p\n(activity_task_timed_out_event_attributes\x18\x13 \x01(\x0b\x32<.temporal.api.history.v1.ActivityTaskTimedOutEventAttributesH\x00\x12^\n\x1etimer_started_event_attributes\x18\x14 \x01(\x0b\x32\x34.temporal.api.history.v1.TimerStartedEventAttributesH\x00\x12Z\n\x1ctimer_fired_event_attributes\x18\x15 \x01(\x0b\x32\x32.temporal.api.history.v1.TimerFiredEventAttributesH\x00\x12~\n/activity_task_cancel_requested_event_attributes\x18\x16 \x01(\x0b\x32\x43.temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributesH\x00\x12o\n\'activity_task_canceled_event_attributes\x18\x17 \x01(\x0b\x32<.temporal.api.history.v1.ActivityTaskCanceledEventAttributesH\x00\x12`\n\x1ftimer_canceled_event_attributes\x18\x18 \x01(\x0b\x32\x35.temporal.api.history.v1.TimerCanceledEventAttributesH\x00\x12\x62\n marker_recorded_event_attributes\x18\x19 \x01(\x0b\x32\x36.temporal.api.history.v1.MarkerRecordedEventAttributesH\x00\x12y\n,workflow_execution_signaled_event_attributes\x18\x1a \x01(\x0b\x32\x41.temporal.api.history.v1.WorkflowExecutionSignaledEventAttributesH\x00\x12}\n.workflow_execution_terminated_event_attributes\x18\x1b \x01(\x0b\x32\x43.temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributesH\x00\x12\x88\x01\n4workflow_execution_cancel_requested_event_attributes\x18\x1c \x01(\x0b\x32H.temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributesH\x00\x12y\n,workflow_execution_canceled_event_attributes\x18\x1d \x01(\x0b\x32\x41.temporal.api.history.v1.WorkflowExecutionCanceledEventAttributesH\x00\x12\xa8\x01\nErequest_cancel_external_workflow_execution_initiated_event_attributes\x18\x1e \x01(\x0b\x32W.temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributesH\x00\x12\xa2\x01\nBrequest_cancel_external_workflow_execution_failed_event_attributes\x18\x1f \x01(\x0b\x32T.temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributesH\x00\x12\x99\x01\n=external_workflow_execution_cancel_requested_event_attributes\x18 \x01(\x0b\x32P.temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributesH\x00\x12\x87\x01\n4workflow_execution_continued_as_new_event_attributes\x18! \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributesH\x00\x12\x91\x01\n9start_child_workflow_execution_initiated_event_attributes\x18" \x01(\x0b\x32L.temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributesH\x00\x12\x8b\x01\n6start_child_workflow_execution_failed_event_attributes\x18# \x01(\x0b\x32I.temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributesH\x00\x12\x82\x01\n1child_workflow_execution_started_event_attributes\x18$ \x01(\x0b\x32\x45.temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributesH\x00\x12\x86\x01\n3child_workflow_execution_completed_event_attributes\x18% \x01(\x0b\x32G.temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributesH\x00\x12\x80\x01\n0child_workflow_execution_failed_event_attributes\x18& \x01(\x0b\x32\x44.temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributesH\x00\x12\x84\x01\n2child_workflow_execution_canceled_event_attributes\x18\' \x01(\x0b\x32\x46.temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributesH\x00\x12\x85\x01\n3child_workflow_execution_timed_out_event_attributes\x18( \x01(\x0b\x32\x46.temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributesH\x00\x12\x88\x01\n4child_workflow_execution_terminated_event_attributes\x18) \x01(\x0b\x32H.temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributesH\x00\x12\x99\x01\n=signal_external_workflow_execution_initiated_event_attributes\x18* \x01(\x0b\x32P.temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributesH\x00\x12\x93\x01\n:signal_external_workflow_execution_failed_event_attributes\x18+ \x01(\x0b\x32M.temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributesH\x00\x12\x8a\x01\n5external_workflow_execution_signaled_event_attributes\x18, \x01(\x0b\x32I.temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributesH\x00\x12\x84\x01\n2upsert_workflow_search_attributes_event_attributes\x18- \x01(\x0b\x32\x46.temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributesH\x00\x12\x86\x01\n3workflow_execution_update_accepted_event_attributes\x18. \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributesH\x00\x12\x86\x01\n3workflow_execution_update_rejected_event_attributes\x18/ \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributesH\x00\x12\x88\x01\n4workflow_execution_update_completed_event_attributes\x18\x30 \x01(\x0b\x32H.temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributesH\x00\x12\x90\x01\n8workflow_properties_modified_externally_event_attributes\x18\x31 \x01(\x0b\x32L.temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributesH\x00\x12\x90\x01\n8activity_properties_modified_externally_event_attributes\x18\x32 \x01(\x0b\x32L.temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributesH\x00\x12{\n-workflow_properties_modified_event_attributes\x18\x33 \x01(\x0b\x32\x42.temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributesH\x00\x12\x86\x01\n3workflow_execution_update_admitted_event_attributes\x18\x34 \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributesH\x00\x12u\n*nexus_operation_scheduled_event_attributes\x18\x35 \x01(\x0b\x32?.temporal.api.history.v1.NexusOperationScheduledEventAttributesH\x00\x12q\n(nexus_operation_started_event_attributes\x18\x36 \x01(\x0b\x32=.temporal.api.history.v1.NexusOperationStartedEventAttributesH\x00\x12u\n*nexus_operation_completed_event_attributes\x18\x37 \x01(\x0b\x32?.temporal.api.history.v1.NexusOperationCompletedEventAttributesH\x00\x12o\n\'nexus_operation_failed_event_attributes\x18\x38 \x01(\x0b\x32<.temporal.api.history.v1.NexusOperationFailedEventAttributesH\x00\x12s\n)nexus_operation_canceled_event_attributes\x18\x39 \x01(\x0b\x32>.temporal.api.history.v1.NexusOperationCanceledEventAttributesH\x00\x12t\n*nexus_operation_timed_out_event_attributes\x18: \x01(\x0b\x32>.temporal.api.history.v1.NexusOperationTimedOutEventAttributesH\x00\x12\x82\x01\n1nexus_operation_cancel_requested_event_attributes\x18; \x01(\x0b\x32\x45.temporal.api.history.v1.NexusOperationCancelRequestedEventAttributesH\x00\x12\x86\x01\n3workflow_execution_options_updated_event_attributes\x18< \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributesH\x00\x12\x91\x01\n9nexus_operation_cancel_request_completed_event_attributes\x18= \x01(\x0b\x32L.temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributesH\x00\x12\x8b\x01\n6nexus_operation_cancel_request_failed_event_attributes\x18> \x01(\x0b\x32I.temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributesH\x00\x12u\n*workflow_execution_paused_event_attributes\x18? \x01(\x0b\x32?.temporal.api.history.v1.WorkflowExecutionPausedEventAttributesH\x00\x12y\n,workflow_execution_unpaused_event_attributes\x18@ \x01(\x0b\x32\x41.temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributesH\x00\x12\x9b\x01\n>workflow_execution_time_skipping_transitioned_event_attributes\x18\x41 \x01(\x0b\x32Q.temporal.api.history.v1.WorkflowExecutionTimeSkippingTransitionedEventAttributesH\x00\x42\x0c\n\nattributes"@\n\x07History\x12\x35\n\x06\x65vents\x18\x01 \x03(\x0b\x32%.temporal.api.history.v1.HistoryEventB\x8e\x01\n\x1aio.temporal.api.history.v1B\x0cMessageProtoP\x01Z%go.temporal.io/api/history/v1;history\xaa\x02\x19Temporalio.Api.History.V1\xea\x02\x1cTemporalio::Api::History::V1b\x06proto3' + b'\n%temporal/api/history/v1/message.proto\x12\x17temporal.api.history.v1\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a&temporal/api/enums/v1/event_type.proto\x1a(temporal/api/enums/v1/failed_cause.proto\x1a"temporal/api/enums/v1/update.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a$temporal/api/common/v1/message.proto\x1a(temporal/api/deployment/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a\'temporal/api/taskqueue/v1/message.proto\x1a$temporal/api/update/v1/message.proto\x1a&temporal/api/workflow/v1/message.proto\x1a\x30temporal/api/sdk/v1/task_complete_metadata.proto\x1a\'temporal/api/sdk/v1/user_metadata.proto\x1a,temporal/api/sdk/v1/event_group_marker.proto"\xda\x12\n\'WorkflowExecutionStartedEventAttributes\x12;\n\rworkflow_type\x18\x01 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12!\n\x19parent_workflow_namespace\x18\x02 \x01(\t\x12$\n\x1cparent_workflow_namespace_id\x18\x1b \x01(\t\x12L\n\x19parent_workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12!\n\x19parent_initiated_event_id\x18\x04 \x01(\x03\x12\x38\n\ntask_queue\x18\x05 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12/\n\x05input\x18\x06 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12=\n\x1aworkflow_execution_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12"\n\x1a\x63ontinued_execution_run_id\x18\n \x01(\t\x12@\n\tinitiator\x18\x0b \x01(\x0e\x32-.temporal.api.enums.v1.ContinueAsNewInitiator\x12;\n\x11\x63ontinued_failure\x18\x0c \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12@\n\x16last_completion_result\x18\r \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12!\n\x19original_execution_run_id\x18\x0e \x01(\t\x12\x10\n\x08identity\x18\x0f \x01(\t\x12\x1e\n\x16\x66irst_execution_run_id\x18\x10 \x01(\t\x12\x39\n\x0cretry_policy\x18\x11 \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x0f\n\x07\x61ttempt\x18\x12 \x01(\x05\x12\x46\n"workflow_execution_expiration_time\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x15\n\rcron_schedule\x18\x14 \x01(\t\x12>\n\x1b\x66irst_workflow_task_backoff\x18\x15 \x01(\x0b\x32\x19.google.protobuf.Duration\x12*\n\x04memo\x18\x16 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\x12\x43\n\x11search_attributes\x18\x17 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x45\n\x16prev_auto_reset_points\x18\x18 \x01(\x0b\x32%.temporal.api.workflow.v1.ResetPoints\x12.\n\x06header\x18\x19 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12&\n\x1eparent_initiated_event_version\x18\x1a \x01(\x03\x12\x13\n\x0bworkflow_id\x18\x1c \x01(\t\x12L\n\x14source_version_stamp\x18\x1d \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12>\n\x14\x63ompletion_callbacks\x18\x1e \x03(\x0b\x32 .temporal.api.common.v1.Callback\x12J\n\x17root_workflow_execution\x18\x1f \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x1e\n\x12inherited_build_id\x18 \x01(\tB\x02\x18\x01\x12I\n\x13versioning_override\x18! \x01(\x0b\x32,.temporal.api.workflow.v1.VersioningOverride\x12\x33\n\'parent_pinned_worker_deployment_version\x18" \x01(\tB\x02\x18\x01\x12\x32\n\x08priority\x18# \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12U\n\x18inherited_pinned_version\x18% \x01(\x0b\x32\x33.temporal.api.deployment.v1.WorkerDeploymentVersion\x12Y\n\x1binherited_auto_upgrade_info\x18\' \x01(\x0b\x32\x34.temporal.api.deployment.v1.InheritedAutoUpgradeInfo\x12 \n\x18\x65\x61ger_execution_accepted\x18& \x01(\x08\x12^\n\x1f\x64\x65\x63lined_target_version_upgrade\x18( \x01(\x0b\x32\x35.temporal.api.history.v1.DeclinedTargetVersionUpgrade\x12H\n\x14time_skipping_config\x18) \x01(\x0b\x32*.temporal.api.common.v1.TimeSkippingConfig\x12]\n\x1ftime_skipping_state_propagation\x18+ \x01(\x0b\x32\x34.temporal.api.common.v1.TimeSkippingStatePropagationJ\x04\x08$\x10%J\x04\x08*\x10+R parent_pinned_deployment_versionR\x18initial_skipped_duration"\x88\x01\n\x1c\x44\x65\x63linedTargetVersionUpgrade\x12O\n\x12\x64\x65ployment_version\x18\x01 \x01(\x0b\x32\x33.temporal.api.deployment.v1.WorkerDeploymentVersion\x12\x17\n\x0frevision_number\x18\x02 \x01(\x03"\xa5\x01\n)WorkflowExecutionCompletedEventAttributes\x12\x30\n\x06result\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x1c\n\x14new_execution_run_id\x18\x03 \x01(\t"\xdb\x01\n&WorkflowExecutionFailedEventAttributes\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x36\n\x0bretry_state\x18\x02 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState\x12(\n workflow_task_completed_event_id\x18\x03 \x01(\x03\x12\x1c\n\x14new_execution_run_id\x18\x04 \x01(\t"\x80\x01\n(WorkflowExecutionTimedOutEventAttributes\x12\x36\n\x0bretry_state\x18\x01 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState\x12\x1c\n\x14new_execution_run_id\x18\x02 \x01(\t"\xa5\x07\n.WorkflowExecutionContinuedAsNewEventAttributes\x12\x1c\n\x14new_execution_run_id\x18\x01 \x01(\t\x12;\n\rworkflow_type\x18\x02 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x38\n\ntask_queue\x18\x03 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12/\n\x05input\x18\x04 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x37\n\x14workflow_run_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n workflow_task_completed_event_id\x18\x07 \x01(\x03\x12\x39\n\x16\x62\x61\x63koff_start_interval\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12@\n\tinitiator\x18\t \x01(\x0e\x32-.temporal.api.enums.v1.ContinueAsNewInitiator\x12\x35\n\x07\x66\x61ilure\x18\n \x01(\x0b\x32 .temporal.api.failure.v1.FailureB\x02\x18\x01\x12@\n\x16last_completion_result\x18\x0b \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12.\n\x06header\x18\x0c \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12*\n\x04memo\x18\r \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\x12\x43\n\x11search_attributes\x18\x0e \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x1c\n\x10inherit_build_id\x18\x0f \x01(\x08\x42\x02\x18\x01\x12[\n\x1binitial_versioning_behavior\x18\x10 \x01(\x0e\x32\x36.temporal.api.enums.v1.ContinueAsNewVersioningBehavior"\xd7\x01\n$WorkflowTaskScheduledEventAttributes\x12\x38\n\ntask_queue\x18\x01 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12\x39\n\x16start_to_close_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x0f\n\x07\x61ttempt\x18\x03 \x01(\x05\x12)\n\x0b\x61ttachments\x18\x04 \x03(\x0b\x32\x14.google.protobuf.Any"\xa0\x03\n"WorkflowTaskStartedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x12\n\nrequest_id\x18\x03 \x01(\t\x12\x1f\n\x17suggest_continue_as_new\x18\x04 \x01(\x08\x12Z\n\x1fsuggest_continue_as_new_reasons\x18\x08 \x03(\x0e\x32\x31.temporal.api.enums.v1.SuggestContinueAsNewReason\x12\x30\n(target_worker_deployment_version_changed\x18\t \x01(\x08\x12\x1a\n\x12history_size_bytes\x18\x05 \x01(\x03\x12\x46\n\x0eworker_version\x18\x06 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12%\n\x19\x62uild_id_redirect_counter\x18\x07 \x01(\x03\x42\x02\x18\x01"\x82\x05\n$WorkflowTaskCompletedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03\x12\x10\n\x08identity\x18\x03 \x01(\t\x12\x1b\n\x0f\x62inary_checksum\x18\x04 \x01(\tB\x02\x18\x01\x12\x46\n\x0eworker_version\x18\x05 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12H\n\x0csdk_metadata\x18\x06 \x01(\x0b\x32\x32.temporal.api.sdk.v1.WorkflowTaskCompletedMetadata\x12\x43\n\x11metering_metadata\x18\r \x01(\x0b\x32(.temporal.api.common.v1.MeteringMetadata\x12>\n\ndeployment\x18\x07 \x01(\x0b\x32&.temporal.api.deployment.v1.DeploymentB\x02\x18\x01\x12\x46\n\x13versioning_behavior\x18\x08 \x01(\x0e\x32).temporal.api.enums.v1.VersioningBehavior\x12%\n\x19worker_deployment_version\x18\t \x01(\tB\x02\x18\x01\x12\x1e\n\x16worker_deployment_name\x18\n \x01(\t\x12O\n\x12\x64\x65ployment_version\x18\x0b \x01(\x0b\x32\x33.temporal.api.deployment.v1.WorkerDeploymentVersion"\x95\x01\n#WorkflowTaskTimedOutEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03\x12\x38\n\x0ctimeout_type\x18\x03 \x01(\x0e\x32".temporal.api.enums.v1.TimeoutType"\x87\x03\n!WorkflowTaskFailedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03\x12=\n\x05\x63\x61use\x18\x03 \x01(\x0e\x32..temporal.api.enums.v1.WorkflowTaskFailedCause\x12\x31\n\x07\x66\x61ilure\x18\x04 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x13\n\x0b\x62\x61se_run_id\x18\x06 \x01(\t\x12\x12\n\nnew_run_id\x18\x07 \x01(\t\x12\x1a\n\x12\x66ork_event_version\x18\x08 \x01(\x03\x12\x1b\n\x0f\x62inary_checksum\x18\t \x01(\tB\x02\x18\x01\x12\x46\n\x0eworker_version\x18\n \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01"\xc2\x05\n$ActivityTaskScheduledEventAttributes\x12\x13\n\x0b\x61\x63tivity_id\x18\x01 \x01(\t\x12;\n\ractivity_type\x18\x02 \x01(\x0b\x32$.temporal.api.common.v1.ActivityType\x12\x38\n\ntask_queue\x18\x04 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12.\n\x06header\x18\x05 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12/\n\x05input\x18\x06 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12<\n\x19schedule_to_close_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n workflow_task_completed_event_id\x18\x0b \x01(\x03\x12\x39\n\x0cretry_policy\x18\x0c \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12!\n\x15use_workflow_build_id\x18\r \x01(\x08\x42\x02\x18\x01\x12\x32\n\x08priority\x18\x0e \x01(\x0b\x32 .temporal.api.common.v1.PriorityJ\x04\x08\x03\x10\x04"\x9e\x02\n"ActivityTaskStartedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x10\n\x08identity\x18\x02 \x01(\t\x12\x12\n\nrequest_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x05\x12\x36\n\x0clast_failure\x18\x05 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x46\n\x0eworker_version\x18\x06 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12%\n\x19\x62uild_id_redirect_counter\x18\x07 \x01(\x03\x42\x02\x18\x01"\xe8\x01\n$ActivityTaskCompletedEventAttributes\x12\x30\n\x06result\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x1a\n\x12scheduled_event_id\x18\x02 \x01(\x03\x12\x18\n\x10started_event_id\x18\x03 \x01(\x03\x12\x10\n\x08identity\x18\x04 \x01(\t\x12\x46\n\x0eworker_version\x18\x05 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01"\xdd\x02\n!ActivityTaskFailedEventAttributes\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x1a\n\x12scheduled_event_id\x18\x02 \x01(\x03\x12\x18\n\x10started_event_id\x18\x03 \x01(\x03\x12\x10\n\x08identity\x18\x04 \x01(\t\x12\x36\n\x0bretry_state\x18\x05 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState\x12\x46\n\x0eworker_version\x18\x06 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01\x12=\n\x05\x63\x61use\x18\x07 \x01(\x0e\x32..temporal.api.enums.v1.ActivityTaskFailedCause"\xc6\x01\n#ActivityTaskTimedOutEventAttributes\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x1a\n\x12scheduled_event_id\x18\x02 \x01(\x03\x12\x18\n\x10started_event_id\x18\x03 \x01(\x03\x12\x36\n\x0bretry_state\x18\x04 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState"r\n*ActivityTaskCancelRequestedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03"\x92\x02\n#ActivityTaskCanceledEventAttributes\x12\x31\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12(\n latest_cancel_requested_event_id\x18\x02 \x01(\x03\x12\x1a\n\x12scheduled_event_id\x18\x03 \x01(\x03\x12\x18\n\x10started_event_id\x18\x04 \x01(\x03\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x46\n\x0eworker_version\x18\x06 \x01(\x0b\x32*.temporal.api.common.v1.WorkerVersionStampB\x02\x18\x01"\x93\x01\n\x1bTimerStartedEventAttributes\x12\x10\n\x08timer_id\x18\x01 \x01(\t\x12\x38\n\x15start_to_fire_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12(\n workflow_task_completed_event_id\x18\x03 \x01(\x03"G\n\x19TimerFiredEventAttributes\x12\x10\n\x08timer_id\x18\x01 \x01(\t\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03"\x86\x01\n\x1cTimerCanceledEventAttributes\x12\x10\n\x08timer_id\x18\x01 \x01(\t\x12\x18\n\x10started_event_id\x18\x02 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x03 \x01(\x03\x12\x10\n\x08identity\x18\x04 \x01(\t"\xc7\x01\n/WorkflowExecutionCancelRequestedEventAttributes\x12\r\n\x05\x63\x61use\x18\x01 \x01(\t\x12#\n\x1b\x65xternal_initiated_event_id\x18\x02 \x01(\x03\x12N\n\x1b\x65xternal_workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x10\n\x08identity\x18\x04 \x01(\t"\x87\x01\n(WorkflowExecutionCanceledEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x31\n\x07\x64\x65tails\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Payloads"\xe9\x02\n\x1dMarkerRecordedEventAttributes\x12\x13\n\x0bmarker_name\x18\x01 \x01(\t\x12T\n\x07\x64\x65tails\x18\x02 \x03(\x0b\x32\x43.temporal.api.history.v1.MarkerRecordedEventAttributes.DetailsEntry\x12(\n workflow_task_completed_event_id\x18\x03 \x01(\x03\x12.\n\x06header\x18\x04 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12\x31\n\x07\x66\x61ilure\x18\x05 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x1aP\n\x0c\x44\x65tailsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Payloads:\x02\x38\x01"\xbf\x02\n(WorkflowExecutionSignaledEventAttributes\x12\x13\n\x0bsignal_name\x18\x01 \x01(\t\x12/\n\x05input\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x10\n\x08identity\x18\x03 \x01(\t\x12.\n\x06header\x18\x04 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12\'\n\x1bskip_generate_workflow_task\x18\x05 \x01(\x08\x42\x02\x18\x01\x12N\n\x1b\x65xternal_workflow_execution\x18\x06 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x12\n\nrequest_id\x18\x07 \x01(\t"\x81\x01\n*WorkflowExecutionTerminatedEventAttributes\x12\x0e\n\x06reason\x18\x01 \x01(\t\x12\x31\n\x07\x64\x65tails\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x10\n\x08identity\x18\x03 \x01(\t"\x9c\x02\n>RequestCancelExternalWorkflowExecutionInitiatedEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x13\n\x07\x63ontrol\x18\x04 \x01(\tB\x02\x18\x01\x12\x1b\n\x13\x63hild_workflow_only\x18\x05 \x01(\x08\x12\x0e\n\x06reason\x18\x06 \x01(\t"\xda\x02\n;RequestCancelExternalWorkflowExecutionFailedEventAttributes\x12P\n\x05\x63\x61use\x18\x01 \x01(\x0e\x32\x41.temporal.api.enums.v1.CancelExternalWorkflowExecutionFailedCause\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x11\n\tnamespace\x18\x03 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x04 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x13\n\x07\x63ontrol\x18\x06 \x01(\tB\x02\x18\x01"\xc5\x01\n7ExternalWorkflowExecutionCancelRequestedEventAttributes\x12\x1a\n\x12initiated_event_id\x18\x01 \x01(\x03\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x04 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution"\xfb\x02\n7SignalExternalWorkflowExecutionInitiatedEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\t \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x13\n\x0bsignal_name\x18\x04 \x01(\t\x12/\n\x05input\x18\x05 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x13\n\x07\x63ontrol\x18\x06 \x01(\tB\x02\x18\x01\x12\x1b\n\x13\x63hild_workflow_only\x18\x07 \x01(\x08\x12.\n\x06header\x18\x08 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header"\xd3\x02\n4SignalExternalWorkflowExecutionFailedEventAttributes\x12P\n\x05\x63\x61use\x18\x01 \x01(\x0e\x32\x41.temporal.api.enums.v1.SignalExternalWorkflowExecutionFailedCause\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x11\n\tnamespace\x18\x03 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x04 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x13\n\x07\x63ontrol\x18\x06 \x01(\tB\x02\x18\x01"\xd3\x01\n0ExternalWorkflowExecutionSignaledEventAttributes\x12\x1a\n\x12initiated_event_id\x18\x01 \x01(\x03\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x05 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x13\n\x07\x63ontrol\x18\x04 \x01(\tB\x02\x18\x01"\x9e\x01\n-UpsertWorkflowSearchAttributesEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x43\n\x11search_attributes\x18\x02 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes"\x8a\x01\n)WorkflowPropertiesModifiedEventAttributes\x12(\n workflow_task_completed_event_id\x18\x01 \x01(\x03\x12\x33\n\rupserted_memo\x18\x02 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo"\xfc\t\n3StartChildWorkflowExecutionInitiatedEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x12 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12;\n\rworkflow_type\x18\x03 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x38\n\ntask_queue\x18\x04 \x01(\x0b\x32$.temporal.api.taskqueue.v1.TaskQueue\x12/\n\x05input\x18\x05 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12=\n\x1aworkflow_execution_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x45\n\x13parent_close_policy\x18\t \x01(\x0e\x32(.temporal.api.enums.v1.ParentClosePolicy\x12\x13\n\x07\x63ontrol\x18\n \x01(\tB\x02\x18\x01\x12(\n workflow_task_completed_event_id\x18\x0b \x01(\x03\x12N\n\x18workflow_id_reuse_policy\x18\x0c \x01(\x0e\x32,.temporal.api.enums.v1.WorkflowIdReusePolicy\x12\x39\n\x0cretry_policy\x18\r \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x15\n\rcron_schedule\x18\x0e \x01(\t\x12.\n\x06header\x18\x0f \x01(\x0b\x32\x1e.temporal.api.common.v1.Header\x12*\n\x04memo\x18\x10 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\x12\x43\n\x11search_attributes\x18\x11 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x1c\n\x10inherit_build_id\x18\x13 \x01(\x08\x42\x02\x18\x01\x12\x32\n\x08priority\x18\x14 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12H\n\x14time_skipping_config\x18\x15 \x01(\x0b\x32*.temporal.api.common.v1.TimeSkippingConfig\x12]\n\x1ftime_skipping_state_propagation\x18\x17 \x01(\x0b\x32\x34.temporal.api.common.v1.TimeSkippingStatePropagation\x12I\n\x13versioning_override\x18\x18 \x01(\x0b\x32,.temporal.api.workflow.v1.VersioningOverrideJ\x04\x08\x16\x10\x17R\x18initial_skipped_duration"\xd6\x02\n0StartChildWorkflowExecutionFailedEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x08 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12;\n\rworkflow_type\x18\x03 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12L\n\x05\x63\x61use\x18\x04 \x01(\x0e\x32=.temporal.api.enums.v1.StartChildWorkflowExecutionFailedCause\x12\x13\n\x07\x63ontrol\x18\x05 \x01(\tB\x02\x18\x01\x12\x1a\n\x12initiated_event_id\x18\x06 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x07 \x01(\x03"\xa7\x02\n,ChildWorkflowExecutionStartedEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x06 \x01(\t\x12\x1a\n\x12initiated_event_id\x18\x02 \x01(\x03\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x04 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12.\n\x06header\x18\x05 \x01(\x0b\x32\x1e.temporal.api.common.v1.Header"\xc5\x02\n.ChildWorkflowExecutionCompletedEventAttributes\x12\x30\n\x06result\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x04 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x18\n\x10started_event_id\x18\x06 \x01(\x03"\xfb\x02\n+ChildWorkflowExecutionFailedEventAttributes\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x08 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x04 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x18\n\x10started_event_id\x18\x06 \x01(\x03\x12\x36\n\x0bretry_state\x18\x07 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState"\xc5\x02\n-ChildWorkflowExecutionCanceledEventAttributes\x12\x31\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x03 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x04 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x05 \x01(\x03\x12\x18\n\x10started_event_id\x18\x06 \x01(\x03"\xca\x02\n-ChildWorkflowExecutionTimedOutEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x07 \x01(\t\x12\x45\n\x12workflow_execution\x18\x02 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x03 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x04 \x01(\x03\x12\x18\n\x10started_event_id\x18\x05 \x01(\x03\x12\x36\n\x0bretry_state\x18\x06 \x01(\x0e\x32!.temporal.api.enums.v1.RetryState"\x94\x02\n/ChildWorkflowExecutionTerminatedEventAttributes\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x14\n\x0cnamespace_id\x18\x06 \x01(\t\x12\x45\n\x12workflow_execution\x18\x02 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12;\n\rworkflow_type\x18\x03 \x01(\x0b\x32$.temporal.api.common.v1.WorkflowType\x12\x1a\n\x12initiated_event_id\x18\x04 \x01(\x03\x12\x18\n\x10started_event_id\x18\x05 \x01(\x03"\xda\x05\n.WorkflowExecutionOptionsUpdatedEventAttributes\x12I\n\x13versioning_override\x18\x01 \x01(\x0b\x32,.temporal.api.workflow.v1.VersioningOverride\x12!\n\x19unset_versioning_override\x18\x02 \x01(\x08\x12\x1b\n\x13\x61ttached_request_id\x18\x03 \x01(\t\x12G\n\x1d\x61ttached_completion_callbacks\x18\x04 \x03(\x0b\x32 .temporal.api.common.v1.Callback\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x32\n\x08priority\x18\x06 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12H\n\x14time_skipping_config\x18\x07 \x01(\x0b\x32*.temporal.api.common.v1.TimeSkippingConfig\x12$\n\x1ctime_skipping_config_updated\x18\t \x01(\x08\x12\x84\x01\n\x17workflow_update_options\x18\x08 \x03(\x0b\x32\x63.temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributes.WorkflowUpdateOptionsUpdate\x1a\x96\x01\n\x1bWorkflowUpdateOptionsUpdate\x12\x11\n\tupdate_id\x18\x01 \x01(\t\x12\x1b\n\x13\x61ttached_request_id\x18\x02 \x01(\t\x12G\n\x1d\x61ttached_completion_callbacks\x18\x03 \x03(\x0b\x32 .temporal.api.common.v1.Callback"\xc0\x02\n3WorkflowPropertiesModifiedExternallyEventAttributes\x12\x16\n\x0enew_task_queue\x18\x01 \x01(\t\x12<\n\x19new_workflow_task_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration\x12;\n\x18new_workflow_run_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x41\n\x1enew_workflow_execution_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x33\n\rupserted_memo\x18\x05 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo"\x90\x01\n3ActivityPropertiesModifiedExternallyEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12=\n\x10new_retry_policy\x18\x02 \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy"\xdc\x01\n.WorkflowExecutionUpdateAcceptedEventAttributes\x12\x1c\n\x14protocol_instance_id\x18\x01 \x01(\t\x12#\n\x1b\x61\x63\x63\x65pted_request_message_id\x18\x02 \x01(\t\x12,\n$accepted_request_sequencing_event_id\x18\x03 \x01(\x03\x12\x39\n\x10\x61\x63\x63\x65pted_request\x18\x04 \x01(\x0b\x32\x1f.temporal.api.update.v1.Request"\xaa\x01\n/WorkflowExecutionUpdateCompletedEventAttributes\x12*\n\x04meta\x18\x01 \x01(\x0b\x32\x1c.temporal.api.update.v1.Meta\x12\x19\n\x11\x61\x63\x63\x65pted_event_id\x18\x03 \x01(\x03\x12\x30\n\x07outcome\x18\x02 \x01(\x0b\x32\x1f.temporal.api.update.v1.Outcome"\x8f\x02\n.WorkflowExecutionUpdateRejectedEventAttributes\x12\x1c\n\x14protocol_instance_id\x18\x01 \x01(\t\x12#\n\x1brejected_request_message_id\x18\x02 \x01(\t\x12,\n$rejected_request_sequencing_event_id\x18\x03 \x01(\x03\x12\x39\n\x10rejected_request\x18\x04 \x01(\x0b\x32\x1f.temporal.api.update.v1.Request\x12\x31\n\x07\x66\x61ilure\x18\x05 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\xa4\x01\n.WorkflowExecutionUpdateAdmittedEventAttributes\x12\x30\n\x07request\x18\x01 \x01(\x0b\x32\x1f.temporal.api.update.v1.Request\x12@\n\x06origin\x18\x02 \x01(\x0e\x32\x30.temporal.api.enums.v1.UpdateAdmittedEventOrigin"^\n&WorkflowExecutionPausedEventAttributes\x12\x10\n\x08identity\x18\x01 \x01(\t\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12\x12\n\nrequest_id\x18\x03 \x01(\t"`\n(WorkflowExecutionUnpausedEventAttributes\x12\x10\n\x08identity\x18\x01 \x01(\t\x12\x0e\n\x06reason\x18\x02 \x01(\t\x12\x12\n\nrequest_id\x18\x03 \x01(\t"\xc5\x01\n8WorkflowExecutionTimeSkippingTransitionedEventAttributes\x12/\n\x0btarget_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12#\n\x1b\x64isabled_after_fast_forward\x18\x02 \x01(\x08\x12\x33\n\x0fwall_clock_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"\xb4\x04\n&NexusOperationScheduledEventAttributes\x12\x10\n\x08\x65ndpoint\x18\x01 \x01(\t\x12\x0f\n\x07service\x18\x02 \x01(\t\x12\x11\n\toperation\x18\x03 \x01(\t\x12.\n\x05input\x18\x04 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x66\n\x0cnexus_header\x18\x06 \x03(\x0b\x32P.temporal.api.history.v1.NexusOperationScheduledEventAttributes.NexusHeaderEntry\x12(\n workflow_task_completed_event_id\x18\x07 \x01(\x03\x12\x12\n\nrequest_id\x18\x08 \x01(\t\x12\x13\n\x0b\x65ndpoint_id\x18\t \x01(\t\x12<\n\x19schedule_to_start_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x1a\x32\n\x10NexusHeaderEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x89\x01\n$NexusOperationStartedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x18\n\x0coperation_id\x18\x03 \x01(\tB\x02\x18\x01\x12\x12\n\nrequest_id\x18\x04 \x01(\t\x12\x17\n\x0foperation_token\x18\x05 \x01(\t"\x89\x01\n&NexusOperationCompletedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12/\n\x06result\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x12\n\nrequest_id\x18\x03 \x01(\t"\x88\x01\n#NexusOperationFailedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x12\n\nrequest_id\x18\x03 \x01(\t"\x8a\x01\n%NexusOperationTimedOutEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x12\n\nrequest_id\x18\x03 \x01(\t"\x8a\x01\n%NexusOperationCanceledEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x12\n\nrequest_id\x18\x03 \x01(\t"t\n,NexusOperationCancelRequestedEventAttributes\x12\x1a\n\x12scheduled_event_id\x18\x01 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03"\x97\x01\n3NexusOperationCancelRequestCompletedEventAttributes\x12\x1a\n\x12requested_event_id\x18\x01 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x1a\n\x12scheduled_event_id\x18\x03 \x01(\x03"\xc7\x01\n0NexusOperationCancelRequestFailedEventAttributes\x12\x1a\n\x12requested_event_id\x18\x01 \x01(\x03\x12(\n workflow_task_completed_event_id\x18\x02 \x01(\x03\x12\x31\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x1a\n\x12scheduled_event_id\x18\x04 \x01(\x03"\xca?\n\x0cHistoryEvent\x12\x10\n\x08\x65vent_id\x18\x01 \x01(\x03\x12.\n\nevent_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x34\n\nevent_type\x18\x03 \x01(\x0e\x32 .temporal.api.enums.v1.EventType\x12\x0f\n\x07version\x18\x04 \x01(\x03\x12\x0f\n\x07task_id\x18\x05 \x01(\x03\x12\x1a\n\x11worker_may_ignore\x18\xac\x02 \x01(\x08\x12\x39\n\ruser_metadata\x18\xad\x02 \x01(\x0b\x32!.temporal.api.sdk.v1.UserMetadata\x12,\n\x05links\x18\xae\x02 \x03(\x0b\x32\x1c.temporal.api.common.v1.Link\x12\x35\n\tprincipal\x18\xaf\x02 \x01(\x0b\x32!.temporal.api.common.v1.Principal\x12\x43\n\x13\x65vent_group_markers\x18\xb0\x02 \x03(\x0b\x32%.temporal.api.sdk.v1.EventGroupMarker\x12w\n+workflow_execution_started_event_attributes\x18\x06 \x01(\x0b\x32@.temporal.api.history.v1.WorkflowExecutionStartedEventAttributesH\x00\x12{\n-workflow_execution_completed_event_attributes\x18\x07 \x01(\x0b\x32\x42.temporal.api.history.v1.WorkflowExecutionCompletedEventAttributesH\x00\x12u\n*workflow_execution_failed_event_attributes\x18\x08 \x01(\x0b\x32?.temporal.api.history.v1.WorkflowExecutionFailedEventAttributesH\x00\x12z\n-workflow_execution_timed_out_event_attributes\x18\t \x01(\x0b\x32\x41.temporal.api.history.v1.WorkflowExecutionTimedOutEventAttributesH\x00\x12q\n(workflow_task_scheduled_event_attributes\x18\n \x01(\x0b\x32=.temporal.api.history.v1.WorkflowTaskScheduledEventAttributesH\x00\x12m\n&workflow_task_started_event_attributes\x18\x0b \x01(\x0b\x32;.temporal.api.history.v1.WorkflowTaskStartedEventAttributesH\x00\x12q\n(workflow_task_completed_event_attributes\x18\x0c \x01(\x0b\x32=.temporal.api.history.v1.WorkflowTaskCompletedEventAttributesH\x00\x12p\n(workflow_task_timed_out_event_attributes\x18\r \x01(\x0b\x32<.temporal.api.history.v1.WorkflowTaskTimedOutEventAttributesH\x00\x12k\n%workflow_task_failed_event_attributes\x18\x0e \x01(\x0b\x32:.temporal.api.history.v1.WorkflowTaskFailedEventAttributesH\x00\x12q\n(activity_task_scheduled_event_attributes\x18\x0f \x01(\x0b\x32=.temporal.api.history.v1.ActivityTaskScheduledEventAttributesH\x00\x12m\n&activity_task_started_event_attributes\x18\x10 \x01(\x0b\x32;.temporal.api.history.v1.ActivityTaskStartedEventAttributesH\x00\x12q\n(activity_task_completed_event_attributes\x18\x11 \x01(\x0b\x32=.temporal.api.history.v1.ActivityTaskCompletedEventAttributesH\x00\x12k\n%activity_task_failed_event_attributes\x18\x12 \x01(\x0b\x32:.temporal.api.history.v1.ActivityTaskFailedEventAttributesH\x00\x12p\n(activity_task_timed_out_event_attributes\x18\x13 \x01(\x0b\x32<.temporal.api.history.v1.ActivityTaskTimedOutEventAttributesH\x00\x12^\n\x1etimer_started_event_attributes\x18\x14 \x01(\x0b\x32\x34.temporal.api.history.v1.TimerStartedEventAttributesH\x00\x12Z\n\x1ctimer_fired_event_attributes\x18\x15 \x01(\x0b\x32\x32.temporal.api.history.v1.TimerFiredEventAttributesH\x00\x12~\n/activity_task_cancel_requested_event_attributes\x18\x16 \x01(\x0b\x32\x43.temporal.api.history.v1.ActivityTaskCancelRequestedEventAttributesH\x00\x12o\n\'activity_task_canceled_event_attributes\x18\x17 \x01(\x0b\x32<.temporal.api.history.v1.ActivityTaskCanceledEventAttributesH\x00\x12`\n\x1ftimer_canceled_event_attributes\x18\x18 \x01(\x0b\x32\x35.temporal.api.history.v1.TimerCanceledEventAttributesH\x00\x12\x62\n marker_recorded_event_attributes\x18\x19 \x01(\x0b\x32\x36.temporal.api.history.v1.MarkerRecordedEventAttributesH\x00\x12y\n,workflow_execution_signaled_event_attributes\x18\x1a \x01(\x0b\x32\x41.temporal.api.history.v1.WorkflowExecutionSignaledEventAttributesH\x00\x12}\n.workflow_execution_terminated_event_attributes\x18\x1b \x01(\x0b\x32\x43.temporal.api.history.v1.WorkflowExecutionTerminatedEventAttributesH\x00\x12\x88\x01\n4workflow_execution_cancel_requested_event_attributes\x18\x1c \x01(\x0b\x32H.temporal.api.history.v1.WorkflowExecutionCancelRequestedEventAttributesH\x00\x12y\n,workflow_execution_canceled_event_attributes\x18\x1d \x01(\x0b\x32\x41.temporal.api.history.v1.WorkflowExecutionCanceledEventAttributesH\x00\x12\xa8\x01\nErequest_cancel_external_workflow_execution_initiated_event_attributes\x18\x1e \x01(\x0b\x32W.temporal.api.history.v1.RequestCancelExternalWorkflowExecutionInitiatedEventAttributesH\x00\x12\xa2\x01\nBrequest_cancel_external_workflow_execution_failed_event_attributes\x18\x1f \x01(\x0b\x32T.temporal.api.history.v1.RequestCancelExternalWorkflowExecutionFailedEventAttributesH\x00\x12\x99\x01\n=external_workflow_execution_cancel_requested_event_attributes\x18 \x01(\x0b\x32P.temporal.api.history.v1.ExternalWorkflowExecutionCancelRequestedEventAttributesH\x00\x12\x87\x01\n4workflow_execution_continued_as_new_event_attributes\x18! \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionContinuedAsNewEventAttributesH\x00\x12\x91\x01\n9start_child_workflow_execution_initiated_event_attributes\x18" \x01(\x0b\x32L.temporal.api.history.v1.StartChildWorkflowExecutionInitiatedEventAttributesH\x00\x12\x8b\x01\n6start_child_workflow_execution_failed_event_attributes\x18# \x01(\x0b\x32I.temporal.api.history.v1.StartChildWorkflowExecutionFailedEventAttributesH\x00\x12\x82\x01\n1child_workflow_execution_started_event_attributes\x18$ \x01(\x0b\x32\x45.temporal.api.history.v1.ChildWorkflowExecutionStartedEventAttributesH\x00\x12\x86\x01\n3child_workflow_execution_completed_event_attributes\x18% \x01(\x0b\x32G.temporal.api.history.v1.ChildWorkflowExecutionCompletedEventAttributesH\x00\x12\x80\x01\n0child_workflow_execution_failed_event_attributes\x18& \x01(\x0b\x32\x44.temporal.api.history.v1.ChildWorkflowExecutionFailedEventAttributesH\x00\x12\x84\x01\n2child_workflow_execution_canceled_event_attributes\x18\' \x01(\x0b\x32\x46.temporal.api.history.v1.ChildWorkflowExecutionCanceledEventAttributesH\x00\x12\x85\x01\n3child_workflow_execution_timed_out_event_attributes\x18( \x01(\x0b\x32\x46.temporal.api.history.v1.ChildWorkflowExecutionTimedOutEventAttributesH\x00\x12\x88\x01\n4child_workflow_execution_terminated_event_attributes\x18) \x01(\x0b\x32H.temporal.api.history.v1.ChildWorkflowExecutionTerminatedEventAttributesH\x00\x12\x99\x01\n=signal_external_workflow_execution_initiated_event_attributes\x18* \x01(\x0b\x32P.temporal.api.history.v1.SignalExternalWorkflowExecutionInitiatedEventAttributesH\x00\x12\x93\x01\n:signal_external_workflow_execution_failed_event_attributes\x18+ \x01(\x0b\x32M.temporal.api.history.v1.SignalExternalWorkflowExecutionFailedEventAttributesH\x00\x12\x8a\x01\n5external_workflow_execution_signaled_event_attributes\x18, \x01(\x0b\x32I.temporal.api.history.v1.ExternalWorkflowExecutionSignaledEventAttributesH\x00\x12\x84\x01\n2upsert_workflow_search_attributes_event_attributes\x18- \x01(\x0b\x32\x46.temporal.api.history.v1.UpsertWorkflowSearchAttributesEventAttributesH\x00\x12\x86\x01\n3workflow_execution_update_accepted_event_attributes\x18. \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionUpdateAcceptedEventAttributesH\x00\x12\x86\x01\n3workflow_execution_update_rejected_event_attributes\x18/ \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionUpdateRejectedEventAttributesH\x00\x12\x88\x01\n4workflow_execution_update_completed_event_attributes\x18\x30 \x01(\x0b\x32H.temporal.api.history.v1.WorkflowExecutionUpdateCompletedEventAttributesH\x00\x12\x90\x01\n8workflow_properties_modified_externally_event_attributes\x18\x31 \x01(\x0b\x32L.temporal.api.history.v1.WorkflowPropertiesModifiedExternallyEventAttributesH\x00\x12\x90\x01\n8activity_properties_modified_externally_event_attributes\x18\x32 \x01(\x0b\x32L.temporal.api.history.v1.ActivityPropertiesModifiedExternallyEventAttributesH\x00\x12{\n-workflow_properties_modified_event_attributes\x18\x33 \x01(\x0b\x32\x42.temporal.api.history.v1.WorkflowPropertiesModifiedEventAttributesH\x00\x12\x86\x01\n3workflow_execution_update_admitted_event_attributes\x18\x34 \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionUpdateAdmittedEventAttributesH\x00\x12u\n*nexus_operation_scheduled_event_attributes\x18\x35 \x01(\x0b\x32?.temporal.api.history.v1.NexusOperationScheduledEventAttributesH\x00\x12q\n(nexus_operation_started_event_attributes\x18\x36 \x01(\x0b\x32=.temporal.api.history.v1.NexusOperationStartedEventAttributesH\x00\x12u\n*nexus_operation_completed_event_attributes\x18\x37 \x01(\x0b\x32?.temporal.api.history.v1.NexusOperationCompletedEventAttributesH\x00\x12o\n\'nexus_operation_failed_event_attributes\x18\x38 \x01(\x0b\x32<.temporal.api.history.v1.NexusOperationFailedEventAttributesH\x00\x12s\n)nexus_operation_canceled_event_attributes\x18\x39 \x01(\x0b\x32>.temporal.api.history.v1.NexusOperationCanceledEventAttributesH\x00\x12t\n*nexus_operation_timed_out_event_attributes\x18: \x01(\x0b\x32>.temporal.api.history.v1.NexusOperationTimedOutEventAttributesH\x00\x12\x82\x01\n1nexus_operation_cancel_requested_event_attributes\x18; \x01(\x0b\x32\x45.temporal.api.history.v1.NexusOperationCancelRequestedEventAttributesH\x00\x12\x86\x01\n3workflow_execution_options_updated_event_attributes\x18< \x01(\x0b\x32G.temporal.api.history.v1.WorkflowExecutionOptionsUpdatedEventAttributesH\x00\x12\x91\x01\n9nexus_operation_cancel_request_completed_event_attributes\x18= \x01(\x0b\x32L.temporal.api.history.v1.NexusOperationCancelRequestCompletedEventAttributesH\x00\x12\x8b\x01\n6nexus_operation_cancel_request_failed_event_attributes\x18> \x01(\x0b\x32I.temporal.api.history.v1.NexusOperationCancelRequestFailedEventAttributesH\x00\x12u\n*workflow_execution_paused_event_attributes\x18? \x01(\x0b\x32?.temporal.api.history.v1.WorkflowExecutionPausedEventAttributesH\x00\x12y\n,workflow_execution_unpaused_event_attributes\x18@ \x01(\x0b\x32\x41.temporal.api.history.v1.WorkflowExecutionUnpausedEventAttributesH\x00\x12\x9b\x01\n>workflow_execution_time_skipping_transitioned_event_attributes\x18\x41 \x01(\x0b\x32Q.temporal.api.history.v1.WorkflowExecutionTimeSkippingTransitionedEventAttributesH\x00\x42\x0c\n\nattributes"@\n\x07History\x12\x35\n\x06\x65vents\x18\x01 \x03(\x0b\x32%.temporal.api.history.v1.HistoryEventB\x8e\x01\n\x1aio.temporal.api.history.v1B\x0cMessageProtoP\x01Z%go.temporal.io/api/history/v1;history\xaa\x02\x19Temporalio.Api.History.V1\xea\x02\x1cTemporalio::Api::History::V1b\x06proto3' ) @@ -1210,140 +1211,140 @@ _NEXUSOPERATIONSTARTEDEVENTATTRIBUTES.fields_by_name[ "operation_id" ]._serialized_options = b"\030\001" - _WORKFLOWEXECUTIONSTARTEDEVENTATTRIBUTES._serialized_start = 663 - _WORKFLOWEXECUTIONSTARTEDEVENTATTRIBUTES._serialized_end = 3057 - _DECLINEDTARGETVERSIONUPGRADE._serialized_start = 3060 - _DECLINEDTARGETVERSIONUPGRADE._serialized_end = 3196 - _WORKFLOWEXECUTIONCOMPLETEDEVENTATTRIBUTES._serialized_start = 3199 - _WORKFLOWEXECUTIONCOMPLETEDEVENTATTRIBUTES._serialized_end = 3364 - _WORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = 3367 - _WORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 3586 - _WORKFLOWEXECUTIONTIMEDOUTEVENTATTRIBUTES._serialized_start = 3589 - _WORKFLOWEXECUTIONTIMEDOUTEVENTATTRIBUTES._serialized_end = 3717 - _WORKFLOWEXECUTIONCONTINUEDASNEWEVENTATTRIBUTES._serialized_start = 3720 - _WORKFLOWEXECUTIONCONTINUEDASNEWEVENTATTRIBUTES._serialized_end = 4653 - _WORKFLOWTASKSCHEDULEDEVENTATTRIBUTES._serialized_start = 4656 - _WORKFLOWTASKSCHEDULEDEVENTATTRIBUTES._serialized_end = 4828 - _WORKFLOWTASKSTARTEDEVENTATTRIBUTES._serialized_start = 4831 - _WORKFLOWTASKSTARTEDEVENTATTRIBUTES._serialized_end = 5247 - _WORKFLOWTASKCOMPLETEDEVENTATTRIBUTES._serialized_start = 5250 - _WORKFLOWTASKCOMPLETEDEVENTATTRIBUTES._serialized_end = 5892 - _WORKFLOWTASKTIMEDOUTEVENTATTRIBUTES._serialized_start = 5895 - _WORKFLOWTASKTIMEDOUTEVENTATTRIBUTES._serialized_end = 6044 - _WORKFLOWTASKFAILEDEVENTATTRIBUTES._serialized_start = 6047 - _WORKFLOWTASKFAILEDEVENTATTRIBUTES._serialized_end = 6438 - _ACTIVITYTASKSCHEDULEDEVENTATTRIBUTES._serialized_start = 6441 - _ACTIVITYTASKSCHEDULEDEVENTATTRIBUTES._serialized_end = 7147 - _ACTIVITYTASKSTARTEDEVENTATTRIBUTES._serialized_start = 7150 - _ACTIVITYTASKSTARTEDEVENTATTRIBUTES._serialized_end = 7436 - _ACTIVITYTASKCOMPLETEDEVENTATTRIBUTES._serialized_start = 7439 - _ACTIVITYTASKCOMPLETEDEVENTATTRIBUTES._serialized_end = 7671 - _ACTIVITYTASKFAILEDEVENTATTRIBUTES._serialized_start = 7674 - _ACTIVITYTASKFAILEDEVENTATTRIBUTES._serialized_end = 8023 - _ACTIVITYTASKTIMEDOUTEVENTATTRIBUTES._serialized_start = 8026 - _ACTIVITYTASKTIMEDOUTEVENTATTRIBUTES._serialized_end = 8224 - _ACTIVITYTASKCANCELREQUESTEDEVENTATTRIBUTES._serialized_start = 8226 - _ACTIVITYTASKCANCELREQUESTEDEVENTATTRIBUTES._serialized_end = 8340 - _ACTIVITYTASKCANCELEDEVENTATTRIBUTES._serialized_start = 8343 - _ACTIVITYTASKCANCELEDEVENTATTRIBUTES._serialized_end = 8617 - _TIMERSTARTEDEVENTATTRIBUTES._serialized_start = 8620 - _TIMERSTARTEDEVENTATTRIBUTES._serialized_end = 8767 - _TIMERFIREDEVENTATTRIBUTES._serialized_start = 8769 - _TIMERFIREDEVENTATTRIBUTES._serialized_end = 8840 - _TIMERCANCELEDEVENTATTRIBUTES._serialized_start = 8843 - _TIMERCANCELEDEVENTATTRIBUTES._serialized_end = 8977 - _WORKFLOWEXECUTIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_start = 8980 - _WORKFLOWEXECUTIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_end = 9179 - _WORKFLOWEXECUTIONCANCELEDEVENTATTRIBUTES._serialized_start = 9182 - _WORKFLOWEXECUTIONCANCELEDEVENTATTRIBUTES._serialized_end = 9317 - _MARKERRECORDEDEVENTATTRIBUTES._serialized_start = 9320 - _MARKERRECORDEDEVENTATTRIBUTES._serialized_end = 9681 - _MARKERRECORDEDEVENTATTRIBUTES_DETAILSENTRY._serialized_start = 9601 - _MARKERRECORDEDEVENTATTRIBUTES_DETAILSENTRY._serialized_end = 9681 - _WORKFLOWEXECUTIONSIGNALEDEVENTATTRIBUTES._serialized_start = 9684 - _WORKFLOWEXECUTIONSIGNALEDEVENTATTRIBUTES._serialized_end = 10003 - _WORKFLOWEXECUTIONTERMINATEDEVENTATTRIBUTES._serialized_start = 10006 - _WORKFLOWEXECUTIONTERMINATEDEVENTATTRIBUTES._serialized_end = 10135 - _REQUESTCANCELEXTERNALWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_start = 10138 + _WORKFLOWEXECUTIONSTARTEDEVENTATTRIBUTES._serialized_start = 690 + _WORKFLOWEXECUTIONSTARTEDEVENTATTRIBUTES._serialized_end = 3084 + _DECLINEDTARGETVERSIONUPGRADE._serialized_start = 3087 + _DECLINEDTARGETVERSIONUPGRADE._serialized_end = 3223 + _WORKFLOWEXECUTIONCOMPLETEDEVENTATTRIBUTES._serialized_start = 3226 + _WORKFLOWEXECUTIONCOMPLETEDEVENTATTRIBUTES._serialized_end = 3391 + _WORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = 3394 + _WORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 3613 + _WORKFLOWEXECUTIONTIMEDOUTEVENTATTRIBUTES._serialized_start = 3616 + _WORKFLOWEXECUTIONTIMEDOUTEVENTATTRIBUTES._serialized_end = 3744 + _WORKFLOWEXECUTIONCONTINUEDASNEWEVENTATTRIBUTES._serialized_start = 3747 + _WORKFLOWEXECUTIONCONTINUEDASNEWEVENTATTRIBUTES._serialized_end = 4680 + _WORKFLOWTASKSCHEDULEDEVENTATTRIBUTES._serialized_start = 4683 + _WORKFLOWTASKSCHEDULEDEVENTATTRIBUTES._serialized_end = 4898 + _WORKFLOWTASKSTARTEDEVENTATTRIBUTES._serialized_start = 4901 + _WORKFLOWTASKSTARTEDEVENTATTRIBUTES._serialized_end = 5317 + _WORKFLOWTASKCOMPLETEDEVENTATTRIBUTES._serialized_start = 5320 + _WORKFLOWTASKCOMPLETEDEVENTATTRIBUTES._serialized_end = 5962 + _WORKFLOWTASKTIMEDOUTEVENTATTRIBUTES._serialized_start = 5965 + _WORKFLOWTASKTIMEDOUTEVENTATTRIBUTES._serialized_end = 6114 + _WORKFLOWTASKFAILEDEVENTATTRIBUTES._serialized_start = 6117 + _WORKFLOWTASKFAILEDEVENTATTRIBUTES._serialized_end = 6508 + _ACTIVITYTASKSCHEDULEDEVENTATTRIBUTES._serialized_start = 6511 + _ACTIVITYTASKSCHEDULEDEVENTATTRIBUTES._serialized_end = 7217 + _ACTIVITYTASKSTARTEDEVENTATTRIBUTES._serialized_start = 7220 + _ACTIVITYTASKSTARTEDEVENTATTRIBUTES._serialized_end = 7506 + _ACTIVITYTASKCOMPLETEDEVENTATTRIBUTES._serialized_start = 7509 + _ACTIVITYTASKCOMPLETEDEVENTATTRIBUTES._serialized_end = 7741 + _ACTIVITYTASKFAILEDEVENTATTRIBUTES._serialized_start = 7744 + _ACTIVITYTASKFAILEDEVENTATTRIBUTES._serialized_end = 8093 + _ACTIVITYTASKTIMEDOUTEVENTATTRIBUTES._serialized_start = 8096 + _ACTIVITYTASKTIMEDOUTEVENTATTRIBUTES._serialized_end = 8294 + _ACTIVITYTASKCANCELREQUESTEDEVENTATTRIBUTES._serialized_start = 8296 + _ACTIVITYTASKCANCELREQUESTEDEVENTATTRIBUTES._serialized_end = 8410 + _ACTIVITYTASKCANCELEDEVENTATTRIBUTES._serialized_start = 8413 + _ACTIVITYTASKCANCELEDEVENTATTRIBUTES._serialized_end = 8687 + _TIMERSTARTEDEVENTATTRIBUTES._serialized_start = 8690 + _TIMERSTARTEDEVENTATTRIBUTES._serialized_end = 8837 + _TIMERFIREDEVENTATTRIBUTES._serialized_start = 8839 + _TIMERFIREDEVENTATTRIBUTES._serialized_end = 8910 + _TIMERCANCELEDEVENTATTRIBUTES._serialized_start = 8913 + _TIMERCANCELEDEVENTATTRIBUTES._serialized_end = 9047 + _WORKFLOWEXECUTIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_start = 9050 + _WORKFLOWEXECUTIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_end = 9249 + _WORKFLOWEXECUTIONCANCELEDEVENTATTRIBUTES._serialized_start = 9252 + _WORKFLOWEXECUTIONCANCELEDEVENTATTRIBUTES._serialized_end = 9387 + _MARKERRECORDEDEVENTATTRIBUTES._serialized_start = 9390 + _MARKERRECORDEDEVENTATTRIBUTES._serialized_end = 9751 + _MARKERRECORDEDEVENTATTRIBUTES_DETAILSENTRY._serialized_start = 9671 + _MARKERRECORDEDEVENTATTRIBUTES_DETAILSENTRY._serialized_end = 9751 + _WORKFLOWEXECUTIONSIGNALEDEVENTATTRIBUTES._serialized_start = 9754 + _WORKFLOWEXECUTIONSIGNALEDEVENTATTRIBUTES._serialized_end = 10073 + _WORKFLOWEXECUTIONTERMINATEDEVENTATTRIBUTES._serialized_start = 10076 + _WORKFLOWEXECUTIONTERMINATEDEVENTATTRIBUTES._serialized_end = 10205 + _REQUESTCANCELEXTERNALWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_start = 10208 _REQUESTCANCELEXTERNALWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_end = ( - 10422 + 10492 ) _REQUESTCANCELEXTERNALWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = ( - 10425 + 10495 ) - _REQUESTCANCELEXTERNALWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 10771 - _EXTERNALWORKFLOWEXECUTIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_start = 10774 - _EXTERNALWORKFLOWEXECUTIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_end = 10971 - _SIGNALEXTERNALWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_start = 10974 - _SIGNALEXTERNALWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_end = 11353 - _SIGNALEXTERNALWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = 11356 - _SIGNALEXTERNALWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 11695 - _EXTERNALWORKFLOWEXECUTIONSIGNALEDEVENTATTRIBUTES._serialized_start = 11698 - _EXTERNALWORKFLOWEXECUTIONSIGNALEDEVENTATTRIBUTES._serialized_end = 11909 - _UPSERTWORKFLOWSEARCHATTRIBUTESEVENTATTRIBUTES._serialized_start = 11912 - _UPSERTWORKFLOWSEARCHATTRIBUTESEVENTATTRIBUTES._serialized_end = 12070 - _WORKFLOWPROPERTIESMODIFIEDEVENTATTRIBUTES._serialized_start = 12073 - _WORKFLOWPROPERTIESMODIFIEDEVENTATTRIBUTES._serialized_end = 12211 - _STARTCHILDWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_start = 12214 - _STARTCHILDWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_end = 13490 - _STARTCHILDWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = 13493 - _STARTCHILDWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 13835 - _CHILDWORKFLOWEXECUTIONSTARTEDEVENTATTRIBUTES._serialized_start = 13838 - _CHILDWORKFLOWEXECUTIONSTARTEDEVENTATTRIBUTES._serialized_end = 14133 - _CHILDWORKFLOWEXECUTIONCOMPLETEDEVENTATTRIBUTES._serialized_start = 14136 - _CHILDWORKFLOWEXECUTIONCOMPLETEDEVENTATTRIBUTES._serialized_end = 14461 - _CHILDWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = 14464 - _CHILDWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 14843 - _CHILDWORKFLOWEXECUTIONCANCELEDEVENTATTRIBUTES._serialized_start = 14846 - _CHILDWORKFLOWEXECUTIONCANCELEDEVENTATTRIBUTES._serialized_end = 15171 - _CHILDWORKFLOWEXECUTIONTIMEDOUTEVENTATTRIBUTES._serialized_start = 15174 - _CHILDWORKFLOWEXECUTIONTIMEDOUTEVENTATTRIBUTES._serialized_end = 15504 - _CHILDWORKFLOWEXECUTIONTERMINATEDEVENTATTRIBUTES._serialized_start = 15507 - _CHILDWORKFLOWEXECUTIONTERMINATEDEVENTATTRIBUTES._serialized_end = 15783 - _WORKFLOWEXECUTIONOPTIONSUPDATEDEVENTATTRIBUTES._serialized_start = 15786 - _WORKFLOWEXECUTIONOPTIONSUPDATEDEVENTATTRIBUTES._serialized_end = 16516 - _WORKFLOWEXECUTIONOPTIONSUPDATEDEVENTATTRIBUTES_WORKFLOWUPDATEOPTIONSUPDATE._serialized_start = 16366 - _WORKFLOWEXECUTIONOPTIONSUPDATEDEVENTATTRIBUTES_WORKFLOWUPDATEOPTIONSUPDATE._serialized_end = 16516 - _WORKFLOWPROPERTIESMODIFIEDEXTERNALLYEVENTATTRIBUTES._serialized_start = 16519 - _WORKFLOWPROPERTIESMODIFIEDEXTERNALLYEVENTATTRIBUTES._serialized_end = 16839 - _ACTIVITYPROPERTIESMODIFIEDEXTERNALLYEVENTATTRIBUTES._serialized_start = 16842 - _ACTIVITYPROPERTIESMODIFIEDEXTERNALLYEVENTATTRIBUTES._serialized_end = 16986 - _WORKFLOWEXECUTIONUPDATEACCEPTEDEVENTATTRIBUTES._serialized_start = 16989 - _WORKFLOWEXECUTIONUPDATEACCEPTEDEVENTATTRIBUTES._serialized_end = 17209 - _WORKFLOWEXECUTIONUPDATECOMPLETEDEVENTATTRIBUTES._serialized_start = 17212 - _WORKFLOWEXECUTIONUPDATECOMPLETEDEVENTATTRIBUTES._serialized_end = 17382 - _WORKFLOWEXECUTIONUPDATEREJECTEDEVENTATTRIBUTES._serialized_start = 17385 - _WORKFLOWEXECUTIONUPDATEREJECTEDEVENTATTRIBUTES._serialized_end = 17656 - _WORKFLOWEXECUTIONUPDATEADMITTEDEVENTATTRIBUTES._serialized_start = 17659 - _WORKFLOWEXECUTIONUPDATEADMITTEDEVENTATTRIBUTES._serialized_end = 17823 - _WORKFLOWEXECUTIONPAUSEDEVENTATTRIBUTES._serialized_start = 17825 - _WORKFLOWEXECUTIONPAUSEDEVENTATTRIBUTES._serialized_end = 17919 - _WORKFLOWEXECUTIONUNPAUSEDEVENTATTRIBUTES._serialized_start = 17921 - _WORKFLOWEXECUTIONUNPAUSEDEVENTATTRIBUTES._serialized_end = 18017 - _WORKFLOWEXECUTIONTIMESKIPPINGTRANSITIONEDEVENTATTRIBUTES._serialized_start = 18020 - _WORKFLOWEXECUTIONTIMESKIPPINGTRANSITIONEDEVENTATTRIBUTES._serialized_end = 18217 - _NEXUSOPERATIONSCHEDULEDEVENTATTRIBUTES._serialized_start = 18220 - _NEXUSOPERATIONSCHEDULEDEVENTATTRIBUTES._serialized_end = 18784 - _NEXUSOPERATIONSCHEDULEDEVENTATTRIBUTES_NEXUSHEADERENTRY._serialized_start = 18734 - _NEXUSOPERATIONSCHEDULEDEVENTATTRIBUTES_NEXUSHEADERENTRY._serialized_end = 18784 - _NEXUSOPERATIONSTARTEDEVENTATTRIBUTES._serialized_start = 18787 - _NEXUSOPERATIONSTARTEDEVENTATTRIBUTES._serialized_end = 18924 - _NEXUSOPERATIONCOMPLETEDEVENTATTRIBUTES._serialized_start = 18927 - _NEXUSOPERATIONCOMPLETEDEVENTATTRIBUTES._serialized_end = 19064 - _NEXUSOPERATIONFAILEDEVENTATTRIBUTES._serialized_start = 19067 - _NEXUSOPERATIONFAILEDEVENTATTRIBUTES._serialized_end = 19203 - _NEXUSOPERATIONTIMEDOUTEVENTATTRIBUTES._serialized_start = 19206 - _NEXUSOPERATIONTIMEDOUTEVENTATTRIBUTES._serialized_end = 19344 - _NEXUSOPERATIONCANCELEDEVENTATTRIBUTES._serialized_start = 19347 - _NEXUSOPERATIONCANCELEDEVENTATTRIBUTES._serialized_end = 19485 - _NEXUSOPERATIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_start = 19487 - _NEXUSOPERATIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_end = 19603 - _NEXUSOPERATIONCANCELREQUESTCOMPLETEDEVENTATTRIBUTES._serialized_start = 19606 - _NEXUSOPERATIONCANCELREQUESTCOMPLETEDEVENTATTRIBUTES._serialized_end = 19757 - _NEXUSOPERATIONCANCELREQUESTFAILEDEVENTATTRIBUTES._serialized_start = 19760 - _NEXUSOPERATIONCANCELREQUESTFAILEDEVENTATTRIBUTES._serialized_end = 19959 - _HISTORYEVENT._serialized_start = 19962 - _HISTORYEVENT._serialized_end = 28100 - _HISTORY._serialized_start = 28102 - _HISTORY._serialized_end = 28166 + _REQUESTCANCELEXTERNALWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 10841 + _EXTERNALWORKFLOWEXECUTIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_start = 10844 + _EXTERNALWORKFLOWEXECUTIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_end = 11041 + _SIGNALEXTERNALWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_start = 11044 + _SIGNALEXTERNALWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_end = 11423 + _SIGNALEXTERNALWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = 11426 + _SIGNALEXTERNALWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 11765 + _EXTERNALWORKFLOWEXECUTIONSIGNALEDEVENTATTRIBUTES._serialized_start = 11768 + _EXTERNALWORKFLOWEXECUTIONSIGNALEDEVENTATTRIBUTES._serialized_end = 11979 + _UPSERTWORKFLOWSEARCHATTRIBUTESEVENTATTRIBUTES._serialized_start = 11982 + _UPSERTWORKFLOWSEARCHATTRIBUTESEVENTATTRIBUTES._serialized_end = 12140 + _WORKFLOWPROPERTIESMODIFIEDEVENTATTRIBUTES._serialized_start = 12143 + _WORKFLOWPROPERTIESMODIFIEDEVENTATTRIBUTES._serialized_end = 12281 + _STARTCHILDWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_start = 12284 + _STARTCHILDWORKFLOWEXECUTIONINITIATEDEVENTATTRIBUTES._serialized_end = 13560 + _STARTCHILDWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = 13563 + _STARTCHILDWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 13905 + _CHILDWORKFLOWEXECUTIONSTARTEDEVENTATTRIBUTES._serialized_start = 13908 + _CHILDWORKFLOWEXECUTIONSTARTEDEVENTATTRIBUTES._serialized_end = 14203 + _CHILDWORKFLOWEXECUTIONCOMPLETEDEVENTATTRIBUTES._serialized_start = 14206 + _CHILDWORKFLOWEXECUTIONCOMPLETEDEVENTATTRIBUTES._serialized_end = 14531 + _CHILDWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_start = 14534 + _CHILDWORKFLOWEXECUTIONFAILEDEVENTATTRIBUTES._serialized_end = 14913 + _CHILDWORKFLOWEXECUTIONCANCELEDEVENTATTRIBUTES._serialized_start = 14916 + _CHILDWORKFLOWEXECUTIONCANCELEDEVENTATTRIBUTES._serialized_end = 15241 + _CHILDWORKFLOWEXECUTIONTIMEDOUTEVENTATTRIBUTES._serialized_start = 15244 + _CHILDWORKFLOWEXECUTIONTIMEDOUTEVENTATTRIBUTES._serialized_end = 15574 + _CHILDWORKFLOWEXECUTIONTERMINATEDEVENTATTRIBUTES._serialized_start = 15577 + _CHILDWORKFLOWEXECUTIONTERMINATEDEVENTATTRIBUTES._serialized_end = 15853 + _WORKFLOWEXECUTIONOPTIONSUPDATEDEVENTATTRIBUTES._serialized_start = 15856 + _WORKFLOWEXECUTIONOPTIONSUPDATEDEVENTATTRIBUTES._serialized_end = 16586 + _WORKFLOWEXECUTIONOPTIONSUPDATEDEVENTATTRIBUTES_WORKFLOWUPDATEOPTIONSUPDATE._serialized_start = 16436 + _WORKFLOWEXECUTIONOPTIONSUPDATEDEVENTATTRIBUTES_WORKFLOWUPDATEOPTIONSUPDATE._serialized_end = 16586 + _WORKFLOWPROPERTIESMODIFIEDEXTERNALLYEVENTATTRIBUTES._serialized_start = 16589 + _WORKFLOWPROPERTIESMODIFIEDEXTERNALLYEVENTATTRIBUTES._serialized_end = 16909 + _ACTIVITYPROPERTIESMODIFIEDEXTERNALLYEVENTATTRIBUTES._serialized_start = 16912 + _ACTIVITYPROPERTIESMODIFIEDEXTERNALLYEVENTATTRIBUTES._serialized_end = 17056 + _WORKFLOWEXECUTIONUPDATEACCEPTEDEVENTATTRIBUTES._serialized_start = 17059 + _WORKFLOWEXECUTIONUPDATEACCEPTEDEVENTATTRIBUTES._serialized_end = 17279 + _WORKFLOWEXECUTIONUPDATECOMPLETEDEVENTATTRIBUTES._serialized_start = 17282 + _WORKFLOWEXECUTIONUPDATECOMPLETEDEVENTATTRIBUTES._serialized_end = 17452 + _WORKFLOWEXECUTIONUPDATEREJECTEDEVENTATTRIBUTES._serialized_start = 17455 + _WORKFLOWEXECUTIONUPDATEREJECTEDEVENTATTRIBUTES._serialized_end = 17726 + _WORKFLOWEXECUTIONUPDATEADMITTEDEVENTATTRIBUTES._serialized_start = 17729 + _WORKFLOWEXECUTIONUPDATEADMITTEDEVENTATTRIBUTES._serialized_end = 17893 + _WORKFLOWEXECUTIONPAUSEDEVENTATTRIBUTES._serialized_start = 17895 + _WORKFLOWEXECUTIONPAUSEDEVENTATTRIBUTES._serialized_end = 17989 + _WORKFLOWEXECUTIONUNPAUSEDEVENTATTRIBUTES._serialized_start = 17991 + _WORKFLOWEXECUTIONUNPAUSEDEVENTATTRIBUTES._serialized_end = 18087 + _WORKFLOWEXECUTIONTIMESKIPPINGTRANSITIONEDEVENTATTRIBUTES._serialized_start = 18090 + _WORKFLOWEXECUTIONTIMESKIPPINGTRANSITIONEDEVENTATTRIBUTES._serialized_end = 18287 + _NEXUSOPERATIONSCHEDULEDEVENTATTRIBUTES._serialized_start = 18290 + _NEXUSOPERATIONSCHEDULEDEVENTATTRIBUTES._serialized_end = 18854 + _NEXUSOPERATIONSCHEDULEDEVENTATTRIBUTES_NEXUSHEADERENTRY._serialized_start = 18804 + _NEXUSOPERATIONSCHEDULEDEVENTATTRIBUTES_NEXUSHEADERENTRY._serialized_end = 18854 + _NEXUSOPERATIONSTARTEDEVENTATTRIBUTES._serialized_start = 18857 + _NEXUSOPERATIONSTARTEDEVENTATTRIBUTES._serialized_end = 18994 + _NEXUSOPERATIONCOMPLETEDEVENTATTRIBUTES._serialized_start = 18997 + _NEXUSOPERATIONCOMPLETEDEVENTATTRIBUTES._serialized_end = 19134 + _NEXUSOPERATIONFAILEDEVENTATTRIBUTES._serialized_start = 19137 + _NEXUSOPERATIONFAILEDEVENTATTRIBUTES._serialized_end = 19273 + _NEXUSOPERATIONTIMEDOUTEVENTATTRIBUTES._serialized_start = 19276 + _NEXUSOPERATIONTIMEDOUTEVENTATTRIBUTES._serialized_end = 19414 + _NEXUSOPERATIONCANCELEDEVENTATTRIBUTES._serialized_start = 19417 + _NEXUSOPERATIONCANCELEDEVENTATTRIBUTES._serialized_end = 19555 + _NEXUSOPERATIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_start = 19557 + _NEXUSOPERATIONCANCELREQUESTEDEVENTATTRIBUTES._serialized_end = 19673 + _NEXUSOPERATIONCANCELREQUESTCOMPLETEDEVENTATTRIBUTES._serialized_start = 19676 + _NEXUSOPERATIONCANCELREQUESTCOMPLETEDEVENTATTRIBUTES._serialized_end = 19827 + _NEXUSOPERATIONCANCELREQUESTFAILEDEVENTATTRIBUTES._serialized_start = 19830 + _NEXUSOPERATIONCANCELREQUESTFAILEDEVENTATTRIBUTES._serialized_end = 20029 + _HISTORYEVENT._serialized_start = 20032 + _HISTORYEVENT._serialized_end = 28170 + _HISTORY._serialized_start = 28172 + _HISTORY._serialized_end = 28236 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/history/v1/message_pb2.pyi b/temporalio/api/history/v1/message_pb2.pyi index b913bbf58b..df9c6c3c94 100644 --- a/temporalio/api/history/v1/message_pb2.pyi +++ b/temporalio/api/history/v1/message_pb2.pyi @@ -7,6 +7,7 @@ import builtins import collections.abc import sys +import google.protobuf.any_pb2 import google.protobuf.descriptor import google.protobuf.duration_pb2 import google.protobuf.internal.containers @@ -852,6 +853,7 @@ class WorkflowTaskScheduledEventAttributes(google.protobuf.message.Message): TASK_QUEUE_FIELD_NUMBER: builtins.int START_TO_CLOSE_TIMEOUT_FIELD_NUMBER: builtins.int ATTEMPT_FIELD_NUMBER: builtins.int + ATTACHMENTS_FIELD_NUMBER: builtins.int @property def task_queue(self) -> temporalio.api.taskqueue.v1.message_pb2.TaskQueue: """The task queue this workflow task was enqueued in, which could be a normal or sticky queue""" @@ -864,12 +866,26 @@ class WorkflowTaskScheduledEventAttributes(google.protobuf.message.Message): """ attempt: builtins.int """Starting at 1, how many attempts there have been to complete this task""" + @property + def attachments( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + google.protobuf.any_pb2.Any + ]: + """Data the server attaches to this task for the Workflow, such as wakes for its stream + readers or progress of its Nexus operations. Opaque to the SDK core. Counts toward the + History size limit. + + (-- api-linter: core::0146::any=disabled + aip.dev/not-precedent: attachments are meant to hold arbitrary server data. --) + """ def __init__( self, *, task_queue: temporalio.api.taskqueue.v1.message_pb2.TaskQueue | None = ..., start_to_close_timeout: google.protobuf.duration_pb2.Duration | None = ..., attempt: builtins.int = ..., + attachments: collections.abc.Iterable[google.protobuf.any_pb2.Any] | None = ..., ) -> None: ... def HasField( self, @@ -883,6 +899,8 @@ class WorkflowTaskScheduledEventAttributes(google.protobuf.message.Message): def ClearField( self, field_name: typing_extensions.Literal[ + "attachments", + b"attachments", "attempt", b"attempt", "start_to_close_timeout", diff --git a/temporalio/api/stream/__init__.py b/temporalio/api/stream/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/temporalio/api/stream/v1/__init__.py b/temporalio/api/stream/v1/__init__.py new file mode 100644 index 0000000000..26c654f8bf --- /dev/null +++ b/temporalio/api/stream/v1/__init__.py @@ -0,0 +1,17 @@ +from .message_pb2 import ( + StreamCallbackInfo, + StreamNotification, + StreamNotificationResult, + StreamReference, + StreamWake, + WorkflowWakeTarget, +) + +__all__ = [ + "StreamCallbackInfo", + "StreamNotification", + "StreamNotificationResult", + "StreamReference", + "StreamWake", + "WorkflowWakeTarget", +] diff --git a/temporalio/api/stream/v1/message_pb2.py b/temporalio/api/stream/v1/message_pb2.py new file mode 100644 index 0000000000..0fb81612a4 --- /dev/null +++ b/temporalio/api/stream/v1/message_pb2.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/stream/v1/message.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + +from temporalio.api.common.v1 import ( + message_pb2 as temporal_dot_api_dot_common_dot_v1_dot_message__pb2, +) +from temporalio.api.enums.v1 import ( + common_pb2 as temporal_dot_api_dot_enums_dot_v1_dot_common__pb2, +) +from temporalio.api.enums.v1 import ( + stream_pb2 as temporal_dot_api_dot_enums_dot_v1_dot_stream__pb2, +) +from temporalio.api.failure.v1 import ( + message_pb2 as temporal_dot_api_dot_failure_dot_v1_dot_message__pb2, +) + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n$temporal/api/stream/v1/message.proto\x12\x16temporal.api.stream.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a"temporal/api/enums/v1/common.proto\x1a"temporal/api/enums/v1/stream.proto\x1a%temporal/api/failure/v1/message.proto"\x96\x01\n\x0fStreamReference\x12:\n\nowner_kind\x18\x01 \x01(\x0e\x32&.temporal.api.enums.v1.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\r\n\x05topic\x18\x04 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x05 \x01(\t"\x9d\x03\n\x12StreamCallbackInfo\x12\x12\n\nrequest_id\x18\x01 \x01(\t\x12\x32\n\x08\x63\x61llback\x18\x02 \x01(\x0b\x32 .temporal.api.common.v1.Callback\x12\x33\n\x05state\x18\x03 \x01(\x0e\x32$.temporal.api.enums.v1.CallbackState\x12\x19\n\x11\x64\x65livered_counter\x18\x04 \x01(\x03\x12\x19\n\x11progress_disabled\x18\x05 \x01(\x08\x12\x0f\n\x07\x61ttempt\x18\x06 \x01(\x05\x12>\n\x1alast_attempt_complete_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12>\n\x14last_attempt_failure\x18\x08 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x43\n\x0fworkflow_target\x18\t \x01(\x0b\x32*.temporal.api.stream.v1.WorkflowWakeTarget"R\n\x12WorkflowWakeTarget\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x03 \x01(\t"\xe3\x02\n\nStreamWake\x12\x17\n\x0fsubscription_id\x18\x01 \x01(\t\x12\x10\n\x08position\x18\x02 \x01(\t\x12\x0f\n\x07\x63ounter\x18\x03 \x01(\x03\x12\x42\n\x08metadata\x18\x04 \x03(\x0b\x32\x30.temporal.api.stream.v1.StreamWake.MetadataEntry\x12\x0f\n\x07recheck\x18\x05 \x01(\x08\x12\x0e\n\x06\x63losed\x18\x06 \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\x07 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x08 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x13\n\x0bresubscribe\x18\t \x01(\x08\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\xf1\x01\n\x12StreamNotification\x12;\n\nstream_ref\x18\x01 \x01(\x0b\x32\'.temporal.api.stream.v1.StreamReference\x12\x10\n\x08position\x18\x02 \x01(\t\x12\x0f\n\x07\x63ounter\x18\x03 \x01(\x03\x12J\n\x08metadata\x18\x04 \x03(\x0b\x32\x38.temporal.api.stream.v1.StreamNotification.MetadataEntry\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"9\n\x18StreamNotificationResult\x12\x0c\n\x04\x63ode\x18\x01 \x01(\x05\x12\x0f\n\x07message\x18\x02 \x01(\tB\x89\x01\n\x19io.temporal.api.stream.v1B\x0cMessageProtoP\x01Z#go.temporal.io/api/stream/v1;stream\xaa\x02\x18Temporalio.Api.Stream.V1\xea\x02\x1bTemporalio::Api::Stream::V1b\x06proto3' +) + + +_STREAMREFERENCE = DESCRIPTOR.message_types_by_name["StreamReference"] +_STREAMCALLBACKINFO = DESCRIPTOR.message_types_by_name["StreamCallbackInfo"] +_WORKFLOWWAKETARGET = DESCRIPTOR.message_types_by_name["WorkflowWakeTarget"] +_STREAMWAKE = DESCRIPTOR.message_types_by_name["StreamWake"] +_STREAMWAKE_METADATAENTRY = _STREAMWAKE.nested_types_by_name["MetadataEntry"] +_STREAMNOTIFICATION = DESCRIPTOR.message_types_by_name["StreamNotification"] +_STREAMNOTIFICATION_METADATAENTRY = _STREAMNOTIFICATION.nested_types_by_name[ + "MetadataEntry" +] +_STREAMNOTIFICATIONRESULT = DESCRIPTOR.message_types_by_name["StreamNotificationResult"] +StreamReference = _reflection.GeneratedProtocolMessageType( + "StreamReference", + (_message.Message,), + { + "DESCRIPTOR": _STREAMREFERENCE, + "__module__": "temporalio.api.stream.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.stream.v1.StreamReference) + }, +) +_sym_db.RegisterMessage(StreamReference) + +StreamCallbackInfo = _reflection.GeneratedProtocolMessageType( + "StreamCallbackInfo", + (_message.Message,), + { + "DESCRIPTOR": _STREAMCALLBACKINFO, + "__module__": "temporalio.api.stream.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.stream.v1.StreamCallbackInfo) + }, +) +_sym_db.RegisterMessage(StreamCallbackInfo) + +WorkflowWakeTarget = _reflection.GeneratedProtocolMessageType( + "WorkflowWakeTarget", + (_message.Message,), + { + "DESCRIPTOR": _WORKFLOWWAKETARGET, + "__module__": "temporalio.api.stream.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.stream.v1.WorkflowWakeTarget) + }, +) +_sym_db.RegisterMessage(WorkflowWakeTarget) + +StreamWake = _reflection.GeneratedProtocolMessageType( + "StreamWake", + (_message.Message,), + { + "MetadataEntry": _reflection.GeneratedProtocolMessageType( + "MetadataEntry", + (_message.Message,), + { + "DESCRIPTOR": _STREAMWAKE_METADATAENTRY, + "__module__": "temporalio.api.stream.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.stream.v1.StreamWake.MetadataEntry) + }, + ), + "DESCRIPTOR": _STREAMWAKE, + "__module__": "temporalio.api.stream.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.stream.v1.StreamWake) + }, +) +_sym_db.RegisterMessage(StreamWake) +_sym_db.RegisterMessage(StreamWake.MetadataEntry) + +StreamNotification = _reflection.GeneratedProtocolMessageType( + "StreamNotification", + (_message.Message,), + { + "MetadataEntry": _reflection.GeneratedProtocolMessageType( + "MetadataEntry", + (_message.Message,), + { + "DESCRIPTOR": _STREAMNOTIFICATION_METADATAENTRY, + "__module__": "temporalio.api.stream.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.stream.v1.StreamNotification.MetadataEntry) + }, + ), + "DESCRIPTOR": _STREAMNOTIFICATION, + "__module__": "temporalio.api.stream.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.stream.v1.StreamNotification) + }, +) +_sym_db.RegisterMessage(StreamNotification) +_sym_db.RegisterMessage(StreamNotification.MetadataEntry) + +StreamNotificationResult = _reflection.GeneratedProtocolMessageType( + "StreamNotificationResult", + (_message.Message,), + { + "DESCRIPTOR": _STREAMNOTIFICATIONRESULT, + "__module__": "temporalio.api.stream.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.stream.v1.StreamNotificationResult) + }, +) +_sym_db.RegisterMessage(StreamNotificationResult) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b"\n\031io.temporal.api.stream.v1B\014MessageProtoP\001Z#go.temporal.io/api/stream/v1;stream\252\002\030Temporalio.Api.Stream.V1\352\002\033Temporalio::Api::Stream::V1" + _STREAMWAKE_METADATAENTRY._options = None + _STREAMWAKE_METADATAENTRY._serialized_options = b"8\001" + _STREAMNOTIFICATION_METADATAENTRY._options = None + _STREAMNOTIFICATION_METADATAENTRY._serialized_options = b"8\001" + _STREAMREFERENCE._serialized_start = 247 + _STREAMREFERENCE._serialized_end = 397 + _STREAMCALLBACKINFO._serialized_start = 400 + _STREAMCALLBACKINFO._serialized_end = 813 + _WORKFLOWWAKETARGET._serialized_start = 815 + _WORKFLOWWAKETARGET._serialized_end = 897 + _STREAMWAKE._serialized_start = 900 + _STREAMWAKE._serialized_end = 1255 + _STREAMWAKE_METADATAENTRY._serialized_start = 1208 + _STREAMWAKE_METADATAENTRY._serialized_end = 1255 + _STREAMNOTIFICATION._serialized_start = 1258 + _STREAMNOTIFICATION._serialized_end = 1499 + _STREAMNOTIFICATION_METADATAENTRY._serialized_start = 1208 + _STREAMNOTIFICATION_METADATAENTRY._serialized_end = 1255 + _STREAMNOTIFICATIONRESULT._serialized_start = 1501 + _STREAMNOTIFICATIONRESULT._serialized_end = 1558 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/stream/v1/message_pb2.pyi b/temporalio/api/stream/v1/message_pb2.pyi new file mode 100644 index 0000000000..9a6affd7e7 --- /dev/null +++ b/temporalio/api/stream/v1/message_pb2.pyi @@ -0,0 +1,420 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import sys + +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import google.protobuf.timestamp_pb2 + +import temporalio.api.common.v1.message_pb2 +import temporalio.api.enums.v1.common_pb2 +import temporalio.api.enums.v1.stream_pb2 +import temporalio.api.failure.v1.message_pb2 + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class StreamReference(google.protobuf.message.Message): + """Names one stream within a namespace: its owner and its topic.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + OWNER_KIND_FIELD_NUMBER: builtins.int + WORKFLOW_ID_FIELD_NUMBER: builtins.int + RUN_ID_FIELD_NUMBER: builtins.int + TOPIC_FIELD_NUMBER: builtins.int + ACTIVITY_ID_FIELD_NUMBER: builtins.int + owner_kind: temporalio.api.enums.v1.stream_pb2.StreamOwnerKind.ValueType + workflow_id: builtins.str + """The owning Workflow, for `STREAM_OWNER_KIND_WORKFLOW`. The Workflow that scheduled the + owning Activity, for `STREAM_OWNER_KIND_WORKFLOW_ACTIVITY`. Empty for other kinds. + """ + run_id: builtins.str + """For `STREAM_OWNER_KIND_WORKFLOW`, the id of the first run in the owning Workflow's run + chain. The stream notifier is keyed by it, so one notifier serves the stream across the + chain's runs, and a stream that reuses the Workflow id in a new chain gets a notifier of its + own. For `STREAM_OWNER_KIND_ACTIVITY`, the id of the owning Activity run. For + `STREAM_OWNER_KIND_WORKFLOW_ACTIVITY`, the id of the run that scheduled the Activity, not + the chain's first run. An empty run id is refused. + """ + topic: builtins.str + """The stream's topic within its owner.""" + activity_id: builtins.str + """The owning standalone Activity, for `STREAM_OWNER_KIND_ACTIVITY`. The owning Activity's id + in the scheduling run, for `STREAM_OWNER_KIND_WORKFLOW_ACTIVITY`. Empty for other kinds. + """ + def __init__( + self, + *, + owner_kind: temporalio.api.enums.v1.stream_pb2.StreamOwnerKind.ValueType = ..., + workflow_id: builtins.str = ..., + run_id: builtins.str = ..., + topic: builtins.str = ..., + activity_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "activity_id", + b"activity_id", + "owner_kind", + b"owner_kind", + "run_id", + b"run_id", + "topic", + b"topic", + "workflow_id", + b"workflow_id", + ], + ) -> None: ... + +global___StreamReference = StreamReference + +class StreamCallbackInfo(google.protobuf.message.Message): + """A callback attached to a stream notifier, as DescribeStreamNotifier reports it.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + REQUEST_ID_FIELD_NUMBER: builtins.int + CALLBACK_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + DELIVERED_COUNTER_FIELD_NUMBER: builtins.int + PROGRESS_DISABLED_FIELD_NUMBER: builtins.int + ATTEMPT_FIELD_NUMBER: builtins.int + LAST_ATTEMPT_COMPLETE_TIME_FIELD_NUMBER: builtins.int + LAST_ATTEMPT_FAILURE_FIELD_NUMBER: builtins.int + WORKFLOW_TARGET_FIELD_NUMBER: builtins.int + request_id: builtins.str + """The request ID the callback was attached with.""" + @property + def callback(self) -> temporalio.api.common.v1.message_pb2.Callback: + """The callback. Its header keeps its keys, but every value is empty, since the values hold + the caller's credentials. + """ + state: temporalio.api.enums.v1.common_pb2.CallbackState.ValueType + """The state of the callback's completion delivery.""" + delivered_counter: builtins.int + """The highest counter delivered to the callback as progress.""" + progress_disabled: builtins.bool + """Whether the receiver refused progress, so the callback only gets the completion.""" + attempt: builtins.int + """The number of attempts made for the delivery in flight, starting at 1.""" + @property + def last_attempt_complete_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """The time the last attempt completed.""" + @property + def last_attempt_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """The failure of the last attempt, if it failed.""" + @property + def workflow_target(self) -> global___WorkflowWakeTarget: + """The Workflow the callback wakes, when it was attached with a `workflow_target` and not a + Nexus callback. Then `callback` is unset. + """ + def __init__( + self, + *, + request_id: builtins.str = ..., + callback: temporalio.api.common.v1.message_pb2.Callback | None = ..., + state: temporalio.api.enums.v1.common_pb2.CallbackState.ValueType = ..., + delivered_counter: builtins.int = ..., + progress_disabled: builtins.bool = ..., + attempt: builtins.int = ..., + last_attempt_complete_time: google.protobuf.timestamp_pb2.Timestamp + | None = ..., + last_attempt_failure: temporalio.api.failure.v1.message_pb2.Failure + | None = ..., + workflow_target: global___WorkflowWakeTarget | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "callback", + b"callback", + "last_attempt_complete_time", + b"last_attempt_complete_time", + "last_attempt_failure", + b"last_attempt_failure", + "workflow_target", + b"workflow_target", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "attempt", + b"attempt", + "callback", + b"callback", + "delivered_counter", + b"delivered_counter", + "last_attempt_complete_time", + b"last_attempt_complete_time", + "last_attempt_failure", + b"last_attempt_failure", + "progress_disabled", + b"progress_disabled", + "request_id", + b"request_id", + "state", + b"state", + "workflow_target", + b"workflow_target", + ], + ) -> None: ... + +global___StreamCallbackInfo = StreamCallbackInfo + +class WorkflowWakeTarget(google.protobuf.message.Message): + """A Workflow that a stream notifier wakes when the stream moves or closes. The Workflow is in the + namespace of the request that attached it. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WORKFLOW_ID_FIELD_NUMBER: builtins.int + RUN_ID_FIELD_NUMBER: builtins.int + SUBSCRIPTION_ID_FIELD_NUMBER: builtins.int + workflow_id: builtins.str + run_id: builtins.str + subscription_id: builtins.str + """Names one reader of the stream in that run. The Workflow gets the wakes of each reader as + their own `StreamWake`. At most 256 bytes. + """ + def __init__( + self, + *, + workflow_id: builtins.str = ..., + run_id: builtins.str = ..., + subscription_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "run_id", + b"run_id", + "subscription_id", + b"subscription_id", + "workflow_id", + b"workflow_id", + ], + ) -> None: ... + +global___WorkflowWakeTarget = WorkflowWakeTarget + +class StreamWake(google.protobuf.message.Message): + """A wake for one reader of a stream in a Workflow. The server records it as one of the + `attachments` of the next Workflow Task scheduled event, so it adds no event of its own. + + A wake says that the stream moved, not what it holds. The reader reads the stream itself. Wakes + of one reader are folded, so the reader sees the latest one, with the highest `counter`. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class MetadataEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["key", b"key", "value", b"value"], + ) -> None: ... + + SUBSCRIPTION_ID_FIELD_NUMBER: builtins.int + POSITION_FIELD_NUMBER: builtins.int + COUNTER_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + RECHECK_FIELD_NUMBER: builtins.int + CLOSED_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + RESUBSCRIBE_FIELD_NUMBER: builtins.int + subscription_id: builtins.str + """The `subscription_id` of the `WorkflowWakeTarget` this wake is for.""" + position: builtins.str + """The position that came with `counter`, in the producer's terms.""" + counter: builtins.int + """The highest counter the notifier has seen. A reader that subscribed after a counter wakes + when this value is above it. Zero when the notifier has seen no notification. + """ + @property + def metadata( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """The metadata that came with `counter`.""" + recheck: builtins.bool + """Set when the notifier asks the reader to read again with no new counter. The notifier sends + it after a quiet period, so a reader also finds records whose notification was lost. + """ + closed: builtins.bool + """Set when the stream closed. The reader reads to the end of the stream, then sees the + outcome. + """ + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: + """The result the stream closed with, when `closed` is set. Optional.""" + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """The failure the stream closed with, when `closed` is set and it closed with one.""" + resubscribe: builtins.bool + """Set when the notifier dropped this reader, for example at the notifier's idle timeout. The + reader attaches again under a new request ID. + """ + def __init__( + self, + *, + subscription_id: builtins.str = ..., + position: builtins.str = ..., + counter: builtins.int = ..., + metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + recheck: builtins.bool = ..., + closed: builtins.bool = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + resubscribe: builtins.bool = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "close_failure", b"close_failure", "close_result", b"close_result" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "closed", + b"closed", + "counter", + b"counter", + "metadata", + b"metadata", + "position", + b"position", + "recheck", + b"recheck", + "resubscribe", + b"resubscribe", + "subscription_id", + b"subscription_id", + ], + ) -> None: ... + +global___StreamWake = StreamWake + +class StreamNotification(google.protobuf.message.Message): + """One stream's entry in a NotifyStreams request: the same fields as a NotifyStream request that + does not close the stream. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class MetadataEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["key", b"key", "value", b"value"], + ) -> None: ... + + STREAM_REF_FIELD_NUMBER: builtins.int + POSITION_FIELD_NUMBER: builtins.int + COUNTER_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + @property + def stream_ref(self) -> global___StreamReference: ... + position: builtins.str + """Where the stream stands, in the producer's terms. At most 1 KiB of UTF-8.""" + counter: builtins.int + """The newest counter of the stream. Must be positive. The notifier ignores a counter at or + below the one it holds. + """ + @property + def metadata( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """Small details passed on to the callbacks. At most 2 KiB in total, counted as UTF-8 bytes.""" + def __init__( + self, + *, + stream_ref: global___StreamReference | None = ..., + position: builtins.str = ..., + counter: builtins.int = ..., + metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream_ref", b"stream_ref"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "counter", + b"counter", + "metadata", + b"metadata", + "position", + b"position", + "stream_ref", + b"stream_ref", + ], + ) -> None: ... + +global___StreamNotification = StreamNotification + +class StreamNotificationResult(google.protobuf.message.Message): + """The answer to one entry of a NotifyStreams request.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CODE_FIELD_NUMBER: builtins.int + MESSAGE_FIELD_NUMBER: builtins.int + code: builtins.int + """The gRPC status code of the entry, as a NotifyStream call for it would answer. Zero (OK) + when the server applied the entry, or dropped it since the stream has no notifier. + """ + message: builtins.str + """Why the server refused the entry. Empty when `code` is zero.""" + def __init__( + self, + *, + code: builtins.int = ..., + message: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["code", b"code", "message", b"message"], + ) -> None: ... + +global___StreamNotificationResult = StreamNotificationResult diff --git a/temporalio/api/workflowservice/v1/__init__.py b/temporalio/api/workflowservice/v1/__init__.py index ab72e6b09e..66fc27a4be 100644 --- a/temporalio/api/workflowservice/v1/__init__.py +++ b/temporalio/api/workflowservice/v1/__init__.py @@ -246,8 +246,26 @@ ValidateWorkerDeploymentVersionComputeConfigRequest, ValidateWorkerDeploymentVersionComputeConfigResponse, ) +from .stream_request_response_pb2 import ( + AttachStreamCallbackRequest, + AttachStreamCallbackResponse, + DescribeStreamNotifierRequest, + DescribeStreamNotifierResponse, + DetachStreamCallbackRequest, + DetachStreamCallbackResponse, + NotifyStreamRequest, + NotifyStreamResponse, + NotifyStreamsRequest, + NotifyStreamsResponse, + PollStreamNotifierRequest, + PollStreamNotifierResponse, + WaitStreamCallbackRequest, + WaitStreamCallbackResponse, +) __all__ = [ + "AttachStreamCallbackRequest", + "AttachStreamCallbackResponse", "CountActivityExecutionsRequest", "CountActivityExecutionsResponse", "CountNexusOperationExecutionsRequest", @@ -294,6 +312,8 @@ "DescribeNexusOperationExecutionResponse", "DescribeScheduleRequest", "DescribeScheduleResponse", + "DescribeStreamNotifierRequest", + "DescribeStreamNotifierResponse", "DescribeTaskQueueRequest", "DescribeTaskQueueResponse", "DescribeWorkerDeploymentRequest", @@ -306,6 +326,8 @@ "DescribeWorkflowExecutionResponse", "DescribeWorkflowRuleRequest", "DescribeWorkflowRuleResponse", + "DetachStreamCallbackRequest", + "DetachStreamCallbackResponse", "ExecuteMultiOperationRequest", "ExecuteMultiOperationResponse", "FetchWorkerConfigRequest", @@ -360,6 +382,10 @@ "ListWorkflowExecutionsResponse", "ListWorkflowRulesRequest", "ListWorkflowRulesResponse", + "NotifyStreamRequest", + "NotifyStreamResponse", + "NotifyStreamsRequest", + "NotifyStreamsResponse", "PatchScheduleRequest", "PatchScheduleResponse", "PauseActivityExecutionRequest", @@ -376,6 +402,8 @@ "PollNexusOperationExecutionResponse", "PollNexusTaskQueueRequest", "PollNexusTaskQueueResponse", + "PollStreamNotifierRequest", + "PollStreamNotifierResponse", "PollWorkflowExecutionTimeSkippingRequest", "PollWorkflowExecutionTimeSkippingResponse", "PollWorkflowExecutionUpdateRequest", @@ -494,6 +522,8 @@ "UpdateWorkflowExecutionResponse", "ValidateWorkerDeploymentVersionComputeConfigRequest", "ValidateWorkerDeploymentVersionComputeConfigResponse", + "WaitStreamCallbackRequest", + "WaitStreamCallbackResponse", ] # gRPC is optional diff --git a/temporalio/api/workflowservice/v1/stream_request_response_pb2.py b/temporalio/api/workflowservice/v1/stream_request_response_pb2.py new file mode 100644 index 0000000000..47cb12d4b1 --- /dev/null +++ b/temporalio/api/workflowservice/v1/stream_request_response_pb2.py @@ -0,0 +1,287 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/api/workflowservice/v1/stream_request_response.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 + +from temporalio.api.common.v1 import ( + message_pb2 as temporal_dot_api_dot_common_dot_v1_dot_message__pb2, +) +from temporalio.api.failure.v1 import ( + message_pb2 as temporal_dot_api_dot_failure_dot_v1_dot_message__pb2, +) +from temporalio.api.stream.v1 import ( + message_pb2 as temporal_dot_api_dot_stream_dot_v1_dot_message__pb2, +) + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n=temporal/api/workflowservice/v1/stream_request_response.proto\x12\x1ftemporal.api.workflowservice.v1\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/stream/v1/message.proto"\xe9\x02\n\x1b\x41ttachStreamCallbackRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12;\n\nstream_ref\x18\x02 \x01(\x0b\x32\'.temporal.api.stream.v1.StreamReference\x12\x12\n\nrequest_id\x18\x03 \x01(\t\x12\x38\n\x08\x63\x61llback\x18\x04 \x01(\x0b\x32&.temporal.api.common.v1.Callback.Nexus\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x17\n\x0foperation_token\x18\x06 \x01(\t\x12.\n\nstart_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x43\n\x0fworkflow_target\x18\x08 \x01(\x0b\x32*.temporal.api.stream.v1.WorkflowWakeTarget\x12\x0c\n\x04idle\x18\t \x01(\x08"\x1e\n\x1c\x41ttachStreamCallbackResponse"\xa8\x01\n\x19WaitStreamCallbackRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12;\n\nstream_ref\x18\x02 \x01(\x0b\x32\'.temporal.api.stream.v1.StreamReference\x12\x12\n\nrequest_id\x18\x03 \x01(\t\x12\x15\n\rafter_counter\x18\x04 \x01(\x03\x12\x10\n\x08identity\x18\x05 \x01(\t"\x1c\n\x1aWaitStreamCallbackResponse"\x93\x01\n\x1b\x44\x65tachStreamCallbackRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12;\n\nstream_ref\x18\x02 \x01(\x0b\x32\'.temporal.api.stream.v1.StreamReference\x12\x12\n\nrequest_id\x18\x03 \x01(\t\x12\x10\n\x08identity\x18\x04 \x01(\t"\x1e\n\x1c\x44\x65tachStreamCallbackResponse"\xa0\x03\n\x13NotifyStreamRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12;\n\nstream_ref\x18\x02 \x01(\x0b\x32\'.temporal.api.stream.v1.StreamReference\x12\x10\n\x08position\x18\x03 \x01(\t\x12\x0f\n\x07\x63ounter\x18\x04 \x01(\x03\x12T\n\x08metadata\x18\x05 \x03(\x0b\x32\x42.temporal.api.workflowservice.v1.NotifyStreamRequest.MetadataEntry\x12\r\n\x05\x63lose\x18\x06 \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\x07 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x10\n\x08identity\x18\x08 \x01(\t\x12\x37\n\rclose_failure\x18\t \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"\x16\n\x14NotifyStreamResponse"o\n\x1d\x44\x65scribeStreamNotifierRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12;\n\nstream_ref\x18\x02 \x01(\x0b\x32\'.temporal.api.stream.v1.StreamReference"\xcb\x01\n\x1e\x44\x65scribeStreamNotifierResponse\x12\x0f\n\x07\x63ounter\x18\x01 \x01(\x03\x12\x10\n\x08position\x18\x02 \x01(\t\x12\x0e\n\x06\x63losed\x18\x03 \x01(\x08\x12=\n\tcallbacks\x18\x04 \x03(\x0b\x32*.temporal.api.stream.v1.StreamCallbackInfo\x12\x37\n\rclose_failure\x18\x05 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\x94\x01\n\x19PollStreamNotifierRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12;\n\nstream_ref\x18\x02 \x01(\x0b\x32\'.temporal.api.stream.v1.StreamReference\x12\x15\n\rafter_counter\x18\x03 \x01(\x03\x12\x10\n\x08identity\x18\x04 \x01(\t"\xcd\x02\n\x1aPollStreamNotifierResponse\x12\x0f\n\x07\x63ounter\x18\x01 \x01(\x03\x12\x10\n\x08position\x18\x02 \x01(\t\x12[\n\x08metadata\x18\x03 \x03(\x0b\x32I.temporal.api.workflowservice.v1.PollStreamNotifierResponse.MetadataEntry\x12\x0e\n\x06\x63losed\x18\x04 \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\x05 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x06 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01"~\n\x14NotifyStreamsRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x41\n\rnotifications\x18\x02 \x03(\x0b\x32*.temporal.api.stream.v1.StreamNotification\x12\x10\n\x08identity\x18\x03 \x01(\t"Z\n\x15NotifyStreamsResponse\x12\x41\n\x07results\x18\x01 \x03(\x0b\x32\x30.temporal.api.stream.v1.StreamNotificationResultB\xc4\x01\n"io.temporal.api.workflowservice.v1B\x1aStreamRequestResponseProtoP\x01Z5go.temporal.io/api/workflowservice/v1;workflowservice\xaa\x02!Temporalio.Api.WorkflowService.V1\xea\x02$Temporalio::Api::WorkflowService::V1b\x06proto3' +) + + +_ATTACHSTREAMCALLBACKREQUEST = DESCRIPTOR.message_types_by_name[ + "AttachStreamCallbackRequest" +] +_ATTACHSTREAMCALLBACKRESPONSE = DESCRIPTOR.message_types_by_name[ + "AttachStreamCallbackResponse" +] +_WAITSTREAMCALLBACKREQUEST = DESCRIPTOR.message_types_by_name[ + "WaitStreamCallbackRequest" +] +_WAITSTREAMCALLBACKRESPONSE = DESCRIPTOR.message_types_by_name[ + "WaitStreamCallbackResponse" +] +_DETACHSTREAMCALLBACKREQUEST = DESCRIPTOR.message_types_by_name[ + "DetachStreamCallbackRequest" +] +_DETACHSTREAMCALLBACKRESPONSE = DESCRIPTOR.message_types_by_name[ + "DetachStreamCallbackResponse" +] +_NOTIFYSTREAMREQUEST = DESCRIPTOR.message_types_by_name["NotifyStreamRequest"] +_NOTIFYSTREAMREQUEST_METADATAENTRY = _NOTIFYSTREAMREQUEST.nested_types_by_name[ + "MetadataEntry" +] +_NOTIFYSTREAMRESPONSE = DESCRIPTOR.message_types_by_name["NotifyStreamResponse"] +_DESCRIBESTREAMNOTIFIERREQUEST = DESCRIPTOR.message_types_by_name[ + "DescribeStreamNotifierRequest" +] +_DESCRIBESTREAMNOTIFIERRESPONSE = DESCRIPTOR.message_types_by_name[ + "DescribeStreamNotifierResponse" +] +_POLLSTREAMNOTIFIERREQUEST = DESCRIPTOR.message_types_by_name[ + "PollStreamNotifierRequest" +] +_POLLSTREAMNOTIFIERRESPONSE = DESCRIPTOR.message_types_by_name[ + "PollStreamNotifierResponse" +] +_POLLSTREAMNOTIFIERRESPONSE_METADATAENTRY = ( + _POLLSTREAMNOTIFIERRESPONSE.nested_types_by_name["MetadataEntry"] +) +_NOTIFYSTREAMSREQUEST = DESCRIPTOR.message_types_by_name["NotifyStreamsRequest"] +_NOTIFYSTREAMSRESPONSE = DESCRIPTOR.message_types_by_name["NotifyStreamsResponse"] +AttachStreamCallbackRequest = _reflection.GeneratedProtocolMessageType( + "AttachStreamCallbackRequest", + (_message.Message,), + { + "DESCRIPTOR": _ATTACHSTREAMCALLBACKREQUEST, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.AttachStreamCallbackRequest) + }, +) +_sym_db.RegisterMessage(AttachStreamCallbackRequest) + +AttachStreamCallbackResponse = _reflection.GeneratedProtocolMessageType( + "AttachStreamCallbackResponse", + (_message.Message,), + { + "DESCRIPTOR": _ATTACHSTREAMCALLBACKRESPONSE, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.AttachStreamCallbackResponse) + }, +) +_sym_db.RegisterMessage(AttachStreamCallbackResponse) + +WaitStreamCallbackRequest = _reflection.GeneratedProtocolMessageType( + "WaitStreamCallbackRequest", + (_message.Message,), + { + "DESCRIPTOR": _WAITSTREAMCALLBACKREQUEST, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.WaitStreamCallbackRequest) + }, +) +_sym_db.RegisterMessage(WaitStreamCallbackRequest) + +WaitStreamCallbackResponse = _reflection.GeneratedProtocolMessageType( + "WaitStreamCallbackResponse", + (_message.Message,), + { + "DESCRIPTOR": _WAITSTREAMCALLBACKRESPONSE, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.WaitStreamCallbackResponse) + }, +) +_sym_db.RegisterMessage(WaitStreamCallbackResponse) + +DetachStreamCallbackRequest = _reflection.GeneratedProtocolMessageType( + "DetachStreamCallbackRequest", + (_message.Message,), + { + "DESCRIPTOR": _DETACHSTREAMCALLBACKREQUEST, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.DetachStreamCallbackRequest) + }, +) +_sym_db.RegisterMessage(DetachStreamCallbackRequest) + +DetachStreamCallbackResponse = _reflection.GeneratedProtocolMessageType( + "DetachStreamCallbackResponse", + (_message.Message,), + { + "DESCRIPTOR": _DETACHSTREAMCALLBACKRESPONSE, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.DetachStreamCallbackResponse) + }, +) +_sym_db.RegisterMessage(DetachStreamCallbackResponse) + +NotifyStreamRequest = _reflection.GeneratedProtocolMessageType( + "NotifyStreamRequest", + (_message.Message,), + { + "MetadataEntry": _reflection.GeneratedProtocolMessageType( + "MetadataEntry", + (_message.Message,), + { + "DESCRIPTOR": _NOTIFYSTREAMREQUEST_METADATAENTRY, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.NotifyStreamRequest.MetadataEntry) + }, + ), + "DESCRIPTOR": _NOTIFYSTREAMREQUEST, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.NotifyStreamRequest) + }, +) +_sym_db.RegisterMessage(NotifyStreamRequest) +_sym_db.RegisterMessage(NotifyStreamRequest.MetadataEntry) + +NotifyStreamResponse = _reflection.GeneratedProtocolMessageType( + "NotifyStreamResponse", + (_message.Message,), + { + "DESCRIPTOR": _NOTIFYSTREAMRESPONSE, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.NotifyStreamResponse) + }, +) +_sym_db.RegisterMessage(NotifyStreamResponse) + +DescribeStreamNotifierRequest = _reflection.GeneratedProtocolMessageType( + "DescribeStreamNotifierRequest", + (_message.Message,), + { + "DESCRIPTOR": _DESCRIBESTREAMNOTIFIERREQUEST, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.DescribeStreamNotifierRequest) + }, +) +_sym_db.RegisterMessage(DescribeStreamNotifierRequest) + +DescribeStreamNotifierResponse = _reflection.GeneratedProtocolMessageType( + "DescribeStreamNotifierResponse", + (_message.Message,), + { + "DESCRIPTOR": _DESCRIBESTREAMNOTIFIERRESPONSE, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.DescribeStreamNotifierResponse) + }, +) +_sym_db.RegisterMessage(DescribeStreamNotifierResponse) + +PollStreamNotifierRequest = _reflection.GeneratedProtocolMessageType( + "PollStreamNotifierRequest", + (_message.Message,), + { + "DESCRIPTOR": _POLLSTREAMNOTIFIERREQUEST, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.PollStreamNotifierRequest) + }, +) +_sym_db.RegisterMessage(PollStreamNotifierRequest) + +PollStreamNotifierResponse = _reflection.GeneratedProtocolMessageType( + "PollStreamNotifierResponse", + (_message.Message,), + { + "MetadataEntry": _reflection.GeneratedProtocolMessageType( + "MetadataEntry", + (_message.Message,), + { + "DESCRIPTOR": _POLLSTREAMNOTIFIERRESPONSE_METADATAENTRY, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.PollStreamNotifierResponse.MetadataEntry) + }, + ), + "DESCRIPTOR": _POLLSTREAMNOTIFIERRESPONSE, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.PollStreamNotifierResponse) + }, +) +_sym_db.RegisterMessage(PollStreamNotifierResponse) +_sym_db.RegisterMessage(PollStreamNotifierResponse.MetadataEntry) + +NotifyStreamsRequest = _reflection.GeneratedProtocolMessageType( + "NotifyStreamsRequest", + (_message.Message,), + { + "DESCRIPTOR": _NOTIFYSTREAMSREQUEST, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.NotifyStreamsRequest) + }, +) +_sym_db.RegisterMessage(NotifyStreamsRequest) + +NotifyStreamsResponse = _reflection.GeneratedProtocolMessageType( + "NotifyStreamsResponse", + (_message.Message,), + { + "DESCRIPTOR": _NOTIFYSTREAMSRESPONSE, + "__module__": "temporalio.api.workflowservice.v1.stream_request_response_pb2", + # @@protoc_insertion_point(class_scope:temporal.api.workflowservice.v1.NotifyStreamsResponse) + }, +) +_sym_db.RegisterMessage(NotifyStreamsResponse) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = b'\n"io.temporal.api.workflowservice.v1B\032StreamRequestResponseProtoP\001Z5go.temporal.io/api/workflowservice/v1;workflowservice\252\002!Temporalio.Api.WorkflowService.V1\352\002$Temporalio::Api::WorkflowService::V1' + _NOTIFYSTREAMREQUEST_METADATAENTRY._options = None + _NOTIFYSTREAMREQUEST_METADATAENTRY._serialized_options = b"8\001" + _POLLSTREAMNOTIFIERRESPONSE_METADATAENTRY._options = None + _POLLSTREAMNOTIFIERRESPONSE_METADATAENTRY._serialized_options = b"8\001" + _ATTACHSTREAMCALLBACKREQUEST._serialized_start = 247 + _ATTACHSTREAMCALLBACKREQUEST._serialized_end = 608 + _ATTACHSTREAMCALLBACKRESPONSE._serialized_start = 610 + _ATTACHSTREAMCALLBACKRESPONSE._serialized_end = 640 + _WAITSTREAMCALLBACKREQUEST._serialized_start = 643 + _WAITSTREAMCALLBACKREQUEST._serialized_end = 811 + _WAITSTREAMCALLBACKRESPONSE._serialized_start = 813 + _WAITSTREAMCALLBACKRESPONSE._serialized_end = 841 + _DETACHSTREAMCALLBACKREQUEST._serialized_start = 844 + _DETACHSTREAMCALLBACKREQUEST._serialized_end = 991 + _DETACHSTREAMCALLBACKRESPONSE._serialized_start = 993 + _DETACHSTREAMCALLBACKRESPONSE._serialized_end = 1023 + _NOTIFYSTREAMREQUEST._serialized_start = 1026 + _NOTIFYSTREAMREQUEST._serialized_end = 1442 + _NOTIFYSTREAMREQUEST_METADATAENTRY._serialized_start = 1395 + _NOTIFYSTREAMREQUEST_METADATAENTRY._serialized_end = 1442 + _NOTIFYSTREAMRESPONSE._serialized_start = 1444 + _NOTIFYSTREAMRESPONSE._serialized_end = 1466 + _DESCRIBESTREAMNOTIFIERREQUEST._serialized_start = 1468 + _DESCRIBESTREAMNOTIFIERREQUEST._serialized_end = 1579 + _DESCRIBESTREAMNOTIFIERRESPONSE._serialized_start = 1582 + _DESCRIBESTREAMNOTIFIERRESPONSE._serialized_end = 1785 + _POLLSTREAMNOTIFIERREQUEST._serialized_start = 1788 + _POLLSTREAMNOTIFIERREQUEST._serialized_end = 1936 + _POLLSTREAMNOTIFIERRESPONSE._serialized_start = 1939 + _POLLSTREAMNOTIFIERRESPONSE._serialized_end = 2272 + _POLLSTREAMNOTIFIERRESPONSE_METADATAENTRY._serialized_start = 1395 + _POLLSTREAMNOTIFIERRESPONSE_METADATAENTRY._serialized_end = 1442 + _NOTIFYSTREAMSREQUEST._serialized_start = 2274 + _NOTIFYSTREAMSREQUEST._serialized_end = 2400 + _NOTIFYSTREAMSRESPONSE._serialized_start = 2402 + _NOTIFYSTREAMSRESPONSE._serialized_end = 2492 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/api/workflowservice/v1/stream_request_response_pb2.pyi b/temporalio/api/workflowservice/v1/stream_request_response_pb2.pyi new file mode 100644 index 0000000000..489314550a --- /dev/null +++ b/temporalio/api/workflowservice/v1/stream_request_response_pb2.pyi @@ -0,0 +1,654 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import collections.abc +import sys + +import google.protobuf.descriptor +import google.protobuf.internal.containers +import google.protobuf.message +import google.protobuf.timestamp_pb2 + +import temporalio.api.common.v1.message_pb2 +import temporalio.api.failure.v1.message_pb2 +import temporalio.api.stream.v1.message_pb2 + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class AttachStreamCallbackRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + STREAM_REF_FIELD_NUMBER: builtins.int + REQUEST_ID_FIELD_NUMBER: builtins.int + CALLBACK_FIELD_NUMBER: builtins.int + IDENTITY_FIELD_NUMBER: builtins.int + OPERATION_TOKEN_FIELD_NUMBER: builtins.int + START_TIME_FIELD_NUMBER: builtins.int + WORKFLOW_TARGET_FIELD_NUMBER: builtins.int + IDLE_FIELD_NUMBER: builtins.int + namespace: builtins.str + @property + def stream_ref(self) -> temporalio.api.stream.v1.message_pb2.StreamReference: + """The stream whose notifier holds the callback.""" + request_id: builtins.str + """Identifies the attachment. Attaching again with the same request ID changes nothing, and + DetachStreamCallback names the callback by it. A Nexus handler passes its start request ID. + """ + @property + def callback(self) -> temporalio.api.common.v1.message_pb2.Callback.Nexus: + """Receives the stream's progress while it is open, and one completion when it closes. If the + stream is already closed, the completion is delivered right away. A Nexus handler passes the + callback URL and headers of its start request. + """ + identity: builtins.str + """The identity of the client attaching the callback.""" + operation_token: builtins.str + """The operation token the handler returns from its start. The notifier sends it with each + progress delivery and with the completion, so a completion that reaches the caller before + the start response still names the operation. + """ + @property + def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """When the handler started the operation. Sent with the token, for the same reason.""" + @property + def workflow_target( + self, + ) -> temporalio.api.stream.v1.message_pb2.WorkflowWakeTarget: + """A Workflow in this namespace that the notifier wakes, in place of a Nexus callback. The + Workflow gets each change of the stream as a `StreamWake` on its next Workflow Task. Exactly + one of `callback` and `workflow_target` is set. + """ + idle: builtins.bool + """Attaches the callback idle. An idle callback gets no progress until WaitStreamCallback asks + for one wake, and it goes back to idle after that delivery. It still gets the completion + when the stream closes. A Workflow reader attaches its `workflow_target` idle, so a busy + reader gets no wake. + """ + def __init__( + self, + *, + namespace: builtins.str = ..., + stream_ref: temporalio.api.stream.v1.message_pb2.StreamReference | None = ..., + request_id: builtins.str = ..., + callback: temporalio.api.common.v1.message_pb2.Callback.Nexus | None = ..., + identity: builtins.str = ..., + operation_token: builtins.str = ..., + start_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., + workflow_target: temporalio.api.stream.v1.message_pb2.WorkflowWakeTarget + | None = ..., + idle: builtins.bool = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "callback", + b"callback", + "start_time", + b"start_time", + "stream_ref", + b"stream_ref", + "workflow_target", + b"workflow_target", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "callback", + b"callback", + "identity", + b"identity", + "idle", + b"idle", + "namespace", + b"namespace", + "operation_token", + b"operation_token", + "request_id", + b"request_id", + "start_time", + b"start_time", + "stream_ref", + b"stream_ref", + "workflow_target", + b"workflow_target", + ], + ) -> None: ... + +global___AttachStreamCallbackRequest = AttachStreamCallbackRequest + +class AttachStreamCallbackResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___AttachStreamCallbackResponse = AttachStreamCallbackResponse + +class WaitStreamCallbackRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + STREAM_REF_FIELD_NUMBER: builtins.int + REQUEST_ID_FIELD_NUMBER: builtins.int + AFTER_COUNTER_FIELD_NUMBER: builtins.int + IDENTITY_FIELD_NUMBER: builtins.int + namespace: builtins.str + @property + def stream_ref(self) -> temporalio.api.stream.v1.message_pb2.StreamReference: ... + request_id: builtins.str + """The request ID the idle callback was attached with.""" + after_counter: builtins.int + """The notifier delivers progress to the callback once, when its counter is above this value. + If the counter is above it already, the delivery goes out at once. A reader passes the + counter of the position its last read reached. + + (-- api-linter: core::0140::prepositions=disabled + aip.dev/not-precedent: "after" names the bound the counter must pass. --) + """ + identity: builtins.str + """The identity of the caller.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + stream_ref: temporalio.api.stream.v1.message_pb2.StreamReference | None = ..., + request_id: builtins.str = ..., + after_counter: builtins.int = ..., + identity: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream_ref", b"stream_ref"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "after_counter", + b"after_counter", + "identity", + b"identity", + "namespace", + b"namespace", + "request_id", + b"request_id", + "stream_ref", + b"stream_ref", + ], + ) -> None: ... + +global___WaitStreamCallbackRequest = WaitStreamCallbackRequest + +class WaitStreamCallbackResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___WaitStreamCallbackResponse = WaitStreamCallbackResponse + +class DetachStreamCallbackRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + STREAM_REF_FIELD_NUMBER: builtins.int + REQUEST_ID_FIELD_NUMBER: builtins.int + IDENTITY_FIELD_NUMBER: builtins.int + namespace: builtins.str + @property + def stream_ref(self) -> temporalio.api.stream.v1.message_pb2.StreamReference: ... + request_id: builtins.str + """The request ID the callback was attached with. Detaching a callback that is not attached + changes nothing. + """ + identity: builtins.str + """The identity of the client detaching the callback.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + stream_ref: temporalio.api.stream.v1.message_pb2.StreamReference | None = ..., + request_id: builtins.str = ..., + identity: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream_ref", b"stream_ref"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "identity", + b"identity", + "namespace", + b"namespace", + "request_id", + b"request_id", + "stream_ref", + b"stream_ref", + ], + ) -> None: ... + +global___DetachStreamCallbackRequest = DetachStreamCallbackRequest + +class DetachStreamCallbackResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___DetachStreamCallbackResponse = DetachStreamCallbackResponse + +class NotifyStreamRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class MetadataEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["key", b"key", "value", b"value"], + ) -> None: ... + + NAMESPACE_FIELD_NUMBER: builtins.int + STREAM_REF_FIELD_NUMBER: builtins.int + POSITION_FIELD_NUMBER: builtins.int + COUNTER_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + CLOSE_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + IDENTITY_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + namespace: builtins.str + @property + def stream_ref(self) -> temporalio.api.stream.v1.message_pb2.StreamReference: ... + position: builtins.str + """Where the stream stands after the append this notification reports, in the producer's terms, + such as a stream cursor. Passed on to the callbacks as the progress position. The server + rejects a position longer than 1 KiB of UTF-8. + """ + counter: builtins.int + """Orders the notifications of one stream. The notifier keeps the highest counter it has seen + and ignores a lower one, so a producer may send them out of order. Must be positive. + """ + @property + def metadata( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """Small details passed on to the callbacks. The server rejects metadata whose keys and values + exceed 2 KiB in total, counted as UTF-8 bytes. + """ + close: builtins.bool + """Closes the stream: the notifier completes every attached callback with `close_result`, or + with `close_failure`, and completes callbacks attached later right away. + """ + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: + """The completion result when `close` is set, such as a summary of the stream. Optional.""" + identity: builtins.str + """The identity of the producer.""" + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """Closes the stream with a failure instead of `close_result`. The notifier completes every + callback as failed, or as canceled when the failure has canceled info. Needs `close`, and + the server rejects a request that sets both `close_result` and `close_failure`. + """ + def __init__( + self, + *, + namespace: builtins.str = ..., + stream_ref: temporalio.api.stream.v1.message_pb2.StreamReference | None = ..., + position: builtins.str = ..., + counter: builtins.int = ..., + metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + close: builtins.bool = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + identity: builtins.str = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "stream_ref", + b"stream_ref", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "close", + b"close", + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "counter", + b"counter", + "identity", + b"identity", + "metadata", + b"metadata", + "namespace", + b"namespace", + "position", + b"position", + "stream_ref", + b"stream_ref", + ], + ) -> None: ... + +global___NotifyStreamRequest = NotifyStreamRequest + +class NotifyStreamResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___NotifyStreamResponse = NotifyStreamResponse + +class DescribeStreamNotifierRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + STREAM_REF_FIELD_NUMBER: builtins.int + namespace: builtins.str + @property + def stream_ref(self) -> temporalio.api.stream.v1.message_pb2.StreamReference: ... + def __init__( + self, + *, + namespace: builtins.str = ..., + stream_ref: temporalio.api.stream.v1.message_pb2.StreamReference | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream_ref", b"stream_ref"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "namespace", b"namespace", "stream_ref", b"stream_ref" + ], + ) -> None: ... + +global___DescribeStreamNotifierRequest = DescribeStreamNotifierRequest + +class DescribeStreamNotifierResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COUNTER_FIELD_NUMBER: builtins.int + POSITION_FIELD_NUMBER: builtins.int + CLOSED_FIELD_NUMBER: builtins.int + CALLBACKS_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + counter: builtins.int + """The highest counter the notifier has seen.""" + position: builtins.str + """The position that came with `counter`.""" + closed: builtins.bool + """Whether the stream was closed.""" + @property + def callbacks( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.stream.v1.message_pb2.StreamCallbackInfo + ]: + """The callbacks the notifier holds, in the order they were attached.""" + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """The failure the stream closed with, when it closed with one.""" + def __init__( + self, + *, + counter: builtins.int = ..., + position: builtins.str = ..., + closed: builtins.bool = ..., + callbacks: collections.abc.Iterable[ + temporalio.api.stream.v1.message_pb2.StreamCallbackInfo + ] + | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["close_failure", b"close_failure"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "callbacks", + b"callbacks", + "close_failure", + b"close_failure", + "closed", + b"closed", + "counter", + b"counter", + "position", + b"position", + ], + ) -> None: ... + +global___DescribeStreamNotifierResponse = DescribeStreamNotifierResponse + +class PollStreamNotifierRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + STREAM_REF_FIELD_NUMBER: builtins.int + AFTER_COUNTER_FIELD_NUMBER: builtins.int + IDENTITY_FIELD_NUMBER: builtins.int + namespace: builtins.str + @property + def stream_ref(self) -> temporalio.api.stream.v1.message_pb2.StreamReference: ... + after_counter: builtins.int + """The poll returns when the notifier's counter is above this value, or when the stream is + closed. A reader passes the counter of the position its last read reached, so a + notification that landed before the poll makes it return at once. + + (-- api-linter: core::0140::prepositions=disabled + aip.dev/not-precedent: "after" names the bound the counter must pass. --) + """ + identity: builtins.str + """The identity of the client that polls.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + stream_ref: temporalio.api.stream.v1.message_pb2.StreamReference | None = ..., + after_counter: builtins.int = ..., + identity: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream_ref", b"stream_ref"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "after_counter", + b"after_counter", + "identity", + b"identity", + "namespace", + b"namespace", + "stream_ref", + b"stream_ref", + ], + ) -> None: ... + +global___PollStreamNotifierRequest = PollStreamNotifierRequest + +class PollStreamNotifierResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class MetadataEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["key", b"key", "value", b"value"], + ) -> None: ... + + COUNTER_FIELD_NUMBER: builtins.int + POSITION_FIELD_NUMBER: builtins.int + METADATA_FIELD_NUMBER: builtins.int + CLOSED_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + counter: builtins.int + """The highest counter the notifier has seen. At or below the request's `after_counter` when + the poll reached its wait limit with no change. Then the client reads the stream again. + """ + position: builtins.str + """The position that came with `counter`.""" + @property + def metadata( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """The metadata that came with `counter`.""" + closed: builtins.bool + """Whether the stream was closed.""" + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: + """The result the stream closed with, when `closed` is set. Optional.""" + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """The failure the stream closed with, when `closed` is set and it closed with one.""" + def __init__( + self, + *, + counter: builtins.int = ..., + position: builtins.str = ..., + metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + closed: builtins.bool = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "close_failure", b"close_failure", "close_result", b"close_result" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "closed", + b"closed", + "counter", + b"counter", + "metadata", + b"metadata", + "position", + b"position", + ], + ) -> None: ... + +global___PollStreamNotifierResponse = PollStreamNotifierResponse + +class NotifyStreamsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + NOTIFICATIONS_FIELD_NUMBER: builtins.int + IDENTITY_FIELD_NUMBER: builtins.int + namespace: builtins.str + @property + def notifications( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.stream.v1.message_pb2.StreamNotification + ]: + """One entry per stream. The server rejects a request with more than + `streamnotifier.maxNotifyBatch` entries, or with two entries for one stream. + """ + identity: builtins.str + """The identity of the caller, such as a stream driver.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + notifications: collections.abc.Iterable[ + temporalio.api.stream.v1.message_pb2.StreamNotification + ] + | None = ..., + identity: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "identity", + b"identity", + "namespace", + b"namespace", + "notifications", + b"notifications", + ], + ) -> None: ... + +global___NotifyStreamsRequest = NotifyStreamsRequest + +class NotifyStreamsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RESULTS_FIELD_NUMBER: builtins.int + @property + def results( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.api.stream.v1.message_pb2.StreamNotificationResult + ]: + """One result per entry of the request, in the same order. Empty only from a server that + fails the whole call on a bad entry, so an empty list on success means every entry applied. + """ + def __init__( + self, + *, + results: collections.abc.Iterable[ + temporalio.api.stream.v1.message_pb2.StreamNotificationResult + ] + | None = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["results", b"results"] + ) -> None: ... + +global___NotifyStreamsResponse = NotifyStreamsResponse diff --git a/temporalio/api/workflowservice/v1/stream_request_response_pb2_grpc.py b/temporalio/api/workflowservice/v1/stream_request_response_pb2_grpc.py new file mode 100644 index 0000000000..bf947056a2 --- /dev/null +++ b/temporalio/api/workflowservice/v1/stream_request_response_pb2_grpc.py @@ -0,0 +1,4 @@ +# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! +"""Client and server classes corresponding to protobuf-defined services.""" + +import grpc diff --git a/temporalio/api/workflowservice/v1/stream_request_response_pb2_grpc.pyi b/temporalio/api/workflowservice/v1/stream_request_response_pb2_grpc.pyi new file mode 100644 index 0000000000..f3a5a087ef --- /dev/null +++ b/temporalio/api/workflowservice/v1/stream_request_response_pb2_grpc.pyi @@ -0,0 +1,4 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" diff --git a/temporalio/bridge/Cargo.lock b/temporalio/bridge/Cargo.lock index 7e15e7b920..eee40156db 100644 --- a/temporalio/bridge/Cargo.lock +++ b/temporalio/bridge/Cargo.lock @@ -2926,11 +2926,14 @@ dependencies = [ [[package]] name = "temporalio-streams" version = "0.1.0" -source = "git+https://github.com/moetemp/sdk-streams?rev=19950841645484ada8d208d4008cee34ff471724#19950841645484ada8d208d4008cee34ff471724" +source = "git+https://github.com/moetemp/sdk-streams?rev=9250d6c7003b6deedf8222972ccbebcfc8efa1c7#9250d6c7003b6deedf8222972ccbebcfc8efa1c7" dependencies = [ "async-trait", "aws-lc-rs", + "bytes", "crc16", + "gethostname", + "lru", "parking_lot", "prost", "prost-wkt-types", diff --git a/temporalio/bridge/Cargo.toml b/temporalio/bridge/Cargo.toml index efe6d96dc2..9b53c2c814 100644 --- a/temporalio/bridge/Cargo.toml +++ b/temporalio/bridge/Cargo.toml @@ -91,7 +91,7 @@ url = "2.2" # makes it use the submodule's crates, so the bridge sees one `Connection` type. [dependencies.temporalio-streams] git = "https://github.com/moetemp/sdk-streams" -rev = "19950841645484ada8d208d4008cee34ff471724" +rev = "9250d6c7003b6deedf8222972ccbebcfc8efa1c7" default-features = false features = ["envconfig", "redis"] diff --git a/temporalio/bridge/proto/streams/__init__.py b/temporalio/bridge/proto/streams/__init__.py index be395a8a36..1e7e59ff6b 100644 --- a/temporalio/bridge/proto/streams/__init__.py +++ b/temporalio/bridge/proto/streams/__init__.py @@ -10,26 +10,44 @@ DeleteOwnerResponse, DescribeStoreRequest, DescribeStoreResponse, + FlushNotificationsRequest, + FlushNotificationsResponse, + FollowedRecord, + FollowRangeRequest, + FollowRequest, + FollowResponse, + FollowSource, + FollowSubscriber, LatestRequest, LatestResponse, + LinkState, MemoryStoreConfig, NamedProducer, OutputRecord, PublishWorkflowTaskRequest, PublishWorkflowTaskResponse, + ReadRangeRequest, ReadRecord, ReadRequest, ReadResponse, + ReadSubscriber, RedisStoreConfig, + ReleaseFloorRequest, + ReleaseFloorResponse, + ResolvedActivityOutcome, + ResolvedOwnerActivity, RetireProducerRequest, RetireProducerResponse, RunEvictedRequest, RunEvictedResponse, ShutdownWorkerRequest, ShutdownWorkerResponse, + SourceRange, + SourceWake, StoreAppendRequest, StoreAppendResponse, StoreCapabilities, + StoredClose, StoredRecord, StoreLatestRequest, StoreLatestResponse, @@ -40,7 +58,13 @@ StreamFailureKind, StreamOwnerKind, StreamStoreConfig, + SubscribeRequest, + SubscribeResponse, Supersession, + UnsubscribeRequest, + UnsubscribeResponse, + WaitForNotificationRequest, + WaitForNotificationResponse, WorkflowTerminalCommand, ) @@ -56,23 +80,40 @@ "DeleteOwnerResponse", "DescribeStoreRequest", "DescribeStoreResponse", + "FlushNotificationsRequest", + "FlushNotificationsResponse", + "FollowRangeRequest", + "FollowRequest", + "FollowResponse", + "FollowSource", + "FollowSubscriber", + "FollowedRecord", "LatestRequest", "LatestResponse", + "LinkState", "MemoryStoreConfig", "NamedProducer", "OutputRecord", "PublishWorkflowTaskRequest", "PublishWorkflowTaskResponse", + "ReadRangeRequest", "ReadRecord", "ReadRequest", "ReadResponse", + "ReadSubscriber", "RedisStoreConfig", + "ReleaseFloorRequest", + "ReleaseFloorResponse", + "ResolvedActivityOutcome", + "ResolvedOwnerActivity", "RetireProducerRequest", "RetireProducerResponse", "RunEvictedRequest", "RunEvictedResponse", "ShutdownWorkerRequest", "ShutdownWorkerResponse", + "SourceRange", + "SourceWake", "StoreAppendRequest", "StoreAppendResponse", "StoreCapabilities", @@ -80,12 +121,19 @@ "StoreLatestResponse", "StoreReadRequest", "StoreReadResponse", + "StoredClose", "StoredRecord", "StreamAddress", "StreamFailure", "StreamFailureKind", "StreamOwnerKind", "StreamStoreConfig", + "SubscribeRequest", + "SubscribeResponse", "Supersession", + "UnsubscribeRequest", + "UnsubscribeResponse", + "WaitForNotificationRequest", + "WaitForNotificationResponse", "WorkflowTerminalCommand", ] diff --git a/temporalio/bridge/proto/streams/streams_pb2.py b/temporalio/bridge/proto/streams/streams_pb2.py index 9849bff97a..7392e738ae 100644 --- a/temporalio/bridge/proto/streams/streams_pb2.py +++ b/temporalio/bridge/proto/streams/streams_pb2.py @@ -16,26 +16,37 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from temporalio.api.common.v1 import ( message_pb2 as temporal_dot_api_dot_common_dot_v1_dot_message__pb2, ) +from temporalio.api.failure.v1 import ( + message_pb2 as temporal_dot_api_dot_failure_dot_v1_dot_message__pb2, +) +from temporalio.api.workflowservice.v1 import ( + stream_request_response_pb2 as temporal_dot_api_dot_workflowservice_dot_v1_dot_stream__request__response__pb2, +) from temporalio.bridge.proto.streams.v1 import ( message_pb2 as temporal_dot_sdk_dot_streams_dot_v1_dot_message__pb2, ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\'temporal/sdk/core/streams/streams.proto\x12\x0f\x63oresdk.streams\x1a\x1egoogle/protobuf/duration.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/sdk/streams/v1/message.proto"\xbc\x01\n\x11StreamStoreConfig\x12\x32\n\x05redis\x18\x01 \x01(\x0b\x32!.coresdk.streams.RedisStoreConfigH\x00\x12\x34\n\x06memory\x18\x02 \x01(\x0b\x32".coresdk.streams.MemoryStoreConfigH\x00\x12\x34\n\x11owner_start_grace\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\x07\n\x05store"\xd8\x01\n\x10RedisStoreConfig\x12\x0c\n\x04urls\x18\x01 \x03(\t\x12\x0f\n\x07\x63luster\x18\x02 \x01(\x08\x12\x12\n\nkey_prefix\x18\x03 \x01(\t\x12,\n\tretention\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1f\n\x17\x62locking_reads_per_node\x18\x05 \x01(\r\x12\x33\n\x10response_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05plain\x18\n \x01(\x08"M\n\x11MemoryStoreConfig\x12\x38\n\x0c\x63\x61pabilities\x18\x01 \x01(\x0b\x32".coresdk.streams.StoreCapabilities"\x8c\x01\n\rStreamAddress\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x34\n\nowner_kind\x18\x02 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\r\n\x05topic\x18\x05 \x01(\t"G\n\x07\x43hainId\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x14\n\x0c\x66irst_run_id\x18\x03 \x01(\t"5\n\rNamedProducer\x12\x13\n\x0bproducer_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x03"]\n\x10\x41\x63tivityProducer\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x05"\x8c\x01\n\x0c\x41ppendRecord\x12\x37\n\x04kind\x18\x01 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12-\n\x04\x62ody\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x14\n\x0c\x63ontent_hash\x18\x03 \x01(\x0c"\x85\x02\n\rAppendRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x05named\x18\x02 \x01(\x0b\x32\x1e.coresdk.streams.NamedProducerH\x00\x12\x35\n\x08\x61\x63tivity\x18\x03 \x01(\x0b\x32!.coresdk.streams.ActivityProducerH\x00\x12\x10\n\x08sequence\x18\x04 \x01(\x03\x12.\n\x07records\x18\x05 \x03(\x0b\x32\x1d.coresdk.streams.AppendRecord\x12\x0e\n\x06\x64igest\x18\x06 \x01(\x0c\x42\n\n\x08producer";\n\x0e\x41ppendResponse\x12\x14\n\x0c\x66irst_cursor\x18\x01 \x01(\t\x12\x13\n\x0blast_cursor\x18\x02 \x01(\t"\x99\x01\n\x0bReadRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\r\n\x05\x61\x66ter\x18\x02 \x01(\t\x12\'\n\x04wait\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x04 \x01(\r\x12\r\n\x05state\x18\x05 \x01(\x0c"]\n\x0cSupersession\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x13\n\x0bproducer_id\x18\x02 \x01(\t\x12\x18\n\x10previous_attempt\x18\x03 \x01(\x03\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x03"\xa3\x01\n\nReadRecord\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t\x12\x37\n\x06stored\x18\x02 \x01(\x0b\x32%.temporal.sdk.streams.v1.StreamRecordH\x00\x12\x33\n\nsuperseded\x18\x03 \x01(\x0b\x32\x1d.coresdk.streams.SupersessionH\x00\x12\r\n\x05stale\x18\x04 \x01(\x08\x42\x08\n\x06record"i\n\x0cReadResponse\x12,\n\x07records\x18\x01 \x03(\x0b\x32\x1b.coresdk.streams.ReadRecord\x12\x0e\n\x06\x63ursor\x18\x02 \x01(\t\x12\r\n\x05state\x18\x03 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x04 \x01(\x08"?\n\rLatestRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress" \n\x0eLatestResponse\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t">\n\x0c\x43loseRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress"\x0f\n\rCloseResponse"r\n\x12\x44\x65leteOwnerRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x34\n\nowner_kind\x18\x02 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t"&\n\x13\x44\x65leteOwnerResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\x04"\xbb\x01\n\x15RetireProducerRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x05named\x18\x02 \x01(\x0b\x32\x1e.coresdk.streams.NamedProducerH\x00\x12\x35\n\x08\x61\x63tivity\x18\x03 \x01(\x0b\x32!.coresdk.streams.ActivityProducerH\x00\x42\n\n\x08producer"\x18\n\x16RetireProducerResponse"\x16\n\x14\x44\x65scribeStoreRequest"_\n\x15\x44\x65scribeStoreResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x0c\x63\x61pabilities\x18\x02 \x01(\x0b\x32".coresdk.streams.StoreCapabilities"\xc1\x02\n\x11StoreCapabilities\x12\x16\n\x0eproducer_state\x18\x01 \x01(\x08\x12\x11\n\tkept_last\x18\x04 \x01(\x08\x12\r\n\x05holds\x18\x05 \x01(\x08\x12\x13\n\x0b\x63hange_feed\x18\x06 \x01(\x08\x12\x12\n\ncheap_logs\x18\x07 \x01(\x08\x12\x14\n\x0c\x64\x65lete_owner\x18\x08 \x01(\x08\x12\x15\n\rtopic_listing\x18\t \x01(\x08\x12\x11\n\tlong_poll\x18\n \x01(\x08\x12\x17\n\x0f\x64\x65nse_positions\x18\x0b \x01(\x08\x12\x31\n\x0ereplay_horizon\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x18\n\x10max_record_bytes\x18\r \x01(\x04\x12\x17\n\x0fmax_batch_bytes\x18\x0e \x01(\x04J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04"b\n\rStreamFailure\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32".coresdk.streams.StreamFailureKind\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0e\n\x06\x63ursor\x18\x03 \x01(\t"\xa5\x01\n\x12StoreAppendRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x13\n\x0bproducer_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x03\x12\x10\n\x08sequence\x18\x05 \x01(\x03\x12\x0e\n\x06\x64igest\x18\x06 \x01(\x0c\x12\x0f\n\x07records\x18\x07 \x03(\x0c"D\n\x13StoreAppendResponse\x12\x16\n\x0e\x66irst_position\x18\x01 \x01(\t\x12\x15\n\rlast_position\x18\x02 \x01(\t"\xa0\x01\n\x10StoreReadRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x16\n\x0e\x61\x66ter_position\x18\x03 \x01(\t\x12\'\n\x04wait\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x05 \x01(\r"0\n\x0cStoredRecord\x12\x10\n\x08position\x18\x01 \x01(\t\x12\x0e\n\x06record\x18\x02 \x01(\x0c"S\n\x11StoreReadResponse\x12.\n\x07records\x18\x01 \x03(\x0b\x32\x1d.coresdk.streams.StoredRecord\x12\x0e\n\x06\x63losed\x18\x02 \x01(\x08"L\n\x12StoreLatestRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t"\'\n\x13StoreLatestResponse\x12\x10\n\x08position\x18\x01 \x01(\t"\xab\x03\n\x1aPublishWorkflowTaskRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\x12\n\ntask_queue\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x05 \x01(\t\x12\x0e\n\x06run_id\x18\x06 \x01(\t\x12\x1e\n\x16\x66irst_execution_run_id\x18\x07 \x01(\t\x12\x0c\n\x04\x63ron\x18\x08 \x01(\x08\x12\x18\n\x10has_retry_policy\x18\t \x01(\x08\x12\x1d\n\x15task_started_event_id\x18\n \x01(\x03\x12\x17\n\x0f\x66\x61iled_attempts\x18\x0b \x01(\r\x12#\n\x1b\x63ompleted_started_event_ids\x18\x0c \x03(\x03\x12.\n\x07records\x18\r \x03(\x0b\x32\x1d.coresdk.streams.OutputRecord\x12\x42\n\x10terminal_command\x18\x0e \x01(\x0e\x32(.coresdk.streams.WorkflowTerminalCommand"\x9b\x01\n\x0cOutputRecord\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x37\n\x04kind\x18\x02 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12-\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x14\n\x0c\x63ontent_hash\x18\x04 \x01(\x0c"5\n\x1bPublishWorkflowTaskResponse\x12\x16\n\x0e\x64ropped_topics\x18\x01 \x03(\t"Y\n\x11RunEvictedRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12!\n\x19workflow_execution_ending\x18\x03 \x01(\x08"\x14\n\x12RunEvictedResponse"*\n\x15ShutdownWorkerRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t"\x18\n\x16ShutdownWorkerResponse*T\n\x0fStreamOwnerKind\x12!\n\x1dSTREAM_OWNER_KIND_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSTREAM_OWNER_KIND_WORKFLOW\x10\x01*\xea\x03\n\x11StreamFailureKind\x12#\n\x1fSTREAM_FAILURE_KIND_UNSPECIFIED\x10\x00\x12*\n&STREAM_FAILURE_KIND_PRODUCER_DIVERGENT\x10\x01\x12&\n"STREAM_FAILURE_KIND_PRODUCER_STALE\x10\x02\x12\'\n#STREAM_FAILURE_KIND_OUTCOME_UNKNOWN\x10\x03\x12\x1f\n\x1bSTREAM_FAILURE_KIND_REFUSED\x10\x04\x12\x1e\n\x1aSTREAM_FAILURE_KIND_CLOSED\x10\x05\x12\x1e\n\x1aSTREAM_FAILURE_KIND_CURSOR\x10\x06\x12\x1f\n\x1bSTREAM_FAILURE_KIND_EXPIRED\x10\x07\x12!\n\x1dSTREAM_FAILURE_KIND_NOT_FOUND\x10\x08\x12\x1e\n\x1aSTREAM_FAILURE_KIND_RECORD\x10\t\x12\x1f\n\x1bSTREAM_FAILURE_KIND_STORAGE\x10\n\x12#\n\x1fSTREAM_FAILURE_KIND_UNSUPPORTED\x10\x0b\x12(\n$STREAM_FAILURE_KIND_INVALID_ARGUMENT\x10\x0c*\xe5\x01\n\x17WorkflowTerminalCommand\x12)\n%WORKFLOW_TERMINAL_COMMAND_UNSPECIFIED\x10\x00\x12&\n"WORKFLOW_TERMINAL_COMMAND_COMPLETE\x10\x01\x12"\n\x1eWORKFLOW_TERMINAL_COMMAND_FAIL\x10\x02\x12$\n WORKFLOW_TERMINAL_COMMAND_CANCEL\x10\x03\x12-\n)WORKFLOW_TERMINAL_COMMAND_CONTINUE_AS_NEW\x10\x04\x32\xfb\x06\n\rStreamService\x12I\n\x06\x41ppend\x12\x1e.coresdk.streams.AppendRequest\x1a\x1f.coresdk.streams.AppendResponse\x12\x43\n\x04Read\x12\x1c.coresdk.streams.ReadRequest\x1a\x1d.coresdk.streams.ReadResponse\x12I\n\x06Latest\x12\x1e.coresdk.streams.LatestRequest\x1a\x1f.coresdk.streams.LatestResponse\x12\x46\n\x05\x43lose\x12\x1d.coresdk.streams.CloseRequest\x1a\x1e.coresdk.streams.CloseResponse\x12X\n\x0b\x44\x65leteOwner\x12#.coresdk.streams.DeleteOwnerRequest\x1a$.coresdk.streams.DeleteOwnerResponse\x12\x61\n\x0eRetireProducer\x12&.coresdk.streams.RetireProducerRequest\x1a\'.coresdk.streams.RetireProducerResponse\x12^\n\rDescribeStore\x12%.coresdk.streams.DescribeStoreRequest\x1a&.coresdk.streams.DescribeStoreResponse\x12p\n\x13PublishWorkflowTask\x12+.coresdk.streams.PublishWorkflowTaskRequest\x1a,.coresdk.streams.PublishWorkflowTaskResponse\x12U\n\nRunEvicted\x12".coresdk.streams.RunEvictedRequest\x1a#.coresdk.streams.RunEvictedResponse\x12\x61\n\x0eShutdownWorker\x12&.coresdk.streams.ShutdownWorkerRequest\x1a\'.coresdk.streams.ShutdownWorkerResponseB-\xea\x02*Temporalio::Internal::Bridge::Api::Streamsb\x06proto3' + b'\n\'temporal/sdk/core/streams/streams.proto\x12\x0f\x63oresdk.streams\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a%temporal/sdk/streams/v1/message.proto\x1a=temporal/api/workflowservice/v1/stream_request_response.proto"\x88\x02\n\x11StreamStoreConfig\x12\x32\n\x05redis\x18\x01 \x01(\x0b\x32!.coresdk.streams.RedisStoreConfigH\x00\x12\x34\n\x06memory\x18\x02 \x01(\x0b\x32".coresdk.streams.MemoryStoreConfigH\x00\x12\x18\n\x10notify_on_append\x18\x03 \x01(\x08\x12\x15\n\rmax_notifiers\x18\x04 \x01(\r\x12\x34\n\x11owner_start_grace\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\x07\n\x05storeJ\x04\x08\x05\x10\x06R\x13notify_every_append"\xc0\x02\n\x10RedisStoreConfig\x12\x0c\n\x04urls\x18\x01 \x03(\t\x12\x0f\n\x07\x63luster\x18\x02 \x01(\x08\x12\x12\n\nkey_prefix\x18\x03 \x01(\t\x12,\n\tretention\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1f\n\x17\x62locking_reads_per_node\x18\x05 \x01(\r\x12\x33\n\x10response_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\x0b\x66loor_lease\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x36\n\x13\x66loor_release_grace\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05plain\x18\n \x01(\x08"M\n\x11MemoryStoreConfig\x12\x38\n\x0c\x63\x61pabilities\x18\x01 \x01(\x0b\x32".coresdk.streams.StoreCapabilities"\xa1\x01\n\rStreamAddress\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x34\n\nowner_kind\x18\x02 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\r\n\x05topic\x18\x05 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x06 \x01(\t"\x92\x01\n\x07\x43hainId\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x14\n\x0c\x66irst_run_id\x18\x03 \x01(\t\x12\x34\n\nowner_kind\x18\x04 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0b\x61\x63tivity_id\x18\x05 \x01(\t"5\n\rNamedProducer\x12\x13\n\x0bproducer_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x03"\x97\x01\n\x10\x41\x63tivityProducer\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x05\x12\x38\n\x14\x61ttempt_started_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"\xbf\x01\n\x0c\x41ppendRecord\x12\x37\n\x04kind\x18\x01 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12-\n\x04\x62ody\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x14\n\x0c\x63ontent_hash\x18\x03 \x01(\x0c\x12\x31\n\x04link\x18\x04 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink"\x85\x02\n\rAppendRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x05named\x18\x02 \x01(\x0b\x32\x1e.coresdk.streams.NamedProducerH\x00\x12\x35\n\x08\x61\x63tivity\x18\x03 \x01(\x0b\x32!.coresdk.streams.ActivityProducerH\x00\x12\x10\n\x08sequence\x18\x04 \x01(\x03\x12.\n\x07records\x18\x05 \x03(\x0b\x32\x1d.coresdk.streams.AppendRecord\x12\x0e\n\x06\x64igest\x18\x06 \x01(\x0c\x42\n\n\x08producer";\n\x0e\x41ppendResponse\x12\x14\n\x0c\x66irst_cursor\x18\x01 \x01(\t\x12\x13\n\x0blast_cursor\x18\x02 \x01(\t"\x82\x02\n\x0bReadRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\r\n\x05\x61\x66ter\x18\x02 \x01(\t\x12\'\n\x04wait\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x04 \x01(\r\x12\r\n\x05state\x18\x05 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x07 \x01(\t\x12\x33\n\nsubscriber\x18\x08 \x01(\x0b\x32\x1f.coresdk.streams.ReadSubscriber\x12\x11\n\tmax_bytes\x18\t \x01(\x04J\x04\x08\x06\x10\x07R\x03\x61rm"b\n\x0eReadSubscriber\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"]\n\x0cSupersession\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x13\n\x0bproducer_id\x18\x02 \x01(\t\x12\x18\n\x10previous_attempt\x18\x03 \x01(\x03\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x03"\xa3\x01\n\nReadRecord\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t\x12\x37\n\x06stored\x18\x02 \x01(\x0b\x32%.temporal.sdk.streams.v1.StreamRecordH\x00\x12\x33\n\nsuperseded\x18\x03 \x01(\x0b\x32\x1d.coresdk.streams.SupersessionH\x00\x12\r\n\x05stale\x18\x04 \x01(\x08\x42\x08\n\x06record"\xd7\x02\n\x0cReadResponse\x12,\n\x07records\x18\x01 \x03(\x0b\x32\x1b.coresdk.streams.ReadRecord\x12\x0e\n\x06\x63ursor\x18\x02 \x01(\t\x12\r\n\x05state\x18\x03 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x04 \x01(\x08\x12\x12\n\nwake_after\x18\x06 \x01(\x03\x12\x35\n\x0c\x63lose_result\x18\x07 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x08 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\t \x01(\t\x12\x16\n\x0erecords_digest\x18\n \x01(\x0c\x12\x1a\n\x12\x63hain_first_run_id\x18\x0b \x01(\t\x12\x14\n\x0cstart_cursor\x18\x0c \x01(\tJ\x04\x08\x05\x10\x06R\x05\x61rmed"\xe6\x01\n\x10ReadRangeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\r\n\x05\x61\x66ter\x18\x03 \x01(\t\x12\n\n\x02to\x18\x04 \x01(\t\x12\x16\n\x0estored_records\x18\x05 \x01(\r\x12\r\n\x05state\x18\x06 \x01(\x0c\x12\x16\n\x0erecords_digest\x18\x07 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x08 \x01(\t\x12\x16\n\x0estart_from_end\x18\t \x01(\x08"w\n\x13ReleaseFloorRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\x14\n\x0c\x66loor_holder\x18\x03 \x01(\t"\x16\n\x14ReleaseFloorResponse"\x8d\x02\n\rFollowRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\r\n\x05\x61\x66ter\x18\x02 \x01(\t\x12\r\n\x05state\x18\x03 \x01(\x0c\x12\'\n\x04wait\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x05 \x01(\r\x12\x11\n\tmax_depth\x18\x06 \x01(\r\x12\x10\n\x08max_open\x18\x07 \x01(\r\x12\x14\n\x0c\x66loor_holder\x18\x08 \x01(\t\x12\x35\n\nsubscriber\x18\t \x01(\x0b\x32!.coresdk.streams.FollowSubscriber"h\n\x10\x46ollowSubscriber\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x1b\n\x13subscription_prefix\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"\x89\x01\n\x0e\x46ollowedRecord\x12\x0e\n\x06source\x18\x01 \x01(\r\x12-\n\x06record\x18\x02 \x01(\x0b\x32\x1b.coresdk.streams.ReadRecordH\x00\x12\x30\n\nlink_state\x18\x03 \x01(\x0b\x32\x1a.coresdk.streams.LinkStateH\x00\x42\x06\n\x04item"\x82\x03\n\tLinkState\x12-\n\x04kind\x18\x01 \x01(\x0e\x32\x1f.coresdk.streams.LinkState.Kind\x12\x31\n\x04link\x18\x02 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink\x12\x35\n\x0c\x63lose_result\x18\x03 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x04 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12-\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x1e.coresdk.streams.StreamFailure\x12\x0e\n\x06reason\x18\x06 \x01(\t"d\n\x04Kind\x12\x14\n\x10KIND_UNSPECIFIED\x10\x00\x12\x0f\n\x0bKIND_OPENED\x10\x01\x12\r\n\tKIND_DONE\x10\x02\x12\x14\n\x10KIND_UNAVAILABLE\x10\x03\x12\x10\n\x0cKIND_SKIPPED\x10\x04"{\n\x0c\x46ollowSource\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06parent\x18\x02 \x01(\r\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\r\x12.\n\x06stream\x18\x04 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x0c\n\x04name\x18\x05 \x01(\t"\xe6\x02\n\x0bSourceRange\x12\x0e\n\x06source\x18\x01 \x01(\r\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\x14\n\x0cstart_cursor\x18\x03 \x01(\t\x12\x0e\n\x06\x63ursor\x18\x04 \x01(\t\x12\x16\n\x0estored_records\x18\x05 \x01(\r\x12\x10\n\x08state_in\x18\x06 \x01(\x0c\x12\x16\n\x0erecords_digest\x18\x07 \x01(\x0c\x12\x16\n\x0estart_from_end\x18\x08 \x01(\x08\x12\x0c\n\x04\x64one\x18\t \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\n \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x0b \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12-\n\x05\x65rror\x18\x0c \x01(\x0b\x32\x1e.coresdk.streams.StreamFailure"I\n\nSourceWake\x12\x0e\n\x06source\x18\x01 \x01(\r\x12\x17\n\x0fsubscription_id\x18\x02 \x01(\t\x12\x12\n\nwake_after\x18\x03 \x01(\x03"\xf0\x02\n\x0e\x46ollowResponse\x12\x30\n\x07records\x18\x01 \x03(\x0b\x32\x1f.coresdk.streams.FollowedRecord\x12\r\n\x05state\x18\x02 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x03 \x01(\x08\x12.\n\x07sources\x18\x04 \x03(\x0b\x32\x1d.coresdk.streams.FollowSource\x12,\n\x06ranges\x18\x05 \x03(\x0b\x32\x1c.coresdk.streams.SourceRange\x12*\n\x05wakes\x18\x06 \x03(\x0b\x32\x1b.coresdk.streams.SourceWake\x12\x35\n\x0c\x63lose_result\x18\x07 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x08 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x15\n\rfollow_digest\x18\t \x01(\x0c"\xd6\x01\n\x12\x46ollowRangeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x10\n\x08state_in\x18\x02 \x01(\x0c\x12,\n\x06ranges\x18\x03 \x03(\x0b\x32\x1c.coresdk.streams.SourceRange\x12\x15\n\rfollow_digest\x18\x04 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x05 \x01(\t\x12\x11\n\tmax_depth\x18\x06 \x01(\r\x12\x10\n\x08max_open\x18\x07 \x01(\r"?\n\rLatestRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress" \n\x0eLatestResponse\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t"\xb5\x01\n\x0c\x43loseRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x06result\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x31\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\x04 \x01(\t"\x84\x01\n\x0bStoredClose\x12/\n\x06result\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\x03 \x01(\t"\x0f\n\rCloseResponse"\x1b\n\x19\x46lushNotificationsRequest"\x1c\n\x1a\x46lushNotificationsResponse"\x94\x01\n\x10SubscribeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x04 \x01(\t\x12\x12\n\ngeneration\x18\x05 \x01(\r"Y\n\x11SubscribeResponse\x12\x1a\n\x12\x63hain_first_run_id\x18\x01 \x01(\t\x12\x10\n\x08\x61ttached\x18\x02 \x01(\x08\x12\x16\n\x0enewest_counter\x18\x03 \x01(\x03"\x81\x01\n\x12UnsubscribeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"\x15\n\x13UnsubscribeResponse"c\n\x1aWaitForNotificationRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x15\n\rafter_counter\x18\x02 \x01(\x03"\xd3\x01\n\x1bWaitForNotificationResponse\x12\x0f\n\x07\x63ounter\x18\x01 \x01(\x03\x12\x10\n\x08position\x18\x02 \x01(\t\x12\x11\n\ttimed_out\x18\x03 \x01(\x08\x12\x0e\n\x06\x63losed\x18\x04 \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\x05 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x06 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\x87\x01\n\x12\x44\x65leteOwnerRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x34\n\nowner_kind\x18\x02 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x04 \x01(\t"&\n\x13\x44\x65leteOwnerResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\x04"\xbb\x01\n\x15RetireProducerRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x05named\x18\x02 \x01(\x0b\x32\x1e.coresdk.streams.NamedProducerH\x00\x12\x35\n\x08\x61\x63tivity\x18\x03 \x01(\x0b\x32!.coresdk.streams.ActivityProducerH\x00\x42\n\n\x08producer"\x18\n\x16RetireProducerResponse"\x16\n\x14\x44\x65scribeStoreRequest"_\n\x15\x44\x65scribeStoreResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x0c\x63\x61pabilities\x18\x02 \x01(\x0b\x32".coresdk.streams.StoreCapabilities"\xc1\x02\n\x11StoreCapabilities\x12\x16\n\x0eproducer_state\x18\x01 \x01(\x08\x12\x11\n\tkept_last\x18\x04 \x01(\x08\x12\r\n\x05holds\x18\x05 \x01(\x08\x12\x13\n\x0b\x63hange_feed\x18\x06 \x01(\x08\x12\x12\n\ncheap_logs\x18\x07 \x01(\x08\x12\x14\n\x0c\x64\x65lete_owner\x18\x08 \x01(\x08\x12\x15\n\rtopic_listing\x18\t \x01(\x08\x12\x11\n\tlong_poll\x18\n \x01(\x08\x12\x17\n\x0f\x64\x65nse_positions\x18\x0b \x01(\x08\x12\x31\n\x0ereplay_horizon\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x18\n\x10max_record_bytes\x18\r \x01(\x04\x12\x17\n\x0fmax_batch_bytes\x18\x0e \x01(\x04J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04"u\n\rStreamFailure\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32".coresdk.streams.StreamFailureKind\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0e\n\x06\x63ursor\x18\x03 \x01(\t\x12\x11\n\tclosed_by\x18\x04 \x01(\t"\xa5\x01\n\x12StoreAppendRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x13\n\x0bproducer_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x03\x12\x10\n\x08sequence\x18\x05 \x01(\x03\x12\x0e\n\x06\x64igest\x18\x06 \x01(\x0c\x12\x0f\n\x07records\x18\x07 \x03(\x0c"O\n\x13StoreAppendResponse\x12\x16\n\x0e\x66irst_position\x18\x01 \x01(\t\x12\x15\n\rlast_position\x18\x02 \x01(\tJ\x04\x08\x03\x10\x04R\x03\x61rm"\xab\x01\n\x10StoreReadRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x16\n\x0e\x61\x66ter_position\x18\x03 \x01(\t\x12\'\n\x04wait\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x05 \x01(\rJ\x04\x08\x06\x10\x07R\x03\x61rm"0\n\x0cStoredRecord\x12\x10\n\x08position\x18\x01 \x01(\t\x12\x0e\n\x06record\x18\x02 \x01(\x0c"\x8d\x01\n\x11StoreReadResponse\x12.\n\x07records\x18\x01 \x03(\x0b\x32\x1d.coresdk.streams.StoredRecord\x12\x0e\n\x06\x63losed\x18\x02 \x01(\x08\x12+\n\x05\x63lose\x18\x04 \x01(\x0b\x32\x1c.coresdk.streams.StoredCloseJ\x04\x08\x03\x10\x04R\x05\x61rmed"L\n\x12StoreLatestRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t"\'\n\x13StoreLatestResponse\x12\x10\n\x08position\x18\x01 \x01(\t"\xf6\x03\n\x1aPublishWorkflowTaskRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\x12\n\ntask_queue\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x05 \x01(\t\x12\x0e\n\x06run_id\x18\x06 \x01(\t\x12\x1e\n\x16\x66irst_execution_run_id\x18\x07 \x01(\t\x12\x0c\n\x04\x63ron\x18\x08 \x01(\x08\x12\x18\n\x10has_retry_policy\x18\t \x01(\x08\x12\x1d\n\x15task_started_event_id\x18\n \x01(\x03\x12\x17\n\x0f\x66\x61iled_attempts\x18\x0b \x01(\r\x12#\n\x1b\x63ompleted_started_event_ids\x18\x0c \x03(\x03\x12.\n\x07records\x18\r \x03(\x0b\x32\x1d.coresdk.streams.OutputRecord\x12\x42\n\x10terminal_command\x18\x0e \x01(\x0e\x32(.coresdk.streams.WorkflowTerminalCommand\x12I\n\x19resolved_owner_activities\x18\x0f \x03(\x0b\x32&.coresdk.streams.ResolvedOwnerActivity"\x9a\x01\n\x15ResolvedOwnerActivity\x12\x13\n\x0b\x61\x63tivity_id\x18\x01 \x01(\t\x12\x39\n\x07outcome\x18\x02 \x01(\x0e\x32(.coresdk.streams.ResolvedActivityOutcome\x12\x31\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\xce\x01\n\x0cOutputRecord\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x37\n\x04kind\x18\x02 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12-\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x14\n\x0c\x63ontent_hash\x18\x04 \x01(\x0c\x12\x31\n\x04link\x18\x05 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink"5\n\x1bPublishWorkflowTaskResponse\x12\x16\n\x0e\x64ropped_topics\x18\x01 \x03(\t"Y\n\x11RunEvictedRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12!\n\x19workflow_execution_ending\x18\x03 \x01(\x08"\x14\n\x12RunEvictedResponse"*\n\x15ShutdownWorkerRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t"\x18\n\x16ShutdownWorkerResponse*\x9d\x01\n\x0fStreamOwnerKind\x12!\n\x1dSTREAM_OWNER_KIND_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSTREAM_OWNER_KIND_WORKFLOW\x10\x01\x12\x1e\n\x1aSTREAM_OWNER_KIND_ACTIVITY\x10\x02\x12\'\n#STREAM_OWNER_KIND_WORKFLOW_ACTIVITY\x10\x03*\xbe\x04\n\x11StreamFailureKind\x12#\n\x1fSTREAM_FAILURE_KIND_UNSPECIFIED\x10\x00\x12*\n&STREAM_FAILURE_KIND_PRODUCER_DIVERGENT\x10\x01\x12&\n"STREAM_FAILURE_KIND_PRODUCER_STALE\x10\x02\x12\'\n#STREAM_FAILURE_KIND_OUTCOME_UNKNOWN\x10\x03\x12\x1f\n\x1bSTREAM_FAILURE_KIND_REFUSED\x10\x04\x12\x1e\n\x1aSTREAM_FAILURE_KIND_CLOSED\x10\x05\x12\x1e\n\x1aSTREAM_FAILURE_KIND_CURSOR\x10\x06\x12\x1f\n\x1bSTREAM_FAILURE_KIND_EXPIRED\x10\x07\x12!\n\x1dSTREAM_FAILURE_KIND_NOT_FOUND\x10\x08\x12\x1e\n\x1aSTREAM_FAILURE_KIND_RECORD\x10\t\x12\x1f\n\x1bSTREAM_FAILURE_KIND_STORAGE\x10\n\x12#\n\x1fSTREAM_FAILURE_KIND_UNSUPPORTED\x10\x0b\x12(\n$STREAM_FAILURE_KIND_INVALID_ARGUMENT\x10\x0c\x12\'\n#STREAM_FAILURE_KIND_REPLAY_MISMATCH\x10\r\x12)\n%STREAM_FAILURE_KIND_REPLAY_RANGE_LOST\x10\x0e*\xbc\x01\n\x17ResolvedActivityOutcome\x12)\n%RESOLVED_ACTIVITY_OUTCOME_UNSPECIFIED\x10\x00\x12\'\n#RESOLVED_ACTIVITY_OUTCOME_COMPLETED\x10\x01\x12$\n RESOLVED_ACTIVITY_OUTCOME_FAILED\x10\x02\x12\'\n#RESOLVED_ACTIVITY_OUTCOME_CANCELLED\x10\x03*\xe5\x01\n\x17WorkflowTerminalCommand\x12)\n%WORKFLOW_TERMINAL_COMMAND_UNSPECIFIED\x10\x00\x12&\n"WORKFLOW_TERMINAL_COMMAND_COMPLETE\x10\x01\x12"\n\x1eWORKFLOW_TERMINAL_COMMAND_FAIL\x10\x02\x12$\n WORKFLOW_TERMINAL_COMMAND_CANCEL\x10\x03\x12-\n)WORKFLOW_TERMINAL_COMMAND_CONTINUE_AS_NEW\x10\x04\x32\xf2\r\n\rStreamService\x12I\n\x06\x41ppend\x12\x1e.coresdk.streams.AppendRequest\x1a\x1f.coresdk.streams.AppendResponse\x12\x43\n\x04Read\x12\x1c.coresdk.streams.ReadRequest\x1a\x1d.coresdk.streams.ReadResponse\x12I\n\x06Latest\x12\x1e.coresdk.streams.LatestRequest\x1a\x1f.coresdk.streams.LatestResponse\x12\x46\n\x05\x43lose\x12\x1d.coresdk.streams.CloseRequest\x1a\x1e.coresdk.streams.CloseResponse\x12X\n\x0b\x44\x65leteOwner\x12#.coresdk.streams.DeleteOwnerRequest\x1a$.coresdk.streams.DeleteOwnerResponse\x12\x61\n\x0eRetireProducer\x12&.coresdk.streams.RetireProducerRequest\x1a\'.coresdk.streams.RetireProducerResponse\x12m\n\x12\x46lushNotifications\x12*.coresdk.streams.FlushNotificationsRequest\x1a+.coresdk.streams.FlushNotificationsResponse\x12R\n\tSubscribe\x12!.coresdk.streams.SubscribeRequest\x1a".coresdk.streams.SubscribeResponse\x12X\n\x0bUnsubscribe\x12#.coresdk.streams.UnsubscribeRequest\x1a$.coresdk.streams.UnsubscribeResponse\x12p\n\x13WaitForNotification\x12+.coresdk.streams.WaitForNotificationRequest\x1a,.coresdk.streams.WaitForNotificationResponse\x12\x99\x01\n\x16\x44\x65scribeStreamNotifier\x12>.temporal.api.workflowservice.v1.DescribeStreamNotifierRequest\x1a?.temporal.api.workflowservice.v1.DescribeStreamNotifierResponse\x12M\n\tReadRange\x12!.coresdk.streams.ReadRangeRequest\x1a\x1d.coresdk.streams.ReadResponse\x12[\n\x0cReleaseFloor\x12$.coresdk.streams.ReleaseFloorRequest\x1a%.coresdk.streams.ReleaseFloorResponse\x12I\n\x06\x46ollow\x12\x1e.coresdk.streams.FollowRequest\x1a\x1f.coresdk.streams.FollowResponse\x12S\n\x0b\x46ollowRange\x12#.coresdk.streams.FollowRangeRequest\x1a\x1f.coresdk.streams.FollowResponse\x12^\n\rDescribeStore\x12%.coresdk.streams.DescribeStoreRequest\x1a&.coresdk.streams.DescribeStoreResponse\x12p\n\x13PublishWorkflowTask\x12+.coresdk.streams.PublishWorkflowTaskRequest\x1a,.coresdk.streams.PublishWorkflowTaskResponse\x12U\n\nRunEvicted\x12".coresdk.streams.RunEvictedRequest\x1a#.coresdk.streams.RunEvictedResponse\x12\x61\n\x0eShutdownWorker\x12&.coresdk.streams.ShutdownWorkerRequest\x1a\'.coresdk.streams.ShutdownWorkerResponseB-\xea\x02*Temporalio::Internal::Bridge::Api::Streamsb\x06proto3' ) _STREAMOWNERKIND = DESCRIPTOR.enum_types_by_name["StreamOwnerKind"] StreamOwnerKind = enum_type_wrapper.EnumTypeWrapper(_STREAMOWNERKIND) _STREAMFAILUREKIND = DESCRIPTOR.enum_types_by_name["StreamFailureKind"] StreamFailureKind = enum_type_wrapper.EnumTypeWrapper(_STREAMFAILUREKIND) +_RESOLVEDACTIVITYOUTCOME = DESCRIPTOR.enum_types_by_name["ResolvedActivityOutcome"] +ResolvedActivityOutcome = enum_type_wrapper.EnumTypeWrapper(_RESOLVEDACTIVITYOUTCOME) _WORKFLOWTERMINALCOMMAND = DESCRIPTOR.enum_types_by_name["WorkflowTerminalCommand"] WorkflowTerminalCommand = enum_type_wrapper.EnumTypeWrapper(_WORKFLOWTERMINALCOMMAND) STREAM_OWNER_KIND_UNSPECIFIED = 0 STREAM_OWNER_KIND_WORKFLOW = 1 +STREAM_OWNER_KIND_ACTIVITY = 2 +STREAM_OWNER_KIND_WORKFLOW_ACTIVITY = 3 STREAM_FAILURE_KIND_UNSPECIFIED = 0 STREAM_FAILURE_KIND_PRODUCER_DIVERGENT = 1 STREAM_FAILURE_KIND_PRODUCER_STALE = 2 @@ -49,6 +60,12 @@ STREAM_FAILURE_KIND_STORAGE = 10 STREAM_FAILURE_KIND_UNSUPPORTED = 11 STREAM_FAILURE_KIND_INVALID_ARGUMENT = 12 +STREAM_FAILURE_KIND_REPLAY_MISMATCH = 13 +STREAM_FAILURE_KIND_REPLAY_RANGE_LOST = 14 +RESOLVED_ACTIVITY_OUTCOME_UNSPECIFIED = 0 +RESOLVED_ACTIVITY_OUTCOME_COMPLETED = 1 +RESOLVED_ACTIVITY_OUTCOME_FAILED = 2 +RESOLVED_ACTIVITY_OUTCOME_CANCELLED = 3 WORKFLOW_TERMINAL_COMMAND_UNSPECIFIED = 0 WORKFLOW_TERMINAL_COMMAND_COMPLETE = 1 WORKFLOW_TERMINAL_COMMAND_FAIL = 2 @@ -67,13 +84,43 @@ _APPENDREQUEST = DESCRIPTOR.message_types_by_name["AppendRequest"] _APPENDRESPONSE = DESCRIPTOR.message_types_by_name["AppendResponse"] _READREQUEST = DESCRIPTOR.message_types_by_name["ReadRequest"] +_READSUBSCRIBER = DESCRIPTOR.message_types_by_name["ReadSubscriber"] _SUPERSESSION = DESCRIPTOR.message_types_by_name["Supersession"] _READRECORD = DESCRIPTOR.message_types_by_name["ReadRecord"] _READRESPONSE = DESCRIPTOR.message_types_by_name["ReadResponse"] +_READRANGEREQUEST = DESCRIPTOR.message_types_by_name["ReadRangeRequest"] +_RELEASEFLOORREQUEST = DESCRIPTOR.message_types_by_name["ReleaseFloorRequest"] +_RELEASEFLOORRESPONSE = DESCRIPTOR.message_types_by_name["ReleaseFloorResponse"] +_FOLLOWREQUEST = DESCRIPTOR.message_types_by_name["FollowRequest"] +_FOLLOWSUBSCRIBER = DESCRIPTOR.message_types_by_name["FollowSubscriber"] +_FOLLOWEDRECORD = DESCRIPTOR.message_types_by_name["FollowedRecord"] +_LINKSTATE = DESCRIPTOR.message_types_by_name["LinkState"] +_FOLLOWSOURCE = DESCRIPTOR.message_types_by_name["FollowSource"] +_SOURCERANGE = DESCRIPTOR.message_types_by_name["SourceRange"] +_SOURCEWAKE = DESCRIPTOR.message_types_by_name["SourceWake"] +_FOLLOWRESPONSE = DESCRIPTOR.message_types_by_name["FollowResponse"] +_FOLLOWRANGEREQUEST = DESCRIPTOR.message_types_by_name["FollowRangeRequest"] _LATESTREQUEST = DESCRIPTOR.message_types_by_name["LatestRequest"] _LATESTRESPONSE = DESCRIPTOR.message_types_by_name["LatestResponse"] _CLOSEREQUEST = DESCRIPTOR.message_types_by_name["CloseRequest"] +_STOREDCLOSE = DESCRIPTOR.message_types_by_name["StoredClose"] _CLOSERESPONSE = DESCRIPTOR.message_types_by_name["CloseResponse"] +_FLUSHNOTIFICATIONSREQUEST = DESCRIPTOR.message_types_by_name[ + "FlushNotificationsRequest" +] +_FLUSHNOTIFICATIONSRESPONSE = DESCRIPTOR.message_types_by_name[ + "FlushNotificationsResponse" +] +_SUBSCRIBEREQUEST = DESCRIPTOR.message_types_by_name["SubscribeRequest"] +_SUBSCRIBERESPONSE = DESCRIPTOR.message_types_by_name["SubscribeResponse"] +_UNSUBSCRIBEREQUEST = DESCRIPTOR.message_types_by_name["UnsubscribeRequest"] +_UNSUBSCRIBERESPONSE = DESCRIPTOR.message_types_by_name["UnsubscribeResponse"] +_WAITFORNOTIFICATIONREQUEST = DESCRIPTOR.message_types_by_name[ + "WaitForNotificationRequest" +] +_WAITFORNOTIFICATIONRESPONSE = DESCRIPTOR.message_types_by_name[ + "WaitForNotificationResponse" +] _DELETEOWNERREQUEST = DESCRIPTOR.message_types_by_name["DeleteOwnerRequest"] _DELETEOWNERRESPONSE = DESCRIPTOR.message_types_by_name["DeleteOwnerResponse"] _RETIREPRODUCERREQUEST = DESCRIPTOR.message_types_by_name["RetireProducerRequest"] @@ -92,6 +139,7 @@ _PUBLISHWORKFLOWTASKREQUEST = DESCRIPTOR.message_types_by_name[ "PublishWorkflowTaskRequest" ] +_RESOLVEDOWNERACTIVITY = DESCRIPTOR.message_types_by_name["ResolvedOwnerActivity"] _OUTPUTRECORD = DESCRIPTOR.message_types_by_name["OutputRecord"] _PUBLISHWORKFLOWTASKRESPONSE = DESCRIPTOR.message_types_by_name[ "PublishWorkflowTaskResponse" @@ -100,6 +148,7 @@ _RUNEVICTEDRESPONSE = DESCRIPTOR.message_types_by_name["RunEvictedResponse"] _SHUTDOWNWORKERREQUEST = DESCRIPTOR.message_types_by_name["ShutdownWorkerRequest"] _SHUTDOWNWORKERRESPONSE = DESCRIPTOR.message_types_by_name["ShutdownWorkerResponse"] +_LINKSTATE_KIND = _LINKSTATE.enum_types_by_name["Kind"] StreamStoreConfig = _reflection.GeneratedProtocolMessageType( "StreamStoreConfig", (_message.Message,), @@ -221,6 +270,17 @@ ) _sym_db.RegisterMessage(ReadRequest) +ReadSubscriber = _reflection.GeneratedProtocolMessageType( + "ReadSubscriber", + (_message.Message,), + { + "DESCRIPTOR": _READSUBSCRIBER, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.ReadSubscriber) + }, +) +_sym_db.RegisterMessage(ReadSubscriber) + Supersession = _reflection.GeneratedProtocolMessageType( "Supersession", (_message.Message,), @@ -254,6 +314,138 @@ ) _sym_db.RegisterMessage(ReadResponse) +ReadRangeRequest = _reflection.GeneratedProtocolMessageType( + "ReadRangeRequest", + (_message.Message,), + { + "DESCRIPTOR": _READRANGEREQUEST, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.ReadRangeRequest) + }, +) +_sym_db.RegisterMessage(ReadRangeRequest) + +ReleaseFloorRequest = _reflection.GeneratedProtocolMessageType( + "ReleaseFloorRequest", + (_message.Message,), + { + "DESCRIPTOR": _RELEASEFLOORREQUEST, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.ReleaseFloorRequest) + }, +) +_sym_db.RegisterMessage(ReleaseFloorRequest) + +ReleaseFloorResponse = _reflection.GeneratedProtocolMessageType( + "ReleaseFloorResponse", + (_message.Message,), + { + "DESCRIPTOR": _RELEASEFLOORRESPONSE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.ReleaseFloorResponse) + }, +) +_sym_db.RegisterMessage(ReleaseFloorResponse) + +FollowRequest = _reflection.GeneratedProtocolMessageType( + "FollowRequest", + (_message.Message,), + { + "DESCRIPTOR": _FOLLOWREQUEST, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.FollowRequest) + }, +) +_sym_db.RegisterMessage(FollowRequest) + +FollowSubscriber = _reflection.GeneratedProtocolMessageType( + "FollowSubscriber", + (_message.Message,), + { + "DESCRIPTOR": _FOLLOWSUBSCRIBER, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.FollowSubscriber) + }, +) +_sym_db.RegisterMessage(FollowSubscriber) + +FollowedRecord = _reflection.GeneratedProtocolMessageType( + "FollowedRecord", + (_message.Message,), + { + "DESCRIPTOR": _FOLLOWEDRECORD, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.FollowedRecord) + }, +) +_sym_db.RegisterMessage(FollowedRecord) + +LinkState = _reflection.GeneratedProtocolMessageType( + "LinkState", + (_message.Message,), + { + "DESCRIPTOR": _LINKSTATE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.LinkState) + }, +) +_sym_db.RegisterMessage(LinkState) + +FollowSource = _reflection.GeneratedProtocolMessageType( + "FollowSource", + (_message.Message,), + { + "DESCRIPTOR": _FOLLOWSOURCE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.FollowSource) + }, +) +_sym_db.RegisterMessage(FollowSource) + +SourceRange = _reflection.GeneratedProtocolMessageType( + "SourceRange", + (_message.Message,), + { + "DESCRIPTOR": _SOURCERANGE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.SourceRange) + }, +) +_sym_db.RegisterMessage(SourceRange) + +SourceWake = _reflection.GeneratedProtocolMessageType( + "SourceWake", + (_message.Message,), + { + "DESCRIPTOR": _SOURCEWAKE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.SourceWake) + }, +) +_sym_db.RegisterMessage(SourceWake) + +FollowResponse = _reflection.GeneratedProtocolMessageType( + "FollowResponse", + (_message.Message,), + { + "DESCRIPTOR": _FOLLOWRESPONSE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.FollowResponse) + }, +) +_sym_db.RegisterMessage(FollowResponse) + +FollowRangeRequest = _reflection.GeneratedProtocolMessageType( + "FollowRangeRequest", + (_message.Message,), + { + "DESCRIPTOR": _FOLLOWRANGEREQUEST, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.FollowRangeRequest) + }, +) +_sym_db.RegisterMessage(FollowRangeRequest) + LatestRequest = _reflection.GeneratedProtocolMessageType( "LatestRequest", (_message.Message,), @@ -287,6 +479,17 @@ ) _sym_db.RegisterMessage(CloseRequest) +StoredClose = _reflection.GeneratedProtocolMessageType( + "StoredClose", + (_message.Message,), + { + "DESCRIPTOR": _STOREDCLOSE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.StoredClose) + }, +) +_sym_db.RegisterMessage(StoredClose) + CloseResponse = _reflection.GeneratedProtocolMessageType( "CloseResponse", (_message.Message,), @@ -298,6 +501,94 @@ ) _sym_db.RegisterMessage(CloseResponse) +FlushNotificationsRequest = _reflection.GeneratedProtocolMessageType( + "FlushNotificationsRequest", + (_message.Message,), + { + "DESCRIPTOR": _FLUSHNOTIFICATIONSREQUEST, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.FlushNotificationsRequest) + }, +) +_sym_db.RegisterMessage(FlushNotificationsRequest) + +FlushNotificationsResponse = _reflection.GeneratedProtocolMessageType( + "FlushNotificationsResponse", + (_message.Message,), + { + "DESCRIPTOR": _FLUSHNOTIFICATIONSRESPONSE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.FlushNotificationsResponse) + }, +) +_sym_db.RegisterMessage(FlushNotificationsResponse) + +SubscribeRequest = _reflection.GeneratedProtocolMessageType( + "SubscribeRequest", + (_message.Message,), + { + "DESCRIPTOR": _SUBSCRIBEREQUEST, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.SubscribeRequest) + }, +) +_sym_db.RegisterMessage(SubscribeRequest) + +SubscribeResponse = _reflection.GeneratedProtocolMessageType( + "SubscribeResponse", + (_message.Message,), + { + "DESCRIPTOR": _SUBSCRIBERESPONSE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.SubscribeResponse) + }, +) +_sym_db.RegisterMessage(SubscribeResponse) + +UnsubscribeRequest = _reflection.GeneratedProtocolMessageType( + "UnsubscribeRequest", + (_message.Message,), + { + "DESCRIPTOR": _UNSUBSCRIBEREQUEST, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.UnsubscribeRequest) + }, +) +_sym_db.RegisterMessage(UnsubscribeRequest) + +UnsubscribeResponse = _reflection.GeneratedProtocolMessageType( + "UnsubscribeResponse", + (_message.Message,), + { + "DESCRIPTOR": _UNSUBSCRIBERESPONSE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.UnsubscribeResponse) + }, +) +_sym_db.RegisterMessage(UnsubscribeResponse) + +WaitForNotificationRequest = _reflection.GeneratedProtocolMessageType( + "WaitForNotificationRequest", + (_message.Message,), + { + "DESCRIPTOR": _WAITFORNOTIFICATIONREQUEST, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.WaitForNotificationRequest) + }, +) +_sym_db.RegisterMessage(WaitForNotificationRequest) + +WaitForNotificationResponse = _reflection.GeneratedProtocolMessageType( + "WaitForNotificationResponse", + (_message.Message,), + { + "DESCRIPTOR": _WAITFORNOTIFICATIONRESPONSE, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.WaitForNotificationResponse) + }, +) +_sym_db.RegisterMessage(WaitForNotificationResponse) + DeleteOwnerRequest = _reflection.GeneratedProtocolMessageType( "DeleteOwnerRequest", (_message.Message,), @@ -474,6 +765,17 @@ ) _sym_db.RegisterMessage(PublishWorkflowTaskRequest) +ResolvedOwnerActivity = _reflection.GeneratedProtocolMessageType( + "ResolvedOwnerActivity", + (_message.Message,), + { + "DESCRIPTOR": _RESOLVEDOWNERACTIVITY, + "__module__": "temporal.sdk.core.streams.streams_pb2", + # @@protoc_insertion_point(class_scope:coresdk.streams.ResolvedOwnerActivity) + }, +) +_sym_db.RegisterMessage(ResolvedOwnerActivity) + OutputRecord = _reflection.GeneratedProtocolMessageType( "OutputRecord", (_message.Message,), @@ -546,92 +848,142 @@ DESCRIPTOR._serialized_options = ( b"\352\002*Temporalio::Internal::Bridge::Api::Streams" ) - _STREAMOWNERKIND._serialized_start = 4594 - _STREAMOWNERKIND._serialized_end = 4678 - _STREAMFAILUREKIND._serialized_start = 4681 - _STREAMFAILUREKIND._serialized_end = 5171 - _WORKFLOWTERMINALCOMMAND._serialized_start = 5174 - _WORKFLOWTERMINALCOMMAND._serialized_end = 5403 - _STREAMSTORECONFIG._serialized_start = 170 - _STREAMSTORECONFIG._serialized_end = 358 - _REDISSTORECONFIG._serialized_start = 361 - _REDISSTORECONFIG._serialized_end = 577 - _MEMORYSTORECONFIG._serialized_start = 579 - _MEMORYSTORECONFIG._serialized_end = 656 - _STREAMADDRESS._serialized_start = 659 - _STREAMADDRESS._serialized_end = 799 - _CHAINID._serialized_start = 801 - _CHAINID._serialized_end = 872 - _NAMEDPRODUCER._serialized_start = 874 - _NAMEDPRODUCER._serialized_end = 927 - _ACTIVITYPRODUCER._serialized_start = 929 - _ACTIVITYPRODUCER._serialized_end = 1022 - _APPENDRECORD._serialized_start = 1025 - _APPENDRECORD._serialized_end = 1165 - _APPENDREQUEST._serialized_start = 1168 - _APPENDREQUEST._serialized_end = 1429 - _APPENDRESPONSE._serialized_start = 1431 - _APPENDRESPONSE._serialized_end = 1490 - _READREQUEST._serialized_start = 1493 - _READREQUEST._serialized_end = 1646 - _SUPERSESSION._serialized_start = 1648 - _SUPERSESSION._serialized_end = 1741 - _READRECORD._serialized_start = 1744 - _READRECORD._serialized_end = 1907 - _READRESPONSE._serialized_start = 1909 - _READRESPONSE._serialized_end = 2014 - _LATESTREQUEST._serialized_start = 2016 - _LATESTREQUEST._serialized_end = 2079 - _LATESTRESPONSE._serialized_start = 2081 - _LATESTRESPONSE._serialized_end = 2113 - _CLOSEREQUEST._serialized_start = 2115 - _CLOSEREQUEST._serialized_end = 2177 - _CLOSERESPONSE._serialized_start = 2179 - _CLOSERESPONSE._serialized_end = 2194 - _DELETEOWNERREQUEST._serialized_start = 2196 - _DELETEOWNERREQUEST._serialized_end = 2310 - _DELETEOWNERRESPONSE._serialized_start = 2312 - _DELETEOWNERRESPONSE._serialized_end = 2350 - _RETIREPRODUCERREQUEST._serialized_start = 2353 - _RETIREPRODUCERREQUEST._serialized_end = 2540 - _RETIREPRODUCERRESPONSE._serialized_start = 2542 - _RETIREPRODUCERRESPONSE._serialized_end = 2566 - _DESCRIBESTOREREQUEST._serialized_start = 2568 - _DESCRIBESTOREREQUEST._serialized_end = 2590 - _DESCRIBESTORERESPONSE._serialized_start = 2592 - _DESCRIBESTORERESPONSE._serialized_end = 2687 - _STORECAPABILITIES._serialized_start = 2690 - _STORECAPABILITIES._serialized_end = 3011 - _STREAMFAILURE._serialized_start = 3013 - _STREAMFAILURE._serialized_end = 3111 - _STOREAPPENDREQUEST._serialized_start = 3114 - _STOREAPPENDREQUEST._serialized_end = 3279 - _STOREAPPENDRESPONSE._serialized_start = 3281 - _STOREAPPENDRESPONSE._serialized_end = 3349 - _STOREREADREQUEST._serialized_start = 3352 - _STOREREADREQUEST._serialized_end = 3512 - _STOREDRECORD._serialized_start = 3514 - _STOREDRECORD._serialized_end = 3562 - _STOREREADRESPONSE._serialized_start = 3564 - _STOREREADRESPONSE._serialized_end = 3647 - _STORELATESTREQUEST._serialized_start = 3649 - _STORELATESTREQUEST._serialized_end = 3725 - _STORELATESTRESPONSE._serialized_start = 3727 - _STORELATESTRESPONSE._serialized_end = 3766 - _PUBLISHWORKFLOWTASKREQUEST._serialized_start = 3769 - _PUBLISHWORKFLOWTASKREQUEST._serialized_end = 4196 - _OUTPUTRECORD._serialized_start = 4199 - _OUTPUTRECORD._serialized_end = 4354 - _PUBLISHWORKFLOWTASKRESPONSE._serialized_start = 4356 - _PUBLISHWORKFLOWTASKRESPONSE._serialized_end = 4409 - _RUNEVICTEDREQUEST._serialized_start = 4411 - _RUNEVICTEDREQUEST._serialized_end = 4500 - _RUNEVICTEDRESPONSE._serialized_start = 4502 - _RUNEVICTEDRESPONSE._serialized_end = 4522 - _SHUTDOWNWORKERREQUEST._serialized_start = 4524 - _SHUTDOWNWORKERREQUEST._serialized_end = 4566 - _SHUTDOWNWORKERRESPONSE._serialized_start = 4568 - _SHUTDOWNWORKERRESPONSE._serialized_end = 4592 - _STREAMSERVICE._serialized_start = 5406 - _STREAMSERVICE._serialized_end = 6297 + _STREAMOWNERKIND._serialized_start = 9426 + _STREAMOWNERKIND._serialized_end = 9583 + _STREAMFAILUREKIND._serialized_start = 9586 + _STREAMFAILUREKIND._serialized_end = 10160 + _RESOLVEDACTIVITYOUTCOME._serialized_start = 10163 + _RESOLVEDACTIVITYOUTCOME._serialized_end = 10351 + _WORKFLOWTERMINALCOMMAND._serialized_start = 10354 + _WORKFLOWTERMINALCOMMAND._serialized_end = 10583 + _STREAMSTORECONFIG._serialized_start = 305 + _STREAMSTORECONFIG._serialized_end = 569 + _REDISSTORECONFIG._serialized_start = 572 + _REDISSTORECONFIG._serialized_end = 892 + _MEMORYSTORECONFIG._serialized_start = 894 + _MEMORYSTORECONFIG._serialized_end = 971 + _STREAMADDRESS._serialized_start = 974 + _STREAMADDRESS._serialized_end = 1135 + _CHAINID._serialized_start = 1138 + _CHAINID._serialized_end = 1284 + _NAMEDPRODUCER._serialized_start = 1286 + _NAMEDPRODUCER._serialized_end = 1339 + _ACTIVITYPRODUCER._serialized_start = 1342 + _ACTIVITYPRODUCER._serialized_end = 1493 + _APPENDRECORD._serialized_start = 1496 + _APPENDRECORD._serialized_end = 1687 + _APPENDREQUEST._serialized_start = 1690 + _APPENDREQUEST._serialized_end = 1951 + _APPENDRESPONSE._serialized_start = 1953 + _APPENDRESPONSE._serialized_end = 2012 + _READREQUEST._serialized_start = 2015 + _READREQUEST._serialized_end = 2273 + _READSUBSCRIBER._serialized_start = 2275 + _READSUBSCRIBER._serialized_end = 2373 + _SUPERSESSION._serialized_start = 2375 + _SUPERSESSION._serialized_end = 2468 + _READRECORD._serialized_start = 2471 + _READRECORD._serialized_end = 2634 + _READRESPONSE._serialized_start = 2637 + _READRESPONSE._serialized_end = 2980 + _READRANGEREQUEST._serialized_start = 2983 + _READRANGEREQUEST._serialized_end = 3213 + _RELEASEFLOORREQUEST._serialized_start = 3215 + _RELEASEFLOORREQUEST._serialized_end = 3334 + _RELEASEFLOORRESPONSE._serialized_start = 3336 + _RELEASEFLOORRESPONSE._serialized_end = 3358 + _FOLLOWREQUEST._serialized_start = 3361 + _FOLLOWREQUEST._serialized_end = 3630 + _FOLLOWSUBSCRIBER._serialized_start = 3632 + _FOLLOWSUBSCRIBER._serialized_end = 3736 + _FOLLOWEDRECORD._serialized_start = 3739 + _FOLLOWEDRECORD._serialized_end = 3876 + _LINKSTATE._serialized_start = 3879 + _LINKSTATE._serialized_end = 4265 + _LINKSTATE_KIND._serialized_start = 4165 + _LINKSTATE_KIND._serialized_end = 4265 + _FOLLOWSOURCE._serialized_start = 4267 + _FOLLOWSOURCE._serialized_end = 4390 + _SOURCERANGE._serialized_start = 4393 + _SOURCERANGE._serialized_end = 4751 + _SOURCEWAKE._serialized_start = 4753 + _SOURCEWAKE._serialized_end = 4826 + _FOLLOWRESPONSE._serialized_start = 4829 + _FOLLOWRESPONSE._serialized_end = 5197 + _FOLLOWRANGEREQUEST._serialized_start = 5200 + _FOLLOWRANGEREQUEST._serialized_end = 5414 + _LATESTREQUEST._serialized_start = 5416 + _LATESTREQUEST._serialized_end = 5479 + _LATESTRESPONSE._serialized_start = 5481 + _LATESTRESPONSE._serialized_end = 5513 + _CLOSEREQUEST._serialized_start = 5516 + _CLOSEREQUEST._serialized_end = 5697 + _STOREDCLOSE._serialized_start = 5700 + _STOREDCLOSE._serialized_end = 5832 + _CLOSERESPONSE._serialized_start = 5834 + _CLOSERESPONSE._serialized_end = 5849 + _FLUSHNOTIFICATIONSREQUEST._serialized_start = 5851 + _FLUSHNOTIFICATIONSREQUEST._serialized_end = 5878 + _FLUSHNOTIFICATIONSRESPONSE._serialized_start = 5880 + _FLUSHNOTIFICATIONSRESPONSE._serialized_end = 5908 + _SUBSCRIBEREQUEST._serialized_start = 5911 + _SUBSCRIBEREQUEST._serialized_end = 6059 + _SUBSCRIBERESPONSE._serialized_start = 6061 + _SUBSCRIBERESPONSE._serialized_end = 6150 + _UNSUBSCRIBEREQUEST._serialized_start = 6153 + _UNSUBSCRIBEREQUEST._serialized_end = 6282 + _UNSUBSCRIBERESPONSE._serialized_start = 6284 + _UNSUBSCRIBERESPONSE._serialized_end = 6305 + _WAITFORNOTIFICATIONREQUEST._serialized_start = 6307 + _WAITFORNOTIFICATIONREQUEST._serialized_end = 6406 + _WAITFORNOTIFICATIONRESPONSE._serialized_start = 6409 + _WAITFORNOTIFICATIONRESPONSE._serialized_end = 6620 + _DELETEOWNERREQUEST._serialized_start = 6623 + _DELETEOWNERREQUEST._serialized_end = 6758 + _DELETEOWNERRESPONSE._serialized_start = 6760 + _DELETEOWNERRESPONSE._serialized_end = 6798 + _RETIREPRODUCERREQUEST._serialized_start = 6801 + _RETIREPRODUCERREQUEST._serialized_end = 6988 + _RETIREPRODUCERRESPONSE._serialized_start = 6990 + _RETIREPRODUCERRESPONSE._serialized_end = 7014 + _DESCRIBESTOREREQUEST._serialized_start = 7016 + _DESCRIBESTOREREQUEST._serialized_end = 7038 + _DESCRIBESTORERESPONSE._serialized_start = 7040 + _DESCRIBESTORERESPONSE._serialized_end = 7135 + _STORECAPABILITIES._serialized_start = 7138 + _STORECAPABILITIES._serialized_end = 7459 + _STREAMFAILURE._serialized_start = 7461 + _STREAMFAILURE._serialized_end = 7578 + _STOREAPPENDREQUEST._serialized_start = 7581 + _STOREAPPENDREQUEST._serialized_end = 7746 + _STOREAPPENDRESPONSE._serialized_start = 7748 + _STOREAPPENDRESPONSE._serialized_end = 7827 + _STOREREADREQUEST._serialized_start = 7830 + _STOREREADREQUEST._serialized_end = 8001 + _STOREDRECORD._serialized_start = 8003 + _STOREDRECORD._serialized_end = 8051 + _STOREREADRESPONSE._serialized_start = 8054 + _STOREREADRESPONSE._serialized_end = 8195 + _STORELATESTREQUEST._serialized_start = 8197 + _STORELATESTREQUEST._serialized_end = 8273 + _STORELATESTRESPONSE._serialized_start = 8275 + _STORELATESTRESPONSE._serialized_end = 8314 + _PUBLISHWORKFLOWTASKREQUEST._serialized_start = 8317 + _PUBLISHWORKFLOWTASKREQUEST._serialized_end = 8819 + _RESOLVEDOWNERACTIVITY._serialized_start = 8822 + _RESOLVEDOWNERACTIVITY._serialized_end = 8976 + _OUTPUTRECORD._serialized_start = 8979 + _OUTPUTRECORD._serialized_end = 9185 + _PUBLISHWORKFLOWTASKRESPONSE._serialized_start = 9187 + _PUBLISHWORKFLOWTASKRESPONSE._serialized_end = 9240 + _RUNEVICTEDREQUEST._serialized_start = 9242 + _RUNEVICTEDREQUEST._serialized_end = 9331 + _RUNEVICTEDRESPONSE._serialized_start = 9333 + _RUNEVICTEDRESPONSE._serialized_end = 9353 + _SHUTDOWNWORKERREQUEST._serialized_start = 9355 + _SHUTDOWNWORKERREQUEST._serialized_end = 9397 + _SHUTDOWNWORKERRESPONSE._serialized_start = 9399 + _SHUTDOWNWORKERRESPONSE._serialized_end = 9423 + _STREAMSERVICE._serialized_start = 10586 + _STREAMSERVICE._serialized_end = 12364 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/streams/streams_pb2.pyi b/temporalio/bridge/proto/streams/streams_pb2.pyi index c271a6f969..c9243519ec 100644 --- a/temporalio/bridge/proto/streams/streams_pb2.pyi +++ b/temporalio/bridge/proto/streams/streams_pb2.pyi @@ -13,8 +13,10 @@ import google.protobuf.duration_pb2 import google.protobuf.internal.containers import google.protobuf.internal.enum_type_wrapper import google.protobuf.message +import google.protobuf.timestamp_pb2 import temporalio.api.common.v1.message_pb2 +import temporalio.api.failure.v1.message_pb2 import temporalio.bridge.proto.streams.v1.message_pb2 if sys.version_info >= (3, 10): @@ -37,12 +39,24 @@ class _StreamOwnerKindEnumTypeWrapper( DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor STREAM_OWNER_KIND_UNSPECIFIED: _StreamOwnerKind.ValueType # 0 STREAM_OWNER_KIND_WORKFLOW: _StreamOwnerKind.ValueType # 1 + STREAM_OWNER_KIND_ACTIVITY: _StreamOwnerKind.ValueType # 2 + """A standalone Activity run. It is a chain of one run, so its streams end with the run.""" + STREAM_OWNER_KIND_WORKFLOW_ACTIVITY: _StreamOwnerKind.ValueType # 3 + """An Activity that a Workflow run scheduled. It is a chain of one, keyed by the scheduling run + and the Activity id, so its streams end with the Activity. + """ class StreamOwnerKind(_StreamOwnerKind, metaclass=_StreamOwnerKindEnumTypeWrapper): """What owns a stream. The owner decides when the stream closes.""" STREAM_OWNER_KIND_UNSPECIFIED: StreamOwnerKind.ValueType # 0 STREAM_OWNER_KIND_WORKFLOW: StreamOwnerKind.ValueType # 1 +STREAM_OWNER_KIND_ACTIVITY: StreamOwnerKind.ValueType # 2 +"""A standalone Activity run. It is a chain of one run, so its streams end with the run.""" +STREAM_OWNER_KIND_WORKFLOW_ACTIVITY: StreamOwnerKind.ValueType # 3 +"""An Activity that a Workflow run scheduled. It is a chain of one, keyed by the scheduling run +and the Activity id, so its streams end with the Activity. +""" global___StreamOwnerKind = StreamOwnerKind class _StreamFailureKind: @@ -84,6 +98,14 @@ class _StreamFailureKindEnumTypeWrapper( the same call fails the same way. A lang built before this kind maps it, as any kind it doesn't know, to a storage failure. """ + STREAM_FAILURE_KIND_REPLAY_MISMATCH: _StreamFailureKind.ValueType # 13 + """A replay read found other records than the read it repeats: other content, another count + or another end. Lang reports it as nondeterminism. + """ + STREAM_FAILURE_KIND_REPLAY_RANGE_LOST: _StreamFailureKind.ValueType # 14 + """A replay read found that the store no longer holds the range the read it repeats got + (REC-01), such as records that retention trimmed or a deleted log. + """ class StreamFailureKind( _StreamFailureKind, metaclass=_StreamFailureKindEnumTypeWrapper @@ -120,8 +142,45 @@ STREAM_FAILURE_KIND_INVALID_ARGUMENT: StreamFailureKind.ValueType # 12 the same call fails the same way. A lang built before this kind maps it, as any kind it doesn't know, to a storage failure. """ +STREAM_FAILURE_KIND_REPLAY_MISMATCH: StreamFailureKind.ValueType # 13 +"""A replay read found other records than the read it repeats: other content, another count +or another end. Lang reports it as nondeterminism. +""" +STREAM_FAILURE_KIND_REPLAY_RANGE_LOST: StreamFailureKind.ValueType # 14 +"""A replay read found that the store no longer holds the range the read it repeats got +(REC-01), such as records that retention trimmed or a deleted log. +""" global___StreamFailureKind = StreamFailureKind +class _ResolvedActivityOutcome: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _ResolvedActivityOutcomeEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ + _ResolvedActivityOutcome.ValueType + ], + builtins.type, +): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + RESOLVED_ACTIVITY_OUTCOME_UNSPECIFIED: _ResolvedActivityOutcome.ValueType # 0 + RESOLVED_ACTIVITY_OUTCOME_COMPLETED: _ResolvedActivityOutcome.ValueType # 1 + """The streams close with an empty result.""" + RESOLVED_ACTIVITY_OUTCOME_FAILED: _ResolvedActivityOutcome.ValueType # 2 + RESOLVED_ACTIVITY_OUTCOME_CANCELLED: _ResolvedActivityOutcome.ValueType # 3 + +class ResolvedActivityOutcome( + _ResolvedActivityOutcome, metaclass=_ResolvedActivityOutcomeEnumTypeWrapper +): + """How an owner Activity ended. A Local Activity owns no streams, so a backoff never comes here.""" + +RESOLVED_ACTIVITY_OUTCOME_UNSPECIFIED: ResolvedActivityOutcome.ValueType # 0 +RESOLVED_ACTIVITY_OUTCOME_COMPLETED: ResolvedActivityOutcome.ValueType # 1 +"""The streams close with an empty result.""" +RESOLVED_ACTIVITY_OUTCOME_FAILED: ResolvedActivityOutcome.ValueType # 2 +RESOLVED_ACTIVITY_OUTCOME_CANCELLED: ResolvedActivityOutcome.ValueType # 3 +global___ResolvedActivityOutcome = ResolvedActivityOutcome + class _WorkflowTerminalCommand: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType @@ -159,11 +218,23 @@ class StreamStoreConfig(google.protobuf.message.Message): REDIS_FIELD_NUMBER: builtins.int MEMORY_FIELD_NUMBER: builtins.int + NOTIFY_ON_APPEND_FIELD_NUMBER: builtins.int + MAX_NOTIFIERS_FIELD_NUMBER: builtins.int OWNER_START_GRACE_FIELD_NUMBER: builtins.int @property def redis(self) -> global___RedisStoreConfig: ... @property def memory(self) -> global___MemoryStoreConfig: ... + notify_on_append: builtins.bool + """Tells each stream's notifier on the server when the stream moves, after every append. That's + what wakes a reader that waits on the notifier. Off by default, since most streams have no + such reader and each notification costs a call. It turns on progress only. Closes reach the + notifier either way. A server without the stream notifier costs one call, and then the + process stops notifying. An append answers only after its notification went, or after a few + failed tries, so a producer that stops before then gets no answer and its retry notifies. + """ + max_notifiers: builtins.int + """How many streams to keep a notifier for, dropping the least recently used. Zero uses 1000.""" @property def owner_start_grace(self) -> google.protobuf.duration_pb2.Duration: """How long a read waits for a Workflow that Temporal doesn't know yet, counted from the read's @@ -176,6 +247,8 @@ class StreamStoreConfig(google.protobuf.message.Message): *, redis: global___RedisStoreConfig | None = ..., memory: global___MemoryStoreConfig | None = ..., + notify_on_append: builtins.bool = ..., + max_notifiers: builtins.int = ..., owner_start_grace: google.protobuf.duration_pb2.Duration | None = ..., ) -> None: ... def HasField( @@ -194,8 +267,12 @@ class StreamStoreConfig(google.protobuf.message.Message): def ClearField( self, field_name: typing_extensions.Literal[ + "max_notifiers", + b"max_notifiers", "memory", b"memory", + "notify_on_append", + b"notify_on_append", "owner_start_grace", b"owner_start_grace", "redis", @@ -221,6 +298,8 @@ class RedisStoreConfig(google.protobuf.message.Message): RETENTION_FIELD_NUMBER: builtins.int BLOCKING_READS_PER_NODE_FIELD_NUMBER: builtins.int RESPONSE_TIMEOUT_FIELD_NUMBER: builtins.int + FLOOR_LEASE_FIELD_NUMBER: builtins.int + FLOOR_RELEASE_GRACE_FIELD_NUMBER: builtins.int PLAIN_FIELD_NUMBER: builtins.int @property def urls( @@ -244,6 +323,14 @@ class RedisStoreConfig(google.protobuf.message.Message): @property def response_timeout(self) -> google.protobuf.duration_pb2.Duration: """How long a short call waits for its reply. Unset uses the default.""" + @property + def floor_lease(self) -> google.protobuf.duration_pb2.Duration: + """How long a positions-only reader holds a stream's records after its last read. Unset uses + `retention`. + """ + @property + def floor_release_grace(self) -> google.protobuf.duration_pb2.Duration: + """How long a hold lasts after its reader released it. Unset keeps one day.""" plain: builtins.bool """Runs with no Lua, so the store keeps no producer state and no last position, and the service takes their fallbacks. For tests of the fallbacks on a real store. @@ -257,12 +344,21 @@ class RedisStoreConfig(google.protobuf.message.Message): retention: google.protobuf.duration_pb2.Duration | None = ..., blocking_reads_per_node: builtins.int = ..., response_timeout: google.protobuf.duration_pb2.Duration | None = ..., + floor_lease: google.protobuf.duration_pb2.Duration | None = ..., + floor_release_grace: google.protobuf.duration_pb2.Duration | None = ..., plain: builtins.bool = ..., ) -> None: ... def HasField( self, field_name: typing_extensions.Literal[ - "response_timeout", b"response_timeout", "retention", b"retention" + "floor_lease", + b"floor_lease", + "floor_release_grace", + b"floor_release_grace", + "response_timeout", + b"response_timeout", + "retention", + b"retention", ], ) -> builtins.bool: ... def ClearField( @@ -272,6 +368,10 @@ class RedisStoreConfig(google.protobuf.message.Message): b"blocking_reads_per_node", "cluster", b"cluster", + "floor_lease", + b"floor_lease", + "floor_release_grace", + b"floor_release_grace", "key_prefix", b"key_prefix", "plain", @@ -324,14 +424,23 @@ class StreamAddress(google.protobuf.message.Message): WORKFLOW_ID_FIELD_NUMBER: builtins.int RUN_ID_FIELD_NUMBER: builtins.int TOPIC_FIELD_NUMBER: builtins.int + ACTIVITY_ID_FIELD_NUMBER: builtins.int namespace: builtins.str owner_kind: global___StreamOwnerKind.ValueType workflow_id: builtins.str + """The owning Workflow, or the Workflow that scheduled a Workflow Activity. Empty for a + standalone Activity owner. + """ run_id: builtins.str """Pins the stream to the run chain that holds this run. Empty follows the chain that holds the - Workflow id when the call starts. + Workflow id when the call starts. For an Activity owner, the Activity run, and empty names + the newest run of the Activity id when the call starts. For a Workflow Activity owner, the + run that scheduled the Activity. It is required, since an Activity id names nothing across + runs. """ topic: builtins.str + activity_id: builtins.str + """The owning Activity. Empty for a Workflow owner.""" def __init__( self, *, @@ -340,10 +449,13 @@ class StreamAddress(google.protobuf.message.Message): workflow_id: builtins.str = ..., run_id: builtins.str = ..., topic: builtins.str = ..., + activity_id: builtins.str = ..., ) -> None: ... def ClearField( self, field_name: typing_extensions.Literal[ + "activity_id", + b"activity_id", "namespace", b"namespace", "owner_kind", @@ -361,7 +473,9 @@ global___StreamAddress = StreamAddress class ChainId(google.protobuf.message.Message): """A Workflow's run chain. Its streams are keyed by its first run, so they follow - Continue-as-New, and a new chain on the same Workflow id gets streams of its own. + Continue-as-New, and a new chain on the same Workflow id gets streams of its own. A standalone + Activity run is a chain of one run, with the run as `first_run_id`. A Workflow Activity is a + chain of one, with the scheduling run as `first_run_id`. """ DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -369,23 +483,36 @@ class ChainId(google.protobuf.message.Message): NAMESPACE_FIELD_NUMBER: builtins.int WORKFLOW_ID_FIELD_NUMBER: builtins.int FIRST_RUN_ID_FIELD_NUMBER: builtins.int + OWNER_KIND_FIELD_NUMBER: builtins.int + ACTIVITY_ID_FIELD_NUMBER: builtins.int namespace: builtins.str workflow_id: builtins.str + """Empty for a standalone Activity owner.""" first_run_id: builtins.str + owner_kind: global___StreamOwnerKind.ValueType + """`UNSPECIFIED` is a Workflow owner, so a chain from before the Activity kind stays valid.""" + activity_id: builtins.str + """Empty for a Workflow owner.""" def __init__( self, *, namespace: builtins.str = ..., workflow_id: builtins.str = ..., first_run_id: builtins.str = ..., + owner_kind: global___StreamOwnerKind.ValueType = ..., + activity_id: builtins.str = ..., ) -> None: ... def ClearField( self, field_name: typing_extensions.Literal[ + "activity_id", + b"activity_id", "first_run_id", b"first_run_id", "namespace", b"namespace", + "owner_kind", + b"owner_kind", "workflow_id", b"workflow_id", ], @@ -431,10 +558,17 @@ class ActivityProducer(google.protobuf.message.Message): RUN_ID_FIELD_NUMBER: builtins.int ACTIVITY_ID_FIELD_NUMBER: builtins.int ATTEMPT_FIELD_NUMBER: builtins.int + ATTEMPT_STARTED_TIME_FIELD_NUMBER: builtins.int workflow_id: builtins.str run_id: builtins.str activity_id: builtins.str attempt: builtins.int + @property + def attempt_started_time(self) -> google.protobuf.timestamp_pb2.Timestamp: + """When the attempt started, as the Activity task gives it. With it, the service writes the + attempt as `started_unix_ms << 11 | min(attempt, 2047)`, so a later attempt and a reset + attempt both supersede an earlier one. Unset writes `attempt` as it is. + """ def __init__( self, *, @@ -442,7 +576,14 @@ class ActivityProducer(google.protobuf.message.Message): run_id: builtins.str = ..., activity_id: builtins.str = ..., attempt: builtins.int = ..., + attempt_started_time: google.protobuf.timestamp_pb2.Timestamp | None = ..., ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "attempt_started_time", b"attempt_started_time" + ], + ) -> builtins.bool: ... def ClearField( self, field_name: typing_extensions.Literal[ @@ -450,6 +591,8 @@ class ActivityProducer(google.protobuf.message.Message): b"activity_id", "attempt", b"attempt", + "attempt_started_time", + b"attempt_started_time", "run_id", b"run_id", "workflow_id", @@ -467,6 +610,7 @@ class AppendRecord(google.protobuf.message.Message): KIND_FIELD_NUMBER: builtins.int BODY_FIELD_NUMBER: builtins.int CONTENT_HASH_FIELD_NUMBER: builtins.int + LINK_FIELD_NUMBER: builtins.int kind: temporalio.bridge.proto.streams.v1.message_pb2.StreamRecordKind.ValueType @property def body(self) -> temporalio.api.common.v1.message_pb2.Payload: @@ -476,20 +620,31 @@ class AppendRecord(google.protobuf.message.Message): encrypts with a fresh nonce makes a retry's bytes differ, so a retry is recognized by this. Empty when there is no body. """ + @property + def link(self) -> temporalio.bridge.proto.streams.v1.message_pb2.StreamLink: + """Set on LINK only. A LINK's body is optional.""" def __init__( self, *, kind: temporalio.bridge.proto.streams.v1.message_pb2.StreamRecordKind.ValueType = ..., body: temporalio.api.common.v1.message_pb2.Payload | None = ..., content_hash: builtins.bytes = ..., + link: temporalio.bridge.proto.streams.v1.message_pb2.StreamLink | None = ..., ) -> None: ... def HasField( - self, field_name: typing_extensions.Literal["body", b"body"] + self, field_name: typing_extensions.Literal["body", b"body", "link", b"link"] ) -> builtins.bool: ... def ClearField( self, field_name: typing_extensions.Literal[ - "body", b"body", "content_hash", b"content_hash", "kind", b"kind" + "body", + b"body", + "content_hash", + b"content_hash", + "kind", + b"kind", + "link", + b"link", ], ) -> None: ... @@ -606,6 +761,9 @@ class ReadRequest(google.protobuf.message.Message): WAIT_FIELD_NUMBER: builtins.int MAX_RECORDS_FIELD_NUMBER: builtins.int STATE_FIELD_NUMBER: builtins.int + FLOOR_HOLDER_FIELD_NUMBER: builtins.int + SUBSCRIBER_FIELD_NUMBER: builtins.int + MAX_BYTES_FIELD_NUMBER: builtins.int @property def stream(self) -> global___StreamAddress: ... after: builtins.str @@ -623,6 +781,23 @@ class ReadRequest(google.protobuf.message.Message): """ state: builtins.bytes """The `state` of the previous answer of the same read. Empty on its first call.""" + floor_holder: builtins.str + """For a positions-only Workflow reader: names the reader, as its run id and its subscription + id. The store holds the records after this read's start against retention for that holder, + until `ReleaseFloor` and its grace, or until the holder's lease passes with no read. + """ + @property + def subscriber(self) -> global___ReadSubscriber: + """Set by a Workflow reader. An answer with no records that is not `done` attaches the reader + idle when this process has not, asks the notifier for one wake after the answer's + `wake_after`, and reads once more when a record landed before the attach. An answer with + records sends nothing, so a reader that keeps up costs the notifier nothing. + """ + max_bytes: builtins.int + """The most stored record bytes one answer holds past its first record. Zero puts no bound. A + Workflow reader that records its answers in History sets it, so an answer stays below the + server's blob size limit. + """ def __init__( self, *, @@ -631,22 +806,33 @@ class ReadRequest(google.protobuf.message.Message): wait: google.protobuf.duration_pb2.Duration | None = ..., max_records: builtins.int = ..., state: builtins.bytes = ..., + floor_holder: builtins.str = ..., + subscriber: global___ReadSubscriber | None = ..., + max_bytes: builtins.int = ..., ) -> None: ... def HasField( self, - field_name: typing_extensions.Literal["stream", b"stream", "wait", b"wait"], + field_name: typing_extensions.Literal[ + "stream", b"stream", "subscriber", b"subscriber", "wait", b"wait" + ], ) -> builtins.bool: ... def ClearField( self, field_name: typing_extensions.Literal[ "after", b"after", + "floor_holder", + b"floor_holder", + "max_bytes", + b"max_bytes", "max_records", b"max_records", "state", b"state", "stream", b"stream", + "subscriber", + b"subscriber", "wait", b"wait", ], @@ -654,6 +840,43 @@ class ReadRequest(google.protobuf.message.Message): global___ReadRequest = ReadRequest +class ReadSubscriber(google.protobuf.message.Message): + """The Workflow reader that an idle read wakes, as `SubscribeRequest` names it.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WORKFLOW_ID_FIELD_NUMBER: builtins.int + RUN_ID_FIELD_NUMBER: builtins.int + SUBSCRIPTION_ID_FIELD_NUMBER: builtins.int + GENERATION_FIELD_NUMBER: builtins.int + workflow_id: builtins.str + run_id: builtins.str + subscription_id: builtins.str + generation: builtins.int + def __init__( + self, + *, + workflow_id: builtins.str = ..., + run_id: builtins.str = ..., + subscription_id: builtins.str = ..., + generation: builtins.int = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "generation", + b"generation", + "run_id", + b"run_id", + "subscription_id", + b"subscription_id", + "workflow_id", + b"workflow_id", + ], + ) -> None: ... + +global___ReadSubscriber = ReadSubscriber + class Supersession(google.protobuf.message.Message): """A later attempt of a producer started writing. Readers synthesize it, and no store holds it.""" @@ -752,6 +975,13 @@ class ReadResponse(google.protobuf.message.Message): CURSOR_FIELD_NUMBER: builtins.int STATE_FIELD_NUMBER: builtins.int DONE_FIELD_NUMBER: builtins.int + WAKE_AFTER_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + CLOSED_BY_FIELD_NUMBER: builtins.int + RECORDS_DIGEST_FIELD_NUMBER: builtins.int + CHAIN_FIRST_RUN_ID_FIELD_NUMBER: builtins.int + START_CURSOR_FIELD_NUMBER: builtins.int @property def records( self, @@ -770,6 +1000,33 @@ class ReadResponse(google.protobuf.message.Message): """The owner's chain ended and the read delivered every record the stream retains. No later call returns a record. """ + wake_after: builtins.int + """Set on an answer with no records and not `done`: the notification counter of the read's + position, zero for an empty stream. A notification with a higher counter names a record + after the position, so the reader waits for a counter above this one. One that landed before + the wait started counts. + """ + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: + """Set with `done` when the stream's topic was closed with a result. A chain close, when the + owner ended with no close, sets none of these three. + """ + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """Set with `done` when the stream's topic was closed with a failure.""" + closed_by: builtins.str + """Set with `done` to the `closed_by` of the topic's first close.""" + records_digest: builtins.bytes + """SHA-256 over the answer's records, as `ReadRange` checks it: per record its cursor, its stale + flag, and for a stored record its kind, producer, attempt, sequence and plaintext content + hash, or for a supersession its producer and both attempts. It leaves out the encoded body. + """ + chain_first_run_id: builtins.str + """The first run of the chain the read read. `ReadRange` takes it, so replay needs no describe.""" + start_cursor: builtins.str + """The cursor this answer reads strictly after, with `$end` resolved. With `cursor`, it is the + range `ReadRange` reads again. + """ def __init__( self, *, @@ -777,199 +1034,1276 @@ class ReadResponse(google.protobuf.message.Message): cursor: builtins.str = ..., state: builtins.bytes = ..., done: builtins.bool = ..., + wake_after: builtins.int = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + closed_by: builtins.str = ..., + records_digest: builtins.bytes = ..., + chain_first_run_id: builtins.str = ..., + start_cursor: builtins.str = ..., ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "close_failure", b"close_failure", "close_result", b"close_result" + ], + ) -> builtins.bool: ... def ClearField( self, field_name: typing_extensions.Literal[ + "chain_first_run_id", + b"chain_first_run_id", + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "closed_by", + b"closed_by", "cursor", b"cursor", "done", b"done", "records", b"records", + "records_digest", + b"records_digest", + "start_cursor", + b"start_cursor", "state", b"state", + "wake_after", + b"wake_after", ], ) -> None: ... global___ReadResponse = ReadResponse -class LatestRequest(google.protobuf.message.Message): +class ReadRangeRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor STREAM_FIELD_NUMBER: builtins.int + CHAIN_FIRST_RUN_ID_FIELD_NUMBER: builtins.int + AFTER_FIELD_NUMBER: builtins.int + TO_FIELD_NUMBER: builtins.int + STORED_RECORDS_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + RECORDS_DIGEST_FIELD_NUMBER: builtins.int + FLOOR_HOLDER_FIELD_NUMBER: builtins.int + START_FROM_END_FIELD_NUMBER: builtins.int @property - def stream(self) -> global___StreamAddress: ... + def stream(self) -> global___StreamAddress: + """The stream, as the read named it.""" + chain_first_run_id: builtins.str + """The read's `chain_first_run_id`.""" + after: builtins.str + """The read's `start_cursor` and its answer's `cursor`.""" + to: builtins.str + stored_records: builtins.int + """How many stored records the answer held, not counting supersessions.""" + state: builtins.bytes + """The read's input `state`.""" + records_digest: builtins.bytes + """The answer's `records_digest`.""" + floor_holder: builtins.str + """As in `ReadRequest`, so a replay holds the records for its own run.""" + start_from_end: builtins.bool + """Set when the read's `after` was `$end`. That read looked up no record at the start it found, + and the replay must not either, or a newer attempt there reads as superseded. + """ def __init__( self, *, stream: global___StreamAddress | None = ..., + chain_first_run_id: builtins.str = ..., + after: builtins.str = ..., + to: builtins.str = ..., + stored_records: builtins.int = ..., + state: builtins.bytes = ..., + records_digest: builtins.bytes = ..., + floor_holder: builtins.str = ..., + start_from_end: builtins.bool = ..., ) -> None: ... def HasField( self, field_name: typing_extensions.Literal["stream", b"stream"] ) -> builtins.bool: ... def ClearField( - self, field_name: typing_extensions.Literal["stream", b"stream"] - ) -> None: ... - -global___LatestRequest = LatestRequest - -class LatestResponse(google.protobuf.message.Message): - DESCRIPTOR: google.protobuf.descriptor.Descriptor - - CURSOR_FIELD_NUMBER: builtins.int - cursor: builtins.str - """Empty when the stream holds no record.""" - def __init__( self, - *, - cursor: builtins.str = ..., - ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["cursor", b"cursor"] + field_name: typing_extensions.Literal[ + "after", + b"after", + "chain_first_run_id", + b"chain_first_run_id", + "floor_holder", + b"floor_holder", + "records_digest", + b"records_digest", + "start_from_end", + b"start_from_end", + "state", + b"state", + "stored_records", + b"stored_records", + "stream", + b"stream", + "to", + b"to", + ], ) -> None: ... -global___LatestResponse = LatestResponse +global___ReadRangeRequest = ReadRangeRequest -class CloseRequest(google.protobuf.message.Message): +class ReleaseFloorRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor STREAM_FIELD_NUMBER: builtins.int + CHAIN_FIRST_RUN_ID_FIELD_NUMBER: builtins.int + FLOOR_HOLDER_FIELD_NUMBER: builtins.int @property def stream(self) -> global___StreamAddress: ... + chain_first_run_id: builtins.str + floor_holder: builtins.str def __init__( self, *, stream: global___StreamAddress | None = ..., + chain_first_run_id: builtins.str = ..., + floor_holder: builtins.str = ..., ) -> None: ... def HasField( self, field_name: typing_extensions.Literal["stream", b"stream"] ) -> builtins.bool: ... def ClearField( - self, field_name: typing_extensions.Literal["stream", b"stream"] + self, + field_name: typing_extensions.Literal[ + "chain_first_run_id", + b"chain_first_run_id", + "floor_holder", + b"floor_holder", + "stream", + b"stream", + ], ) -> None: ... -global___CloseRequest = CloseRequest +global___ReleaseFloorRequest = ReleaseFloorRequest -class CloseResponse(google.protobuf.message.Message): +class ReleaseFloorResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor def __init__( self, ) -> None: ... -global___CloseResponse = CloseResponse +global___ReleaseFloorResponse = ReleaseFloorResponse -class DeleteOwnerRequest(google.protobuf.message.Message): +class FollowRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - NAMESPACE_FIELD_NUMBER: builtins.int - OWNER_KIND_FIELD_NUMBER: builtins.int - WORKFLOW_ID_FIELD_NUMBER: builtins.int - namespace: builtins.str - owner_kind: global___StreamOwnerKind.ValueType - workflow_id: builtins.str + STREAM_FIELD_NUMBER: builtins.int + AFTER_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + WAIT_FIELD_NUMBER: builtins.int + MAX_RECORDS_FIELD_NUMBER: builtins.int + MAX_DEPTH_FIELD_NUMBER: builtins.int + MAX_OPEN_FIELD_NUMBER: builtins.int + FLOOR_HOLDER_FIELD_NUMBER: builtins.int + SUBSCRIBER_FIELD_NUMBER: builtins.int + @property + def stream(self) -> global___StreamAddress: + """The root stream.""" + after: builtins.str + """The root cursor, on the first call. Later calls resume from `state` and ignore it.""" + state: builtins.bytes + """The `state` of the previous answer. Empty on the first call.""" + @property + def wait(self) -> google.protobuf.duration_pb2.Duration: + """How long to wait for a record when no source has one. The service waits at most 60 seconds.""" + max_records: builtins.int + """How many stored records one answer holds at most, across all sources. Zero uses 100. The + service answers with at most 1,000. + """ + max_depth: builtins.int + """How deep links are followed. The root is depth zero. Zero uses 4. The first call's limits + hold for the whole follow, and `state` keeps them. + """ + max_open: builtins.int + """How many linked streams are open at once. Zero uses 16.""" + floor_holder: builtins.str + """For a positions-only follower: each source holds its records as `/`.""" + @property + def subscriber(self) -> global___FollowSubscriber: + """Set by a Workflow follower. An empty answer attaches each idle source idle and asks its + notifier for one wake after the source's `wake_after`. + """ def __init__( self, *, - namespace: builtins.str = ..., - owner_kind: global___StreamOwnerKind.ValueType = ..., - workflow_id: builtins.str = ..., + stream: global___StreamAddress | None = ..., + after: builtins.str = ..., + state: builtins.bytes = ..., + wait: google.protobuf.duration_pb2.Duration | None = ..., + max_records: builtins.int = ..., + max_depth: builtins.int = ..., + max_open: builtins.int = ..., + floor_holder: builtins.str = ..., + subscriber: global___FollowSubscriber | None = ..., ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "stream", b"stream", "subscriber", b"subscriber", "wait", b"wait" + ], + ) -> builtins.bool: ... def ClearField( self, field_name: typing_extensions.Literal[ - "namespace", - b"namespace", - "owner_kind", - b"owner_kind", - "workflow_id", - b"workflow_id", + "after", + b"after", + "floor_holder", + b"floor_holder", + "max_depth", + b"max_depth", + "max_open", + b"max_open", + "max_records", + b"max_records", + "state", + b"state", + "stream", + b"stream", + "subscriber", + b"subscriber", + "wait", + b"wait", ], ) -> None: ... -global___DeleteOwnerRequest = DeleteOwnerRequest +global___FollowRequest = FollowRequest + +class FollowSubscriber(google.protobuf.message.Message): + """The Workflow that follows, so each idle source wakes it.""" -class DeleteOwnerResponse(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - DELETED_FIELD_NUMBER: builtins.int - deleted: builtins.int - """How much the delete removed, counted the store's own way, such as Redis keys. Only zero - means the same on every store: nothing was left to delete. - """ + WORKFLOW_ID_FIELD_NUMBER: builtins.int + RUN_ID_FIELD_NUMBER: builtins.int + SUBSCRIPTION_PREFIX_FIELD_NUMBER: builtins.int + GENERATION_FIELD_NUMBER: builtins.int + workflow_id: builtins.str + run_id: builtins.str + subscription_prefix: builtins.str + """Each source subscribes as `.`.""" + generation: builtins.int def __init__( self, *, - deleted: builtins.int = ..., + workflow_id: builtins.str = ..., + run_id: builtins.str = ..., + subscription_prefix: builtins.str = ..., + generation: builtins.int = ..., ) -> None: ... def ClearField( - self, field_name: typing_extensions.Literal["deleted", b"deleted"] + self, + field_name: typing_extensions.Literal[ + "generation", + b"generation", + "run_id", + b"run_id", + "subscription_prefix", + b"subscription_prefix", + "workflow_id", + b"workflow_id", + ], ) -> None: ... -global___DeleteOwnerResponse = DeleteOwnerResponse +global___FollowSubscriber = FollowSubscriber -class RetireProducerRequest(google.protobuf.message.Message): +class FollowedRecord(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor - STREAM_FIELD_NUMBER: builtins.int - NAMED_FIELD_NUMBER: builtins.int - ACTIVITY_FIELD_NUMBER: builtins.int - @property - def stream(self) -> global___StreamAddress: ... + SOURCE_FIELD_NUMBER: builtins.int + RECORD_FIELD_NUMBER: builtins.int + LINK_STATE_FIELD_NUMBER: builtins.int + source: builtins.int + """The source the item belongs to. Zero is the root. A SKIPPED link names the source that holds + the link. + """ @property - def named(self) -> global___NamedProducer: ... + def record(self) -> global___ReadRecord: ... @property - def activity(self) -> global___ActivityProducer: ... + def link_state(self) -> global___LinkState: ... def __init__( self, *, - stream: global___StreamAddress | None = ..., - named: global___NamedProducer | None = ..., - activity: global___ActivityProducer | None = ..., + source: builtins.int = ..., + record: global___ReadRecord | None = ..., + link_state: global___LinkState | None = ..., ) -> None: ... def HasField( self, field_name: typing_extensions.Literal[ - "activity", - b"activity", - "named", - b"named", - "producer", - b"producer", - "stream", - b"stream", + "item", b"item", "link_state", b"link_state", "record", b"record" ], ) -> builtins.bool: ... def ClearField( self, field_name: typing_extensions.Literal[ - "activity", - b"activity", - "named", - b"named", - "producer", - b"producer", - "stream", - b"stream", + "item", + b"item", + "link_state", + b"link_state", + "record", + b"record", + "source", + b"source", ], ) -> None: ... def WhichOneof( - self, oneof_group: typing_extensions.Literal["producer", b"producer"] - ) -> typing_extensions.Literal["named", "activity"] | None: ... + self, oneof_group: typing_extensions.Literal["item", b"item"] + ) -> typing_extensions.Literal["record", "link_state"] | None: ... -global___RetireProducerRequest = RetireProducerRequest +global___FollowedRecord = FollowedRecord -class RetireProducerResponse(google.protobuf.message.Message): - """A producer attempt with no dedupe state left, or a stream that holds nothing, answers the same.""" +class LinkState(google.protobuf.message.Message): + """What happened to a link, as the follower saw it.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor - def __init__( - self, - ) -> None: ... + class _Kind: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType -global___RetireProducerResponse = RetireProducerResponse + class _KindEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ + LinkState._Kind.ValueType + ], + builtins.type, + ): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + KIND_UNSPECIFIED: LinkState._Kind.ValueType # 0 + KIND_OPENED: LinkState._Kind.ValueType # 1 + """The linked stream is open, and its records follow.""" + KIND_DONE: LinkState._Kind.ValueType # 2 + """The linked stream's segment ended: the stream closed, or it reached the JOIN's `until`. A + closed stream gives its close outcome. + """ + KIND_UNAVAILABLE: LinkState._Kind.ValueType # 3 + """The linked stream can't be read. `error` says why. The follow goes on without it.""" + KIND_SKIPPED: LinkState._Kind.ValueType # 4 + """The link was not followed. `reason` says why.""" + + class Kind(_Kind, metaclass=_KindEnumTypeWrapper): ... + KIND_UNSPECIFIED: LinkState.Kind.ValueType # 0 + KIND_OPENED: LinkState.Kind.ValueType # 1 + """The linked stream is open, and its records follow.""" + KIND_DONE: LinkState.Kind.ValueType # 2 + """The linked stream's segment ended: the stream closed, or it reached the JOIN's `until`. A + closed stream gives its close outcome. + """ + KIND_UNAVAILABLE: LinkState.Kind.ValueType # 3 + """The linked stream can't be read. `error` says why. The follow goes on without it.""" + KIND_SKIPPED: LinkState.Kind.ValueType # 4 + """The link was not followed. `reason` says why.""" + + KIND_FIELD_NUMBER: builtins.int + LINK_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + REASON_FIELD_NUMBER: builtins.int + kind: global___LinkState.Kind.ValueType + @property + def link(self) -> temporalio.bridge.proto.streams.v1.message_pb2.StreamLink: ... + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: ... + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: ... + @property + def error(self) -> global___StreamFailure: + """Set on UNAVAILABLE.""" + reason: builtins.str + """Set on SKIPPED: `depth`, `limit`, `cycle`, `open` or `endpoint`.""" + def __init__( + self, + *, + kind: global___LinkState.Kind.ValueType = ..., + link: temporalio.bridge.proto.streams.v1.message_pb2.StreamLink | None = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + error: global___StreamFailure | None = ..., + reason: builtins.str = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "error", + b"error", + "link", + b"link", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "error", + b"error", + "kind", + b"kind", + "link", + b"link", + "reason", + b"reason", + ], + ) -> None: ... + +global___LinkState = LinkState + +class FollowSource(google.protobuf.message.Message): + """A source that an answer's records name.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NUMBER_FIELD_NUMBER: builtins.int + PARENT_FIELD_NUMBER: builtins.int + DEPTH_FIELD_NUMBER: builtins.int + STREAM_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + number: builtins.int + parent: builtins.int + """The source that holds the source's link. Zero for the root and its links.""" + depth: builtins.int + @property + def stream(self) -> global___StreamAddress: ... + name: builtins.str + """The link's name. Empty for the root.""" + def __init__( + self, + *, + number: builtins.int = ..., + parent: builtins.int = ..., + depth: builtins.int = ..., + stream: global___StreamAddress | None = ..., + name: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream", b"stream"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "depth", + b"depth", + "name", + b"name", + "number", + b"number", + "parent", + b"parent", + "stream", + b"stream", + ], + ) -> None: ... + +global___FollowSource = FollowSource + +class SourceRange(google.protobuf.message.Message): + """One read of one source, as `ReadRange` reads it again.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SOURCE_FIELD_NUMBER: builtins.int + CHAIN_FIRST_RUN_ID_FIELD_NUMBER: builtins.int + START_CURSOR_FIELD_NUMBER: builtins.int + CURSOR_FIELD_NUMBER: builtins.int + STORED_RECORDS_FIELD_NUMBER: builtins.int + STATE_IN_FIELD_NUMBER: builtins.int + RECORDS_DIGEST_FIELD_NUMBER: builtins.int + START_FROM_END_FIELD_NUMBER: builtins.int + DONE_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + source: builtins.int + chain_first_run_id: builtins.str + start_cursor: builtins.str + cursor: builtins.str + stored_records: builtins.int + state_in: builtins.bytes + records_digest: builtins.bytes + start_from_end: builtins.bool + done: builtins.bool + """The read ended the source's stream, with this outcome.""" + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: ... + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: ... + @property + def error(self) -> global___StreamFailure: + """The read failed, so the source is unavailable. No other field but `source` is set.""" + def __init__( + self, + *, + source: builtins.int = ..., + chain_first_run_id: builtins.str = ..., + start_cursor: builtins.str = ..., + cursor: builtins.str = ..., + stored_records: builtins.int = ..., + state_in: builtins.bytes = ..., + records_digest: builtins.bytes = ..., + start_from_end: builtins.bool = ..., + done: builtins.bool = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + error: global___StreamFailure | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "error", + b"error", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "chain_first_run_id", + b"chain_first_run_id", + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "cursor", + b"cursor", + "done", + b"done", + "error", + b"error", + "records_digest", + b"records_digest", + "source", + b"source", + "start_cursor", + b"start_cursor", + "start_from_end", + b"start_from_end", + "state_in", + b"state_in", + "stored_records", + b"stored_records", + ], + ) -> None: ... + +global___SourceRange = SourceRange + +class SourceWake(google.protobuf.message.Message): + """An idle source that a Workflow follower waits on.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SOURCE_FIELD_NUMBER: builtins.int + SUBSCRIPTION_ID_FIELD_NUMBER: builtins.int + WAKE_AFTER_FIELD_NUMBER: builtins.int + source: builtins.int + subscription_id: builtins.str + wake_after: builtins.int + """The source's notification counter. A wake above it names a new record.""" + def __init__( + self, + *, + source: builtins.int = ..., + subscription_id: builtins.str = ..., + wake_after: builtins.int = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "source", + b"source", + "subscription_id", + b"subscription_id", + "wake_after", + b"wake_after", + ], + ) -> None: ... + +global___SourceWake = SourceWake + +class FollowResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RECORDS_FIELD_NUMBER: builtins.int + STATE_FIELD_NUMBER: builtins.int + DONE_FIELD_NUMBER: builtins.int + SOURCES_FIELD_NUMBER: builtins.int + RANGES_FIELD_NUMBER: builtins.int + WAKES_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + FOLLOW_DIGEST_FIELD_NUMBER: builtins.int + @property + def records( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___FollowedRecord + ]: ... + state: builtins.bytes + """The composite position: every source's cursor and read state, and the gates. Opaque to lang.""" + done: builtins.bool + """The root ended and every linked segment ended. No later call returns a record.""" + @property + def sources( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___FollowSource + ]: + """Each source that `records` names.""" + @property + def ranges( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___SourceRange + ]: + """Each read of this answer, in read order.""" + @property + def wakes( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___SourceWake + ]: + """On an empty answer of a Workflow follower, each idle source.""" + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: + """The root's close outcome, with `done`.""" + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: ... + follow_digest: builtins.bytes + """SHA-256 over the order of `records`, as `FollowRange` checks it.""" + def __init__( + self, + *, + records: collections.abc.Iterable[global___FollowedRecord] | None = ..., + state: builtins.bytes = ..., + done: builtins.bool = ..., + sources: collections.abc.Iterable[global___FollowSource] | None = ..., + ranges: collections.abc.Iterable[global___SourceRange] | None = ..., + wakes: collections.abc.Iterable[global___SourceWake] | None = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + follow_digest: builtins.bytes = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "close_failure", b"close_failure", "close_result", b"close_result" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "done", + b"done", + "follow_digest", + b"follow_digest", + "ranges", + b"ranges", + "records", + b"records", + "sources", + b"sources", + "state", + b"state", + "wakes", + b"wakes", + ], + ) -> None: ... + +global___FollowResponse = FollowResponse + +class FollowRangeRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STREAM_FIELD_NUMBER: builtins.int + STATE_IN_FIELD_NUMBER: builtins.int + RANGES_FIELD_NUMBER: builtins.int + FOLLOW_DIGEST_FIELD_NUMBER: builtins.int + FLOOR_HOLDER_FIELD_NUMBER: builtins.int + MAX_DEPTH_FIELD_NUMBER: builtins.int + MAX_OPEN_FIELD_NUMBER: builtins.int + @property + def stream(self) -> global___StreamAddress: + """The root stream, as the Follow named it.""" + state_in: builtins.bytes + """The `state` the Follow started from.""" + @property + def ranges( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___SourceRange + ]: + """The Follow's `ranges`.""" + follow_digest: builtins.bytes + """The Follow's `follow_digest`.""" + floor_holder: builtins.str + """As in `FollowRequest`.""" + max_depth: builtins.int + """The first Follow's limits, for a `state_in` that is empty. A non-empty `state_in` keeps them.""" + max_open: builtins.int + def __init__( + self, + *, + stream: global___StreamAddress | None = ..., + state_in: builtins.bytes = ..., + ranges: collections.abc.Iterable[global___SourceRange] | None = ..., + follow_digest: builtins.bytes = ..., + floor_holder: builtins.str = ..., + max_depth: builtins.int = ..., + max_open: builtins.int = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream", b"stream"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "floor_holder", + b"floor_holder", + "follow_digest", + b"follow_digest", + "max_depth", + b"max_depth", + "max_open", + b"max_open", + "ranges", + b"ranges", + "state_in", + b"state_in", + "stream", + b"stream", + ], + ) -> None: ... + +global___FollowRangeRequest = FollowRangeRequest + +class LatestRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STREAM_FIELD_NUMBER: builtins.int + @property + def stream(self) -> global___StreamAddress: ... + def __init__( + self, + *, + stream: global___StreamAddress | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream", b"stream"] + ) -> builtins.bool: ... + def ClearField( + self, field_name: typing_extensions.Literal["stream", b"stream"] + ) -> None: ... + +global___LatestRequest = LatestRequest + +class LatestResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CURSOR_FIELD_NUMBER: builtins.int + cursor: builtins.str + """Empty when the stream holds no record.""" + def __init__( + self, + *, + cursor: builtins.str = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["cursor", b"cursor"] + ) -> None: ... + +global___LatestResponse = LatestResponse + +class CloseRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STREAM_FIELD_NUMBER: builtins.int + RESULT_FIELD_NUMBER: builtins.int + FAILURE_FIELD_NUMBER: builtins.int + CLOSED_BY_FIELD_NUMBER: builtins.int + @property + def stream(self) -> global___StreamAddress: ... + @property + def result(self) -> temporalio.api.common.v1.message_pb2.Payload: + """What every callback attached to the stream's notifier completes with, after lang's payload + codec. The stream's notifier on the server closes once the store has. When set, a notifier + that doesn't take the close fails the call, and the service keeps trying in the background too. + Unset, the callbacks complete with a `binary/null` result, and the notifier close is retried + in the background. + """ + @property + def failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """Closes the stream with a failure instead of `result`, after lang's failure converter and + codec. The callbacks complete as failed, or as canceled for a failure with canceled info. + A close carries a result or a failure, never both. + """ + closed_by: builtins.str + """Who closed the stream, opaque to the service. At most 256 bytes. The store keeps it with the + first close's outcome, and readers and refused appends see it, so a writer can tell a close by + its own run. + """ + def __init__( + self, + *, + stream: global___StreamAddress | None = ..., + result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + closed_by: builtins.str = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "failure", b"failure", "result", b"result", "stream", b"stream" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "closed_by", + b"closed_by", + "failure", + b"failure", + "result", + b"result", + "stream", + b"stream", + ], + ) -> None: ... + +global___CloseRequest = CloseRequest + +class StoredClose(google.protobuf.message.Message): + """The first close of a topic, as a store keeps it. A later close of the topic keeps this one. A + chain close, when the owner ended, keeps none. With `result` and `failure`, at most 1.5 MiB. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RESULT_FIELD_NUMBER: builtins.int + FAILURE_FIELD_NUMBER: builtins.int + CLOSED_BY_FIELD_NUMBER: builtins.int + @property + def result(self) -> temporalio.api.common.v1.message_pb2.Payload: ... + @property + def failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: ... + closed_by: builtins.str + def __init__( + self, + *, + result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + closed_by: builtins.str = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "failure", b"failure", "result", b"result" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "closed_by", b"closed_by", "failure", b"failure", "result", b"result" + ], + ) -> None: ... + +global___StoredClose = StoredClose + +class CloseResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___CloseResponse = CloseResponse + +class FlushNotificationsRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___FlushNotificationsRequest = FlushNotificationsRequest + +class FlushNotificationsResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___FlushNotificationsResponse = FlushNotificationsResponse + +class SubscribeRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STREAM_FIELD_NUMBER: builtins.int + WORKFLOW_ID_FIELD_NUMBER: builtins.int + RUN_ID_FIELD_NUMBER: builtins.int + SUBSCRIPTION_ID_FIELD_NUMBER: builtins.int + GENERATION_FIELD_NUMBER: builtins.int + @property + def stream(self) -> global___StreamAddress: + """The stream to read. The reader's Workflow is in the stream's namespace.""" + workflow_id: builtins.str + """The reader's Workflow and run.""" + run_id: builtins.str + subscription_id: builtins.str + """Names the reader in its run. Lang derives it from the reader's call number, so replay gives + the same one. At most 256 bytes. + """ + generation: builtins.int + """Counts the times the reader subscribed again after a wake with `resubscribe`. Each value is a + new attach, since the server answers a repeat of a dropped attach as done. Lang counts it from + the wakes, so replay gives the same one. + """ + def __init__( + self, + *, + stream: global___StreamAddress | None = ..., + workflow_id: builtins.str = ..., + run_id: builtins.str = ..., + subscription_id: builtins.str = ..., + generation: builtins.int = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream", b"stream"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "generation", + b"generation", + "run_id", + b"run_id", + "stream", + b"stream", + "subscription_id", + b"subscription_id", + "workflow_id", + b"workflow_id", + ], + ) -> None: ... + +global___SubscribeRequest = SubscribeRequest + +class SubscribeResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CHAIN_FIRST_RUN_ID_FIELD_NUMBER: builtins.int + ATTACHED_FIELD_NUMBER: builtins.int + NEWEST_COUNTER_FIELD_NUMBER: builtins.int + chain_first_run_id: builtins.str + """The first run of the stream's run chain, which keys the notifier the reader attached to.""" + attached: builtins.bool + """Whether this call sent the attach. False when this process attached the reader before.""" + newest_counter: builtins.int + """The notification counter of the stream's newest record, read after the attach landed, zero + for an empty stream. A record that landed before the notifier existed woke no one, so a + reader whose last read stopped below this counter reads once more before it sleeps. + """ + def __init__( + self, + *, + chain_first_run_id: builtins.str = ..., + attached: builtins.bool = ..., + newest_counter: builtins.int = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "attached", + b"attached", + "chain_first_run_id", + b"chain_first_run_id", + "newest_counter", + b"newest_counter", + ], + ) -> None: ... + +global___SubscribeResponse = SubscribeResponse + +class UnsubscribeRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STREAM_FIELD_NUMBER: builtins.int + RUN_ID_FIELD_NUMBER: builtins.int + SUBSCRIPTION_ID_FIELD_NUMBER: builtins.int + GENERATION_FIELD_NUMBER: builtins.int + @property + def stream(self) -> global___StreamAddress: + """The stream, the reader's run, the subscription and its generation, as the last Subscribe + named them. + """ + run_id: builtins.str + subscription_id: builtins.str + generation: builtins.int + def __init__( + self, + *, + stream: global___StreamAddress | None = ..., + run_id: builtins.str = ..., + subscription_id: builtins.str = ..., + generation: builtins.int = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream", b"stream"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "generation", + b"generation", + "run_id", + b"run_id", + "stream", + b"stream", + "subscription_id", + b"subscription_id", + ], + ) -> None: ... + +global___UnsubscribeRequest = UnsubscribeRequest + +class UnsubscribeResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___UnsubscribeResponse = UnsubscribeResponse + +class WaitForNotificationRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STREAM_FIELD_NUMBER: builtins.int + AFTER_COUNTER_FIELD_NUMBER: builtins.int + @property + def stream(self) -> global___StreamAddress: + """The stream the reader reads.""" + after_counter: builtins.int + """The `wake_after` of the read that came back empty.""" + def __init__( + self, + *, + stream: global___StreamAddress | None = ..., + after_counter: builtins.int = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream", b"stream"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "after_counter", b"after_counter", "stream", b"stream" + ], + ) -> None: ... + +global___WaitForNotificationRequest = WaitForNotificationRequest + +class WaitForNotificationResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COUNTER_FIELD_NUMBER: builtins.int + POSITION_FIELD_NUMBER: builtins.int + TIMED_OUT_FIELD_NUMBER: builtins.int + CLOSED_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int + counter: builtins.int + """The highest counter the notifier has seen.""" + position: builtins.str + """The position that came with `counter`.""" + timed_out: builtins.bool + """The wait reached its limit with no counter above `after_counter` and no close.""" + closed: builtins.bool + """The stream closed. The reader reads to its end.""" + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: + """The result the stream closed with, when it gave one.""" + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """The failure the stream closed with, when it closed with one.""" + def __init__( + self, + *, + counter: builtins.int = ..., + position: builtins.str = ..., + timed_out: builtins.bool = ..., + closed: builtins.bool = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "close_failure", b"close_failure", "close_result", b"close_result" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "closed", + b"closed", + "counter", + b"counter", + "position", + b"position", + "timed_out", + b"timed_out", + ], + ) -> None: ... + +global___WaitForNotificationResponse = WaitForNotificationResponse + +class DeleteOwnerRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + NAMESPACE_FIELD_NUMBER: builtins.int + OWNER_KIND_FIELD_NUMBER: builtins.int + WORKFLOW_ID_FIELD_NUMBER: builtins.int + ACTIVITY_ID_FIELD_NUMBER: builtins.int + namespace: builtins.str + owner_kind: global___StreamOwnerKind.ValueType + workflow_id: builtins.str + """The Workflow whose streams go, for a Workflow owner. The streams of every Activity that the + Workflow scheduled go too. + """ + activity_id: builtins.str + """The standalone Activity whose streams go, across all its runs, for an Activity owner.""" + def __init__( + self, + *, + namespace: builtins.str = ..., + owner_kind: global___StreamOwnerKind.ValueType = ..., + workflow_id: builtins.str = ..., + activity_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "activity_id", + b"activity_id", + "namespace", + b"namespace", + "owner_kind", + b"owner_kind", + "workflow_id", + b"workflow_id", + ], + ) -> None: ... + +global___DeleteOwnerRequest = DeleteOwnerRequest + +class DeleteOwnerResponse(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + DELETED_FIELD_NUMBER: builtins.int + deleted: builtins.int + """How much the delete removed, counted the store's own way, such as Redis keys. Only zero + means the same on every store: nothing was left to delete. + """ + def __init__( + self, + *, + deleted: builtins.int = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["deleted", b"deleted"] + ) -> None: ... + +global___DeleteOwnerResponse = DeleteOwnerResponse + +class RetireProducerRequest(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + STREAM_FIELD_NUMBER: builtins.int + NAMED_FIELD_NUMBER: builtins.int + ACTIVITY_FIELD_NUMBER: builtins.int + @property + def stream(self) -> global___StreamAddress: ... + @property + def named(self) -> global___NamedProducer: ... + @property + def activity(self) -> global___ActivityProducer: ... + def __init__( + self, + *, + stream: global___StreamAddress | None = ..., + named: global___NamedProducer | None = ..., + activity: global___ActivityProducer | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "activity", + b"activity", + "named", + b"named", + "producer", + b"producer", + "stream", + b"stream", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "activity", + b"activity", + "named", + b"named", + "producer", + b"producer", + "stream", + b"stream", + ], + ) -> None: ... + def WhichOneof( + self, oneof_group: typing_extensions.Literal["producer", b"producer"] + ) -> typing_extensions.Literal["named", "activity"] | None: ... + +global___RetireProducerRequest = RetireProducerRequest + +class RetireProducerResponse(google.protobuf.message.Message): + """A producer attempt with no dedupe state left, or a stream that holds nothing, answers the same.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___RetireProducerResponse = RetireProducerResponse class DescribeStoreRequest(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1108,21 +2442,34 @@ class StreamFailure(google.protobuf.message.Message): KIND_FIELD_NUMBER: builtins.int MESSAGE_FIELD_NUMBER: builtins.int CURSOR_FIELD_NUMBER: builtins.int + CLOSED_BY_FIELD_NUMBER: builtins.int kind: global___StreamFailureKind.ValueType message: builtins.str cursor: builtins.str """The cursor of the record that failed, for RECORD.""" + closed_by: builtins.str + """For CLOSED, the `closed_by` of the topic's first close. Empty when the owner's chain closed + or the close named no one. + """ def __init__( self, *, kind: global___StreamFailureKind.ValueType = ..., message: builtins.str = ..., cursor: builtins.str = ..., + closed_by: builtins.str = ..., ) -> None: ... def ClearField( self, field_name: typing_extensions.Literal[ - "cursor", b"cursor", "kind", b"kind", "message", b"message" + "closed_by", + b"closed_by", + "cursor", + b"cursor", + "kind", + b"kind", + "message", + b"message", ], ) -> None: ... @@ -1289,6 +2636,7 @@ class StoreReadResponse(google.protobuf.message.Message): RECORDS_FIELD_NUMBER: builtins.int CLOSED_FIELD_NUMBER: builtins.int + CLOSE_FIELD_NUMBER: builtins.int @property def records( self, @@ -1297,16 +2645,23 @@ class StoreReadResponse(google.protobuf.message.Message): ]: ... closed: builtins.bool """The chain or this topic is marked closed.""" + @property + def close(self) -> global___StoredClose: + """The topic's first close, when it was closed as a topic. Unset for a chain close.""" def __init__( self, *, records: collections.abc.Iterable[global___StoredRecord] | None = ..., closed: builtins.bool = ..., + close: global___StoredClose | None = ..., ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["close", b"close"] + ) -> builtins.bool: ... def ClearField( self, field_name: typing_extensions.Literal[ - "closed", b"closed", "records", b"records" + "close", b"close", "closed", b"closed", "records", b"records" ], ) -> None: ... @@ -1356,7 +2711,7 @@ global___StoreLatestResponse = StoreLatestResponse class PublishWorkflowTaskRequest(google.protobuf.message.Message): """One live activation's stream output and the facts of its run, sent before lang completes the activation. Lang sends none while it replays, since the records are in the store already. It - sends one for an activation with records or with a terminal command. + sends one for an activation with records, a terminal command or a resolved owner Activity. """ DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1375,6 +2730,7 @@ class PublishWorkflowTaskRequest(google.protobuf.message.Message): COMPLETED_STARTED_EVENT_IDS_FIELD_NUMBER: builtins.int RECORDS_FIELD_NUMBER: builtins.int TERMINAL_COMMAND_FIELD_NUMBER: builtins.int + RESOLVED_OWNER_ACTIVITIES_FIELD_NUMBER: builtins.int namespace: builtins.str worker_id: builtins.str """Names the lang Worker. The service keys each run's state by the Worker and the run, so two @@ -1408,6 +2764,17 @@ class PublishWorkflowTaskRequest(google.protobuf.message.Message): """In publish order across topics.""" terminal_command: global___WorkflowTerminalCommand.ValueType """The first terminal command of the completion, which is the one Core keeps.""" + @property + def resolved_owner_activities( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ResolvedOwnerActivity + ]: + """The Activities of this activation's `ResolveActivity` jobs that own their streams, in job + order. Lang marks an owner Activity with the `__temporal_stream_owner` header when it + schedules it. The service closes each one's streams after the records land, before it + answers. A close that fails is logged and dropped. + """ def __init__( self, *, @@ -1426,6 +2793,10 @@ class PublishWorkflowTaskRequest(google.protobuf.message.Message): | None = ..., records: collections.abc.Iterable[global___OutputRecord] | None = ..., terminal_command: global___WorkflowTerminalCommand.ValueType = ..., + resolved_owner_activities: collections.abc.Iterable[ + global___ResolvedOwnerActivity + ] + | None = ..., ) -> None: ... def ClearField( self, @@ -1444,6 +2815,8 @@ class PublishWorkflowTaskRequest(google.protobuf.message.Message): b"namespace", "records", b"records", + "resolved_owner_activities", + b"resolved_owner_activities", "run_id", b"run_id", "task_queue", @@ -1463,6 +2836,42 @@ class PublishWorkflowTaskRequest(google.protobuf.message.Message): global___PublishWorkflowTaskRequest = PublishWorkflowTaskRequest +class ResolvedOwnerActivity(google.protobuf.message.Message): + """An Activity that owns its streams, as its scheduling Workflow saw it end.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ACTIVITY_ID_FIELD_NUMBER: builtins.int + OUTCOME_FIELD_NUMBER: builtins.int + FAILURE_FIELD_NUMBER: builtins.int + activity_id: builtins.str + """The Activity's id in the run that scheduled it.""" + outcome: global___ResolvedActivityOutcome.ValueType + @property + def failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """On FAILED and CANCELLED, the failure as the server gave it, before lang decodes it. The + store keeps it as the close's outcome, and readers decode it with their own codec. Unset + closes with a failure that says the Activity gave none. + """ + def __init__( + self, + *, + activity_id: builtins.str = ..., + outcome: global___ResolvedActivityOutcome.ValueType = ..., + failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["failure", b"failure"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "activity_id", b"activity_id", "failure", b"failure", "outcome", b"outcome" + ], + ) -> None: ... + +global___ResolvedOwnerActivity = ResolvedOwnerActivity + class OutputRecord(google.protobuf.message.Message): """One record a Workflow published.""" @@ -1472,17 +2881,21 @@ class OutputRecord(google.protobuf.message.Message): KIND_FIELD_NUMBER: builtins.int BODY_FIELD_NUMBER: builtins.int CONTENT_HASH_FIELD_NUMBER: builtins.int + LINK_FIELD_NUMBER: builtins.int topic: builtins.str kind: temporalio.bridge.proto.streams.v1.message_pb2.StreamRecordKind.ValueType - """DATA or FINISH.""" + """DATA, FINISH or LINK.""" @property def body(self) -> temporalio.api.common.v1.message_pb2.Payload: - """The value on DATA, after lang's payload codec. Absent on FINISH.""" + """The value on DATA, after lang's payload codec. Absent on FINISH. Optional on LINK.""" content_hash: builtins.bytes - """The SHA-256 of the body as the payload converter made it, before the codec. Set on DATA. The - service builds each topic's batch digest from these, so a repeat of a batch matches whatever - the codec made of the bodies. + """The SHA-256 of the body as the payload converter made it, before the codec. Set with a body. + The service builds each topic's batch digest from these, so a repeat of a batch matches + whatever the codec made of the bodies. """ + @property + def link(self) -> temporalio.bridge.proto.streams.v1.message_pb2.StreamLink: + """Set on LINK only.""" def __init__( self, *, @@ -1490,9 +2903,10 @@ class OutputRecord(google.protobuf.message.Message): kind: temporalio.bridge.proto.streams.v1.message_pb2.StreamRecordKind.ValueType = ..., body: temporalio.api.common.v1.message_pb2.Payload | None = ..., content_hash: builtins.bytes = ..., + link: temporalio.bridge.proto.streams.v1.message_pb2.StreamLink | None = ..., ) -> None: ... def HasField( - self, field_name: typing_extensions.Literal["body", b"body"] + self, field_name: typing_extensions.Literal["body", b"body", "link", b"link"] ) -> builtins.bool: ... def ClearField( self, @@ -1503,6 +2917,8 @@ class OutputRecord(google.protobuf.message.Message): b"content_hash", "kind", b"kind", + "link", + b"link", "topic", b"topic", ], diff --git a/temporalio/bridge/proto/streams/v1/__init__.py b/temporalio/bridge/proto/streams/v1/__init__.py index fc6311caae..be41c11ddd 100644 --- a/temporalio/bridge/proto/streams/v1/__init__.py +++ b/temporalio/bridge/proto/streams/v1/__init__.py @@ -1,6 +1,7 @@ -from .message_pb2 import StreamRecord, StreamRecordKind +from .message_pb2 import StreamLink, StreamRecord, StreamRecordKind __all__ = [ + "StreamLink", "StreamRecord", "StreamRecordKind", ] diff --git a/temporalio/bridge/proto/streams/v1/message_pb2.py b/temporalio/bridge/proto/streams/v1/message_pb2.py index 747a2452ed..c8f8ff2939 100644 --- a/temporalio/bridge/proto/streams/v1/message_pb2.py +++ b/temporalio/bridge/proto/streams/v1/message_pb2.py @@ -18,9 +18,15 @@ from temporalio.api.common.v1 import ( message_pb2 as temporal_dot_api_dot_common_dot_v1_dot_message__pb2, ) +from temporalio.api.failure.v1 import ( + message_pb2 as temporal_dot_api_dot_failure_dot_v1_dot_message__pb2, +) +from temporalio.api.stream.v1 import ( + message_pb2 as temporal_dot_api_dot_stream_dot_v1_dot_message__pb2, +) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n%temporal/sdk/streams/v1/message.proto\x12\x17temporal.sdk.streams.v1\x1a$temporal/api/common/v1/message.proto"\x8e\x03\n\x0cStreamRecord\x12-\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x45\n\x08metadata\x18\x02 \x03(\x0b\x32\x33.temporal.sdk.streams.v1.StreamRecord.MetadataEntry\x12\r\n\x05topic\x18\x03 \x01(\t\x12\x37\n\x04kind\x18\x04 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12\x13\n\x0bproducer_id\x18\x05 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x06 \x01(\x03\x12\x10\n\x08sequence\x18\x07 \x01(\x03\x12\x1d\n\x15task_started_event_id\x18\t \x01(\x03\x12\x17\n\x0f\x63ompleted_tasks\x18\n \x03(\x03\x1aP\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01*\xba\x01\n\x10StreamRecordKind\x12"\n\x1eSTREAM_RECORD_KIND_UNSPECIFIED\x10\x00\x12\x1b\n\x17STREAM_RECORD_KIND_DATA\x10\x01\x12\x1d\n\x19STREAM_RECORD_KIND_FINISH\x10\x02\x12\x1c\n\x18STREAM_RECORD_KIND_CLOSE\x10\x05\x12\x1c\n\x18STREAM_RECORD_KIND_TOPIC\x10\x06"\x04\x08\x03\x10\x03"\x04\x08\x04\x10\x04\x42\x32\xea\x02/Temporalio::Internal::Bridge::Api::StreamRecordb\x06proto3' + b'\n%temporal/sdk/streams/v1/message.proto\x12\x17temporal.sdk.streams.v1\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/stream/v1/message.proto"\xb1\x04\n\x0cStreamRecord\x12-\n\x04\x62ody\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x45\n\x08metadata\x18\x02 \x03(\x0b\x32\x33.temporal.sdk.streams.v1.StreamRecord.MetadataEntry\x12\r\n\x05topic\x18\x03 \x01(\t\x12\x37\n\x04kind\x18\x04 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12\x13\n\x0bproducer_id\x18\x05 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x06 \x01(\x03\x12\x10\n\x08sequence\x18\x07 \x01(\x03\x12\x31\n\x04link\x18\x08 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink\x12\x1d\n\x15task_started_event_id\x18\t \x01(\x03\x12\x17\n\x0f\x63ompleted_tasks\x18\n \x03(\x03\x12\x35\n\x0c\x63lose_result\x18\x0b \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x0c \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x1aP\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01"\x90\x02\n\nStreamLink\x12\x38\n\x05\x65vent\x18\x01 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamLink.Event\x12\x37\n\x06stream\x18\x02 \x01(\x0b\x32\'.temporal.api.stream.v1.StreamReference\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\r\n\x05\x61\x66ter\x18\x04 \x01(\t\x12\r\n\x05until\x18\x05 \x01(\t\x12\x11\n\tnamespace\x18\x06 \x01(\t\x12\x10\n\x08\x65ndpoint\x18\x07 \x01(\t">\n\x05\x45vent\x12\x15\n\x11\x45VENT_UNSPECIFIED\x10\x00\x12\x0e\n\nEVENT_OPEN\x10\x01\x12\x0e\n\nEVENT_JOIN\x10\x02*\xd1\x01\n\x10StreamRecordKind\x12"\n\x1eSTREAM_RECORD_KIND_UNSPECIFIED\x10\x00\x12\x1b\n\x17STREAM_RECORD_KIND_DATA\x10\x01\x12\x1d\n\x19STREAM_RECORD_KIND_FINISH\x10\x02\x12\x1b\n\x17STREAM_RECORD_KIND_LINK\x10\x04\x12\x1c\n\x18STREAM_RECORD_KIND_CLOSE\x10\x05\x12\x1c\n\x18STREAM_RECORD_KIND_TOPIC\x10\x06"\x04\x08\x03\x10\x03\x42\x32\xea\x02/Temporalio::Internal::Bridge::Api::StreamRecordb\x06proto3' ) _STREAMRECORDKIND = DESCRIPTOR.enum_types_by_name["StreamRecordKind"] @@ -28,12 +34,15 @@ STREAM_RECORD_KIND_UNSPECIFIED = 0 STREAM_RECORD_KIND_DATA = 1 STREAM_RECORD_KIND_FINISH = 2 +STREAM_RECORD_KIND_LINK = 4 STREAM_RECORD_KIND_CLOSE = 5 STREAM_RECORD_KIND_TOPIC = 6 _STREAMRECORD = DESCRIPTOR.message_types_by_name["StreamRecord"] _STREAMRECORD_METADATAENTRY = _STREAMRECORD.nested_types_by_name["MetadataEntry"] +_STREAMLINK = DESCRIPTOR.message_types_by_name["StreamLink"] +_STREAMLINK_EVENT = _STREAMLINK.enum_types_by_name["Event"] StreamRecord = _reflection.GeneratedProtocolMessageType( "StreamRecord", (_message.Message,), @@ -55,6 +64,17 @@ _sym_db.RegisterMessage(StreamRecord) _sym_db.RegisterMessage(StreamRecord.MetadataEntry) +StreamLink = _reflection.GeneratedProtocolMessageType( + "StreamLink", + (_message.Message,), + { + "DESCRIPTOR": _STREAMLINK, + "__module__": "temporal.sdk.streams.v1.message_pb2", + # @@protoc_insertion_point(class_scope:temporal.sdk.streams.v1.StreamLink) + }, +) +_sym_db.RegisterMessage(StreamLink) + if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = ( @@ -62,10 +82,14 @@ ) _STREAMRECORD_METADATAENTRY._options = None _STREAMRECORD_METADATAENTRY._serialized_options = b"8\001" - _STREAMRECORDKIND._serialized_start = 506 - _STREAMRECORDKIND._serialized_end = 692 - _STREAMRECORD._serialized_start = 105 - _STREAMRECORD._serialized_end = 503 - _STREAMRECORD_METADATAENTRY._serialized_start = 423 - _STREAMRECORD_METADATAENTRY._serialized_end = 503 + _STREAMRECORDKIND._serialized_start = 1021 + _STREAMRECORDKIND._serialized_end = 1230 + _STREAMRECORD._serialized_start = 182 + _STREAMRECORD._serialized_end = 743 + _STREAMRECORD_METADATAENTRY._serialized_start = 663 + _STREAMRECORD_METADATAENTRY._serialized_end = 743 + _STREAMLINK._serialized_start = 746 + _STREAMLINK._serialized_end = 1018 + _STREAMLINK_EVENT._serialized_start = 956 + _STREAMLINK_EVENT._serialized_end = 1018 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/streams/v1/message_pb2.pyi b/temporalio/bridge/proto/streams/v1/message_pb2.pyi index 626d65eada..95e956b58c 100644 --- a/temporalio/bridge/proto/streams/v1/message_pb2.pyi +++ b/temporalio/bridge/proto/streams/v1/message_pb2.pyi @@ -14,6 +14,8 @@ import google.protobuf.internal.enum_type_wrapper import google.protobuf.message import temporalio.api.common.v1.message_pb2 +import temporalio.api.failure.v1.message_pb2 +import temporalio.api.stream.v1.message_pb2 if sys.version_info >= (3, 10): import typing as typing_extensions @@ -41,6 +43,10 @@ class _StreamRecordKindEnumTypeWrapper( """The producer named by `producer_id` writes nothing more on `topic`. Says nothing about that producer's outcome and does not end the stream. """ + STREAM_RECORD_KIND_LINK: _StreamRecordKind.ValueType # 4 + """A reference to another stream. `link` carries it. `body` may carry a + value, after the payload codec. + """ STREAM_RECORD_KIND_CLOSE: _StreamRecordKind.ValueType # 5 """Ends `topic` for every reader, or every topic of the chain when `topic` is empty. Readers drop every record after the first one. On a store @@ -62,6 +68,10 @@ STREAM_RECORD_KIND_FINISH: StreamRecordKind.ValueType # 2 """The producer named by `producer_id` writes nothing more on `topic`. Says nothing about that producer's outcome and does not end the stream. """ +STREAM_RECORD_KIND_LINK: StreamRecordKind.ValueType # 4 +"""A reference to another stream. `link` carries it. `body` may carry a +value, after the payload codec. +""" STREAM_RECORD_KIND_CLOSE: StreamRecordKind.ValueType # 5 """Ends `topic` for every reader, or every topic of the chain when `topic` is empty. Readers drop every record after the first one. On a store @@ -113,8 +123,11 @@ class StreamRecord(google.protobuf.message.Message): PRODUCER_ID_FIELD_NUMBER: builtins.int ATTEMPT_FIELD_NUMBER: builtins.int SEQUENCE_FIELD_NUMBER: builtins.int + LINK_FIELD_NUMBER: builtins.int TASK_STARTED_EVENT_ID_FIELD_NUMBER: builtins.int COMPLETED_TASKS_FIELD_NUMBER: builtins.int + CLOSE_RESULT_FIELD_NUMBER: builtins.int + CLOSE_FAILURE_FIELD_NUMBER: builtins.int @property def body(self) -> temporalio.api.common.v1.message_pb2.Payload: """The value the producer published. Lang runs it through the payload @@ -142,6 +155,11 @@ class StreamRecord(google.protobuf.message.Message): """The producer's position within its attempt, starting at one, or zero when it does not number its records. """ + @property + def link(self) -> global___StreamLink: + """Set on LINK only. It stays out of the payload codec, as ids in History + do, so the stream service can follow it. + """ task_started_event_id: builtins.int """Set by a Workflow run's own producer only: the WorkflowTaskStarted event id of the task attempt that wrote the record. @@ -156,6 +174,15 @@ class StreamRecord(google.protobuf.message.Message): A trailing zero means the list goes back to the run's start. A reader learns from it whether an earlier attempt it delivered completed. """ + @property + def close_result(self) -> temporalio.api.common.v1.message_pb2.Payload: + """On a CLOSE, the result the stream closed with, after the payload codec. + `producer_id` names who closed it. A CLOSE with no result and no + failure closed with no outcome. + """ + @property + def close_failure(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """On a CLOSE, the failure the stream closed with.""" def __init__( self, *, @@ -169,11 +196,24 @@ class StreamRecord(google.protobuf.message.Message): producer_id: builtins.str = ..., attempt: builtins.int = ..., sequence: builtins.int = ..., + link: global___StreamLink | None = ..., task_started_event_id: builtins.int = ..., completed_tasks: collections.abc.Iterable[builtins.int] | None = ..., + close_result: temporalio.api.common.v1.message_pb2.Payload | None = ..., + close_failure: temporalio.api.failure.v1.message_pb2.Failure | None = ..., ) -> None: ... def HasField( - self, field_name: typing_extensions.Literal["body", b"body"] + self, + field_name: typing_extensions.Literal[ + "body", + b"body", + "close_failure", + b"close_failure", + "close_result", + b"close_result", + "link", + b"link", + ], ) -> builtins.bool: ... def ClearField( self, @@ -182,10 +222,16 @@ class StreamRecord(google.protobuf.message.Message): b"attempt", "body", b"body", + "close_failure", + b"close_failure", + "close_result", + b"close_result", "completed_tasks", b"completed_tasks", "kind", b"kind", + "link", + b"link", "metadata", b"metadata", "producer_id", @@ -200,3 +246,103 @@ class StreamRecord(google.protobuf.message.Message): ) -> None: ... global___StreamRecord = StreamRecord + +class StreamLink(google.protobuf.message.Message): + """A reference from one stream to another, for followers.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class _Event: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + + class _EventEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ + StreamLink._Event.ValueType + ], + builtins.type, + ): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + EVENT_UNSPECIFIED: StreamLink._Event.ValueType # 0 + EVENT_OPEN: StreamLink._Event.ValueType # 1 + """A follower starts reading `stream` strictly after `after`.""" + EVENT_JOIN: StreamLink._Event.ValueType # 2 + """The writer waited for the link named `name` up to `until`, or to + its end when `until` is empty. + """ + + class Event(_Event, metaclass=_EventEnumTypeWrapper): ... + EVENT_UNSPECIFIED: StreamLink.Event.ValueType # 0 + EVENT_OPEN: StreamLink.Event.ValueType # 1 + """A follower starts reading `stream` strictly after `after`.""" + EVENT_JOIN: StreamLink.Event.ValueType # 2 + """The writer waited for the link named `name` up to `until`, or to + its end when `until` is empty. + """ + + EVENT_FIELD_NUMBER: builtins.int + STREAM_FIELD_NUMBER: builtins.int + NAME_FIELD_NUMBER: builtins.int + AFTER_FIELD_NUMBER: builtins.int + UNTIL_FIELD_NUMBER: builtins.int + NAMESPACE_FIELD_NUMBER: builtins.int + ENDPOINT_FIELD_NUMBER: builtins.int + event: global___StreamLink.Event.ValueType + @property + def stream(self) -> temporalio.api.stream.v1.message_pb2.StreamReference: + """The linked stream. Required on OPEN. Empty on JOIN.""" + name: builtins.str + """Names the link within its producer. A JOIN matches the OPEN with the + same name. At most 256 bytes. Required. + """ + after: builtins.str + """A cursor of the linked stream. Empty starts at the oldest retained + record. + """ + until: builtins.str + """On JOIN, a cursor of the linked stream where the segment ends. Empty is + the stream's end. + """ + namespace: builtins.str + """The linked stream's namespace. Empty is the namespace of the stream + that holds the link. + """ + endpoint: builtins.str + """The Nexus endpoint that serves the linked stream. Empty is the endpoint + that served the stream that holds the link. + """ + def __init__( + self, + *, + event: global___StreamLink.Event.ValueType = ..., + stream: temporalio.api.stream.v1.message_pb2.StreamReference | None = ..., + name: builtins.str = ..., + after: builtins.str = ..., + until: builtins.str = ..., + namespace: builtins.str = ..., + endpoint: builtins.str = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["stream", b"stream"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "after", + b"after", + "endpoint", + b"endpoint", + "event", + b"event", + "name", + b"name", + "namespace", + b"namespace", + "stream", + b"stream", + "until", + b"until", + ], + ) -> None: ... + +global___StreamLink = StreamLink diff --git a/temporalio/bridge/proto/workflow_activation/__init__.py b/temporalio/bridge/proto/workflow_activation/__init__.py index 59a52ac7bc..b2e270990f 100644 --- a/temporalio/bridge/proto/workflow_activation/__init__.py +++ b/temporalio/bridge/proto/workflow_activation/__init__.py @@ -20,6 +20,7 @@ UpdateRandomSeed, WorkflowActivation, WorkflowActivationJob, + WorkflowTaskAttachments, WorkflowTaskHistoryInfo, ) @@ -45,5 +46,6 @@ "UpdateRandomSeed", "WorkflowActivation", "WorkflowActivationJob", + "WorkflowTaskAttachments", "WorkflowTaskHistoryInfo", ] diff --git a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py index c244b28b35..4ebbc5cd6a 100644 --- a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py +++ b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py @@ -14,6 +14,7 @@ _sym_db = _symbol_database.Default() +from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 @@ -47,7 +48,7 @@ ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n?temporal/sdk/core/workflow_activation/workflow_activation.proto\x12\x1b\x63oresdk.workflow_activation\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/update/v1/message.proto\x1a$temporal/api/common/v1/message.proto\x1a(temporal/api/enums/v1/failed_cause.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a\x37temporal/sdk/core/activity_result/activity_result.proto\x1a\x35temporal/sdk/core/child_workflow/child_workflow.proto\x1a%temporal/sdk/core/common/common.proto\x1a#temporal/sdk/core/nexus/nexus.proto"\xef\x04\n\x12WorkflowActivation\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0cis_replaying\x18\x03 \x01(\x08\x12\x16\n\x0ehistory_length\x18\x04 \x01(\r\x12@\n\x04jobs\x18\x05 \x03(\x0b\x32\x32.coresdk.workflow_activation.WorkflowActivationJob\x12 \n\x18\x61vailable_internal_flags\x18\x06 \x03(\r\x12\x1a\n\x12history_size_bytes\x18\x07 \x01(\x04\x12!\n\x19\x63ontinue_as_new_suggested\x18\x08 \x01(\x08\x12T\n#deployment_version_for_current_task\x18\t \x01(\x0b\x32\'.coresdk.common.WorkerDeploymentVersion\x12\x18\n\x10last_sdk_version\x18\n \x01(\t\x12Z\n\x1fsuggest_continue_as_new_reasons\x18\x0b \x03(\x0e\x32\x31.temporal.api.enums.v1.SuggestContinueAsNewReason\x12\x30\n(target_worker_deployment_version_changed\x18\x0c \x01(\x08\x12K\n\rworkflow_task\x18\r \x01(\x0b\x32\x34.coresdk.workflow_activation.WorkflowTaskHistoryInfo"q\n\x17WorkflowTaskHistoryInfo\x12\x18\n\x10started_event_id\x18\x01 \x01(\x03\x12\x17\n\x0f\x66\x61iled_attempts\x18\x02 \x01(\r\x12#\n\x1b\x63ompleted_started_event_ids\x18\x03 \x03(\x03"\xe0\n\n\x15WorkflowActivationJob\x12N\n\x13initialize_workflow\x18\x01 \x01(\x0b\x32/.coresdk.workflow_activation.InitializeWorkflowH\x00\x12<\n\nfire_timer\x18\x02 \x01(\x0b\x32&.coresdk.workflow_activation.FireTimerH\x00\x12K\n\x12update_random_seed\x18\x04 \x01(\x0b\x32-.coresdk.workflow_activation.UpdateRandomSeedH\x00\x12\x44\n\x0equery_workflow\x18\x05 \x01(\x0b\x32*.coresdk.workflow_activation.QueryWorkflowH\x00\x12\x46\n\x0f\x63\x61ncel_workflow\x18\x06 \x01(\x0b\x32+.coresdk.workflow_activation.CancelWorkflowH\x00\x12\x46\n\x0fsignal_workflow\x18\x07 \x01(\x0b\x32+.coresdk.workflow_activation.SignalWorkflowH\x00\x12H\n\x10resolve_activity\x18\x08 \x01(\x0b\x32,.coresdk.workflow_activation.ResolveActivityH\x00\x12G\n\x10notify_has_patch\x18\t \x01(\x0b\x32+.coresdk.workflow_activation.NotifyHasPatchH\x00\x12q\n&resolve_child_workflow_execution_start\x18\n \x01(\x0b\x32?.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartH\x00\x12\x66\n resolve_child_workflow_execution\x18\x0b \x01(\x0b\x32:.coresdk.workflow_activation.ResolveChildWorkflowExecutionH\x00\x12\x66\n resolve_signal_external_workflow\x18\x0c \x01(\x0b\x32:.coresdk.workflow_activation.ResolveSignalExternalWorkflowH\x00\x12u\n(resolve_request_cancel_external_workflow\x18\r \x01(\x0b\x32\x41.coresdk.workflow_activation.ResolveRequestCancelExternalWorkflowH\x00\x12:\n\tdo_update\x18\x0e \x01(\x0b\x32%.coresdk.workflow_activation.DoUpdateH\x00\x12`\n\x1dresolve_nexus_operation_start\x18\x0f \x01(\x0b\x32\x37.coresdk.workflow_activation.ResolveNexusOperationStartH\x00\x12U\n\x17resolve_nexus_operation\x18\x10 \x01(\x0b\x32\x32.coresdk.workflow_activation.ResolveNexusOperationH\x00\x12I\n\x11remove_from_cache\x18\x32 \x01(\x0b\x32,.coresdk.workflow_activation.RemoveFromCacheH\x00\x42\t\n\x07variant"\xfc\n\n\x12InitializeWorkflow\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x17\n\x0frandomness_seed\x18\x04 \x01(\x04\x12M\n\x07headers\x18\x05 \x03(\x0b\x32<.coresdk.workflow_activation.InitializeWorkflow.HeadersEntry\x12\x10\n\x08identity\x18\x06 \x01(\t\x12I\n\x14parent_workflow_info\x18\x07 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecution\x12=\n\x1aworkflow_execution_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\'\n\x1f\x63ontinued_from_execution_run_id\x18\x0b \x01(\t\x12J\n\x13\x63ontinued_initiator\x18\x0c \x01(\x0e\x32-.temporal.api.enums.v1.ContinueAsNewInitiator\x12;\n\x11\x63ontinued_failure\x18\r \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12@\n\x16last_completion_result\x18\x0e \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x1e\n\x16\x66irst_execution_run_id\x18\x0f \x01(\t\x12\x39\n\x0cretry_policy\x18\x10 \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x0f\n\x07\x61ttempt\x18\x11 \x01(\x05\x12\x15\n\rcron_schedule\x18\x12 \x01(\t\x12\x46\n"workflow_execution_expiration_time\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n"cron_schedule_to_schedule_interval\x18\x14 \x01(\x0b\x32\x19.google.protobuf.Duration\x12*\n\x04memo\x18\x15 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\x12\x43\n\x11search_attributes\x18\x16 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12.\n\nstart_time\x18\x17 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12@\n\rroot_workflow\x18\x18 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x32\n\x08priority\x18\x19 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12!\n\x19original_execution_run_id\x18\x1a \x01(\t\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01"\x18\n\tFireTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r"m\n\x0fResolveActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12;\n\x06result\x18\x02 \x01(\x0b\x32+.coresdk.activity_result.ActivityResolution\x12\x10\n\x08is_local\x18\x03 \x01(\x08"\xd1\x02\n"ResolveChildWorkflowExecutionStart\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12[\n\tsucceeded\x18\x02 \x01(\x0b\x32\x46.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccessH\x00\x12X\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32\x46.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailureH\x00\x12]\n\tcancelled\x18\x04 \x01(\x0b\x32H.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelledH\x00\x42\x08\n\x06status";\n)ResolveChildWorkflowExecutionStartSuccess\x12\x0e\n\x06run_id\x18\x01 \x01(\t"\xa6\x01\n)ResolveChildWorkflowExecutionStartFailure\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x15\n\rworkflow_type\x18\x02 \x01(\t\x12M\n\x05\x63\x61use\x18\x03 \x01(\x0e\x32>.coresdk.child_workflow.StartChildWorkflowExecutionFailedCause"`\n+ResolveChildWorkflowExecutionStartCancelled\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"i\n\x1dResolveChildWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12;\n\x06result\x18\x02 \x01(\x0b\x32+.coresdk.child_workflow.ChildWorkflowResult"+\n\x10UpdateRandomSeed\x12\x17\n\x0frandomness_seed\x18\x01 \x01(\x04"\x84\x02\n\rQueryWorkflow\x12\x10\n\x08query_id\x18\x01 \x01(\t\x12\x12\n\nquery_type\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12H\n\x07headers\x18\x05 \x03(\x0b\x32\x37.coresdk.workflow_activation.QueryWorkflow.HeadersEntry\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01" \n\x0e\x43\x61ncelWorkflow\x12\x0e\n\x06reason\x18\x01 \x01(\t"\xa1\x02\n\x0eSignalWorkflow\x12\x13\n\x0bsignal_name\x18\x01 \x01(\t\x12.\n\x05input\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x10\n\x08identity\x18\x03 \x01(\t\x12I\n\x07headers\x18\x05 \x03(\x0b\x32\x38.coresdk.workflow_activation.SignalWorkflow.HeadersEntry\x12\x1c\n\x14originating_event_id\x18\x06 \x01(\x03\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01""\n\x0eNotifyHasPatch\x12\x10\n\x08patch_id\x18\x01 \x01(\t"\xb1\x01\n\x1dResolveSignalExternalWorkflow\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12P\n\x05\x63\x61use\x18\x03 \x01(\x0e\x32\x41.temporal.api.enums.v1.SignalExternalWorkflowExecutionFailedCause"\xb8\x01\n$ResolveRequestCancelExternalWorkflow\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12P\n\x05\x63\x61use\x18\x03 \x01(\x0e\x32\x41.temporal.api.enums.v1.CancelExternalWorkflowExecutionFailedCause"\xcb\x02\n\x08\x44oUpdate\x12\n\n\x02id\x18\x01 \x01(\t\x12\x1c\n\x14protocol_instance_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12.\n\x05input\x18\x04 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x43\n\x07headers\x18\x05 \x03(\x0b\x32\x32.coresdk.workflow_activation.DoUpdate.HeadersEntry\x12*\n\x04meta\x18\x06 \x01(\x0b\x32\x1c.temporal.api.update.v1.Meta\x12\x15\n\rrun_validator\x18\x07 \x01(\x08\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01"\x9a\x01\n\x1aResolveNexusOperationStart\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x19\n\x0foperation_token\x18\x02 \x01(\tH\x00\x12\x16\n\x0cstarted_sync\x18\x03 \x01(\x08H\x00\x12\x32\n\x06\x66\x61iled\x18\x04 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x42\x08\n\x06status"Y\n\x15ResolveNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x33\n\x06result\x18\x02 \x01(\x0b\x32#.coresdk.nexus.NexusOperationResult"\xe0\x02\n\x0fRemoveFromCache\x12\x0f\n\x07message\x18\x01 \x01(\t\x12K\n\x06reason\x18\x02 \x01(\x0e\x32;.coresdk.workflow_activation.RemoveFromCache.EvictionReason"\xee\x01\n\x0e\x45victionReason\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCACHE_FULL\x10\x01\x12\x0e\n\nCACHE_MISS\x10\x02\x12\x12\n\x0eNONDETERMINISM\x10\x03\x12\r\n\tLANG_FAIL\x10\x04\x12\x12\n\x0eLANG_REQUESTED\x10\x05\x12\x12\n\x0eTASK_NOT_FOUND\x10\x06\x12\x15\n\x11UNHANDLED_COMMAND\x10\x07\x12\t\n\x05\x46\x41TAL\x10\x08\x12\x1f\n\x1bPAGINATION_OR_HISTORY_FETCH\x10\t\x12\x1d\n\x19WORKFLOW_EXECUTION_ENDING\x10\nB8\xea\x02\x35Temporalio::Internal::Bridge::Api::WorkflowActivationb\x06proto3' + b'\n?temporal/sdk/core/workflow_activation/workflow_activation.proto\x12\x1b\x63oresdk.workflow_activation\x1a\x19google/protobuf/any.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/update/v1/message.proto\x1a$temporal/api/common/v1/message.proto\x1a(temporal/api/enums/v1/failed_cause.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a\x37temporal/sdk/core/activity_result/activity_result.proto\x1a\x35temporal/sdk/core/child_workflow/child_workflow.proto\x1a%temporal/sdk/core/common/common.proto\x1a#temporal/sdk/core/nexus/nexus.proto"\xef\x04\n\x12WorkflowActivation\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0cis_replaying\x18\x03 \x01(\x08\x12\x16\n\x0ehistory_length\x18\x04 \x01(\r\x12@\n\x04jobs\x18\x05 \x03(\x0b\x32\x32.coresdk.workflow_activation.WorkflowActivationJob\x12 \n\x18\x61vailable_internal_flags\x18\x06 \x03(\r\x12\x1a\n\x12history_size_bytes\x18\x07 \x01(\x04\x12!\n\x19\x63ontinue_as_new_suggested\x18\x08 \x01(\x08\x12T\n#deployment_version_for_current_task\x18\t \x01(\x0b\x32\'.coresdk.common.WorkerDeploymentVersion\x12\x18\n\x10last_sdk_version\x18\n \x01(\t\x12Z\n\x1fsuggest_continue_as_new_reasons\x18\x0b \x03(\x0e\x32\x31.temporal.api.enums.v1.SuggestContinueAsNewReason\x12\x30\n(target_worker_deployment_version_changed\x18\x0c \x01(\x08\x12K\n\rworkflow_task\x18\r \x01(\x0b\x32\x34.coresdk.workflow_activation.WorkflowTaskHistoryInfo"q\n\x17WorkflowTaskHistoryInfo\x12\x18\n\x10started_event_id\x18\x01 \x01(\x03\x12\x17\n\x0f\x66\x61iled_attempts\x18\x02 \x01(\r\x12#\n\x1b\x63ompleted_started_event_ids\x18\x03 \x03(\x03"\xbb\x0b\n\x15WorkflowActivationJob\x12N\n\x13initialize_workflow\x18\x01 \x01(\x0b\x32/.coresdk.workflow_activation.InitializeWorkflowH\x00\x12<\n\nfire_timer\x18\x02 \x01(\x0b\x32&.coresdk.workflow_activation.FireTimerH\x00\x12K\n\x12update_random_seed\x18\x04 \x01(\x0b\x32-.coresdk.workflow_activation.UpdateRandomSeedH\x00\x12\x44\n\x0equery_workflow\x18\x05 \x01(\x0b\x32*.coresdk.workflow_activation.QueryWorkflowH\x00\x12\x46\n\x0f\x63\x61ncel_workflow\x18\x06 \x01(\x0b\x32+.coresdk.workflow_activation.CancelWorkflowH\x00\x12\x46\n\x0fsignal_workflow\x18\x07 \x01(\x0b\x32+.coresdk.workflow_activation.SignalWorkflowH\x00\x12H\n\x10resolve_activity\x18\x08 \x01(\x0b\x32,.coresdk.workflow_activation.ResolveActivityH\x00\x12G\n\x10notify_has_patch\x18\t \x01(\x0b\x32+.coresdk.workflow_activation.NotifyHasPatchH\x00\x12q\n&resolve_child_workflow_execution_start\x18\n \x01(\x0b\x32?.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartH\x00\x12\x66\n resolve_child_workflow_execution\x18\x0b \x01(\x0b\x32:.coresdk.workflow_activation.ResolveChildWorkflowExecutionH\x00\x12\x66\n resolve_signal_external_workflow\x18\x0c \x01(\x0b\x32:.coresdk.workflow_activation.ResolveSignalExternalWorkflowH\x00\x12u\n(resolve_request_cancel_external_workflow\x18\r \x01(\x0b\x32\x41.coresdk.workflow_activation.ResolveRequestCancelExternalWorkflowH\x00\x12:\n\tdo_update\x18\x0e \x01(\x0b\x32%.coresdk.workflow_activation.DoUpdateH\x00\x12`\n\x1dresolve_nexus_operation_start\x18\x0f \x01(\x0b\x32\x37.coresdk.workflow_activation.ResolveNexusOperationStartH\x00\x12U\n\x17resolve_nexus_operation\x18\x10 \x01(\x0b\x32\x32.coresdk.workflow_activation.ResolveNexusOperationH\x00\x12Y\n\x19workflow_task_attachments\x18\x11 \x01(\x0b\x32\x34.coresdk.workflow_activation.WorkflowTaskAttachmentsH\x00\x12I\n\x11remove_from_cache\x18\x32 \x01(\x0b\x32,.coresdk.workflow_activation.RemoveFromCacheH\x00\x42\t\n\x07variant"\xfc\n\n\x12InitializeWorkflow\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x17\n\x0frandomness_seed\x18\x04 \x01(\x04\x12M\n\x07headers\x18\x05 \x03(\x0b\x32<.coresdk.workflow_activation.InitializeWorkflow.HeadersEntry\x12\x10\n\x08identity\x18\x06 \x01(\t\x12I\n\x14parent_workflow_info\x18\x07 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecution\x12=\n\x1aworkflow_execution_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\x14workflow_run_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\'\n\x1f\x63ontinued_from_execution_run_id\x18\x0b \x01(\t\x12J\n\x13\x63ontinued_initiator\x18\x0c \x01(\x0e\x32-.temporal.api.enums.v1.ContinueAsNewInitiator\x12;\n\x11\x63ontinued_failure\x18\r \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12@\n\x16last_completion_result\x18\x0e \x01(\x0b\x32 .temporal.api.common.v1.Payloads\x12\x1e\n\x16\x66irst_execution_run_id\x18\x0f \x01(\t\x12\x39\n\x0cretry_policy\x18\x10 \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x0f\n\x07\x61ttempt\x18\x11 \x01(\x05\x12\x15\n\rcron_schedule\x18\x12 \x01(\t\x12\x46\n"workflow_execution_expiration_time\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x45\n"cron_schedule_to_schedule_interval\x18\x14 \x01(\x0b\x32\x19.google.protobuf.Duration\x12*\n\x04memo\x18\x15 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo\x12\x43\n\x11search_attributes\x18\x16 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12.\n\nstart_time\x18\x17 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12@\n\rroot_workflow\x18\x18 \x01(\x0b\x32).temporal.api.common.v1.WorkflowExecution\x12\x32\n\x08priority\x18\x19 \x01(\x0b\x32 .temporal.api.common.v1.Priority\x12!\n\x19original_execution_run_id\x18\x1a \x01(\t\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01"\x18\n\tFireTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r"m\n\x0fResolveActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12;\n\x06result\x18\x02 \x01(\x0b\x32+.coresdk.activity_result.ActivityResolution\x12\x10\n\x08is_local\x18\x03 \x01(\x08"\xd1\x02\n"ResolveChildWorkflowExecutionStart\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12[\n\tsucceeded\x18\x02 \x01(\x0b\x32\x46.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartSuccessH\x00\x12X\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32\x46.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartFailureH\x00\x12]\n\tcancelled\x18\x04 \x01(\x0b\x32H.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartCancelledH\x00\x42\x08\n\x06status";\n)ResolveChildWorkflowExecutionStartSuccess\x12\x0e\n\x06run_id\x18\x01 \x01(\t"\xa6\x01\n)ResolveChildWorkflowExecutionStartFailure\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x15\n\rworkflow_type\x18\x02 \x01(\t\x12M\n\x05\x63\x61use\x18\x03 \x01(\x0e\x32>.coresdk.child_workflow.StartChildWorkflowExecutionFailedCause"`\n+ResolveChildWorkflowExecutionStartCancelled\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"i\n\x1dResolveChildWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12;\n\x06result\x18\x02 \x01(\x0b\x32+.coresdk.child_workflow.ChildWorkflowResult"+\n\x10UpdateRandomSeed\x12\x17\n\x0frandomness_seed\x18\x01 \x01(\x04"\x84\x02\n\rQueryWorkflow\x12\x10\n\x08query_id\x18\x01 \x01(\t\x12\x12\n\nquery_type\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12H\n\x07headers\x18\x05 \x03(\x0b\x32\x37.coresdk.workflow_activation.QueryWorkflow.HeadersEntry\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01" \n\x0e\x43\x61ncelWorkflow\x12\x0e\n\x06reason\x18\x01 \x01(\t"\xa1\x02\n\x0eSignalWorkflow\x12\x13\n\x0bsignal_name\x18\x01 \x01(\t\x12.\n\x05input\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x10\n\x08identity\x18\x03 \x01(\t\x12I\n\x07headers\x18\x05 \x03(\x0b\x32\x38.coresdk.workflow_activation.SignalWorkflow.HeadersEntry\x12\x1c\n\x14originating_event_id\x18\x06 \x01(\x03\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01""\n\x0eNotifyHasPatch\x12\x10\n\x08patch_id\x18\x01 \x01(\t"\xb1\x01\n\x1dResolveSignalExternalWorkflow\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12P\n\x05\x63\x61use\x18\x03 \x01(\x0e\x32\x41.temporal.api.enums.v1.SignalExternalWorkflowExecutionFailedCause"\xb8\x01\n$ResolveRequestCancelExternalWorkflow\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12P\n\x05\x63\x61use\x18\x03 \x01(\x0e\x32\x41.temporal.api.enums.v1.CancelExternalWorkflowExecutionFailedCause"\xcb\x02\n\x08\x44oUpdate\x12\n\n\x02id\x18\x01 \x01(\t\x12\x1c\n\x14protocol_instance_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12.\n\x05input\x18\x04 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x43\n\x07headers\x18\x05 \x03(\x0b\x32\x32.coresdk.workflow_activation.DoUpdate.HeadersEntry\x12*\n\x04meta\x18\x06 \x01(\x0b\x32\x1c.temporal.api.update.v1.Meta\x12\x15\n\rrun_validator\x18\x07 \x01(\x08\x1aO\n\x0cHeadersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12.\n\x05value\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload:\x02\x38\x01"\x9a\x01\n\x1aResolveNexusOperationStart\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x19\n\x0foperation_token\x18\x02 \x01(\tH\x00\x12\x16\n\x0cstarted_sync\x18\x03 \x01(\x08H\x00\x12\x32\n\x06\x66\x61iled\x18\x04 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x42\x08\n\x06status"Y\n\x15ResolveNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x33\n\x06result\x18\x02 \x01(\x0b\x32#.coresdk.nexus.NexusOperationResult"D\n\x17WorkflowTaskAttachments\x12)\n\x0b\x61ttachments\x18\x01 \x03(\x0b\x32\x14.google.protobuf.Any"\xe0\x02\n\x0fRemoveFromCache\x12\x0f\n\x07message\x18\x01 \x01(\t\x12K\n\x06reason\x18\x02 \x01(\x0e\x32;.coresdk.workflow_activation.RemoveFromCache.EvictionReason"\xee\x01\n\x0e\x45victionReason\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0e\n\nCACHE_FULL\x10\x01\x12\x0e\n\nCACHE_MISS\x10\x02\x12\x12\n\x0eNONDETERMINISM\x10\x03\x12\r\n\tLANG_FAIL\x10\x04\x12\x12\n\x0eLANG_REQUESTED\x10\x05\x12\x12\n\x0eTASK_NOT_FOUND\x10\x06\x12\x15\n\x11UNHANDLED_COMMAND\x10\x07\x12\t\n\x05\x46\x41TAL\x10\x08\x12\x1f\n\x1bPAGINATION_OR_HISTORY_FETCH\x10\t\x12\x1d\n\x19WORKFLOW_EXECUTION_ENDING\x10\nB8\xea\x02\x35Temporalio::Internal::Bridge::Api::WorkflowActivationb\x06proto3' ) @@ -94,6 +95,7 @@ "ResolveNexusOperationStart" ] _RESOLVENEXUSOPERATION = DESCRIPTOR.message_types_by_name["ResolveNexusOperation"] +_WORKFLOWTASKATTACHMENTS = DESCRIPTOR.message_types_by_name["WorkflowTaskAttachments"] _REMOVEFROMCACHE = DESCRIPTOR.message_types_by_name["RemoveFromCache"] _REMOVEFROMCACHE_EVICTIONREASON = _REMOVEFROMCACHE.enum_types_by_name["EvictionReason"] WorkflowActivation = _reflection.GeneratedProtocolMessageType( @@ -367,6 +369,17 @@ ) _sym_db.RegisterMessage(ResolveNexusOperation) +WorkflowTaskAttachments = _reflection.GeneratedProtocolMessageType( + "WorkflowTaskAttachments", + (_message.Message,), + { + "DESCRIPTOR": _WORKFLOWTASKATTACHMENTS, + "__module__": "temporal.sdk.core.workflow_activation.workflow_activation_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_activation.WorkflowTaskAttachments) + }, +) +_sym_db.RegisterMessage(WorkflowTaskAttachments) + RemoveFromCache = _reflection.GeneratedProtocolMessageType( "RemoveFromCache", (_message.Message,), @@ -391,58 +404,60 @@ _SIGNALWORKFLOW_HEADERSENTRY._serialized_options = b"8\001" _DOUPDATE_HEADERSENTRY._options = None _DOUPDATE_HEADERSENTRY._serialized_options = b"8\001" - _WORKFLOWACTIVATION._serialized_start = 574 - _WORKFLOWACTIVATION._serialized_end = 1197 - _WORKFLOWTASKHISTORYINFO._serialized_start = 1199 - _WORKFLOWTASKHISTORYINFO._serialized_end = 1312 - _WORKFLOWACTIVATIONJOB._serialized_start = 1315 - _WORKFLOWACTIVATIONJOB._serialized_end = 2691 - _INITIALIZEWORKFLOW._serialized_start = 2694 - _INITIALIZEWORKFLOW._serialized_end = 4098 - _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_start = 4019 - _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_end = 4098 - _FIRETIMER._serialized_start = 4100 - _FIRETIMER._serialized_end = 4124 - _RESOLVEACTIVITY._serialized_start = 4126 - _RESOLVEACTIVITY._serialized_end = 4235 - _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_start = 4238 - _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_end = 4575 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_start = 4577 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_end = 4636 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_start = 4639 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_end = 4805 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_start = 4807 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_end = 4903 - _RESOLVECHILDWORKFLOWEXECUTION._serialized_start = 4905 - _RESOLVECHILDWORKFLOWEXECUTION._serialized_end = 5010 - _UPDATERANDOMSEED._serialized_start = 5012 - _UPDATERANDOMSEED._serialized_end = 5055 - _QUERYWORKFLOW._serialized_start = 5058 - _QUERYWORKFLOW._serialized_end = 5318 - _QUERYWORKFLOW_HEADERSENTRY._serialized_start = 4019 - _QUERYWORKFLOW_HEADERSENTRY._serialized_end = 4098 - _CANCELWORKFLOW._serialized_start = 5320 - _CANCELWORKFLOW._serialized_end = 5352 - _SIGNALWORKFLOW._serialized_start = 5355 - _SIGNALWORKFLOW._serialized_end = 5644 - _SIGNALWORKFLOW_HEADERSENTRY._serialized_start = 4019 - _SIGNALWORKFLOW_HEADERSENTRY._serialized_end = 4098 - _NOTIFYHASPATCH._serialized_start = 5646 - _NOTIFYHASPATCH._serialized_end = 5680 - _RESOLVESIGNALEXTERNALWORKFLOW._serialized_start = 5683 - _RESOLVESIGNALEXTERNALWORKFLOW._serialized_end = 5860 - _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_start = 5863 - _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_end = 6047 - _DOUPDATE._serialized_start = 6050 - _DOUPDATE._serialized_end = 6381 - _DOUPDATE_HEADERSENTRY._serialized_start = 4019 - _DOUPDATE_HEADERSENTRY._serialized_end = 4098 - _RESOLVENEXUSOPERATIONSTART._serialized_start = 6384 - _RESOLVENEXUSOPERATIONSTART._serialized_end = 6538 - _RESOLVENEXUSOPERATION._serialized_start = 6540 - _RESOLVENEXUSOPERATION._serialized_end = 6629 - _REMOVEFROMCACHE._serialized_start = 6632 - _REMOVEFROMCACHE._serialized_end = 6984 - _REMOVEFROMCACHE_EVICTIONREASON._serialized_start = 6746 - _REMOVEFROMCACHE_EVICTIONREASON._serialized_end = 6984 + _WORKFLOWACTIVATION._serialized_start = 601 + _WORKFLOWACTIVATION._serialized_end = 1224 + _WORKFLOWTASKHISTORYINFO._serialized_start = 1226 + _WORKFLOWTASKHISTORYINFO._serialized_end = 1339 + _WORKFLOWACTIVATIONJOB._serialized_start = 1342 + _WORKFLOWACTIVATIONJOB._serialized_end = 2809 + _INITIALIZEWORKFLOW._serialized_start = 2812 + _INITIALIZEWORKFLOW._serialized_end = 4216 + _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_start = 4137 + _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_end = 4216 + _FIRETIMER._serialized_start = 4218 + _FIRETIMER._serialized_end = 4242 + _RESOLVEACTIVITY._serialized_start = 4244 + _RESOLVEACTIVITY._serialized_end = 4353 + _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_start = 4356 + _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_end = 4693 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_start = 4695 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_end = 4754 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_start = 4757 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_end = 4923 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_start = 4925 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_end = 5021 + _RESOLVECHILDWORKFLOWEXECUTION._serialized_start = 5023 + _RESOLVECHILDWORKFLOWEXECUTION._serialized_end = 5128 + _UPDATERANDOMSEED._serialized_start = 5130 + _UPDATERANDOMSEED._serialized_end = 5173 + _QUERYWORKFLOW._serialized_start = 5176 + _QUERYWORKFLOW._serialized_end = 5436 + _QUERYWORKFLOW_HEADERSENTRY._serialized_start = 4137 + _QUERYWORKFLOW_HEADERSENTRY._serialized_end = 4216 + _CANCELWORKFLOW._serialized_start = 5438 + _CANCELWORKFLOW._serialized_end = 5470 + _SIGNALWORKFLOW._serialized_start = 5473 + _SIGNALWORKFLOW._serialized_end = 5762 + _SIGNALWORKFLOW_HEADERSENTRY._serialized_start = 4137 + _SIGNALWORKFLOW_HEADERSENTRY._serialized_end = 4216 + _NOTIFYHASPATCH._serialized_start = 5764 + _NOTIFYHASPATCH._serialized_end = 5798 + _RESOLVESIGNALEXTERNALWORKFLOW._serialized_start = 5801 + _RESOLVESIGNALEXTERNALWORKFLOW._serialized_end = 5978 + _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_start = 5981 + _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_end = 6165 + _DOUPDATE._serialized_start = 6168 + _DOUPDATE._serialized_end = 6499 + _DOUPDATE_HEADERSENTRY._serialized_start = 4137 + _DOUPDATE_HEADERSENTRY._serialized_end = 4216 + _RESOLVENEXUSOPERATIONSTART._serialized_start = 6502 + _RESOLVENEXUSOPERATIONSTART._serialized_end = 6656 + _RESOLVENEXUSOPERATION._serialized_start = 6658 + _RESOLVENEXUSOPERATION._serialized_end = 6747 + _WORKFLOWTASKATTACHMENTS._serialized_start = 6749 + _WORKFLOWTASKATTACHMENTS._serialized_end = 6817 + _REMOVEFROMCACHE._serialized_start = 6820 + _REMOVEFROMCACHE._serialized_end = 7172 + _REMOVEFROMCACHE_EVICTIONREASON._serialized_start = 6934 + _REMOVEFROMCACHE_EVICTIONREASON._serialized_end = 7172 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.pyi b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.pyi index 689ef37baf..c56aeab5b9 100644 --- a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.pyi +++ b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.pyi @@ -11,6 +11,7 @@ import collections.abc import sys import typing +import google.protobuf.any_pb2 import google.protobuf.descriptor import google.protobuf.duration_pb2 import google.protobuf.internal.containers @@ -297,6 +298,7 @@ class WorkflowActivationJob(google.protobuf.message.Message): DO_UPDATE_FIELD_NUMBER: builtins.int RESOLVE_NEXUS_OPERATION_START_FIELD_NUMBER: builtins.int RESOLVE_NEXUS_OPERATION_FIELD_NUMBER: builtins.int + WORKFLOW_TASK_ATTACHMENTS_FIELD_NUMBER: builtins.int REMOVE_FROM_CACHE_FIELD_NUMBER: builtins.int @property def initialize_workflow(self) -> global___InitializeWorkflow: @@ -357,6 +359,9 @@ class WorkflowActivationJob(google.protobuf.message.Message): def resolve_nexus_operation(self) -> global___ResolveNexusOperation: """A nexus operation resolved.""" @property + def workflow_task_attachments(self) -> global___WorkflowTaskAttachments: + """Attachments from the scheduled events of this Workflow Task.""" + @property def remove_from_cache(self) -> global___RemoveFromCache: """Remove the workflow identified by the [WorkflowActivation] containing this job from the cache after performing the activation. It is guaranteed that this will be the only job @@ -384,6 +389,7 @@ class WorkflowActivationJob(google.protobuf.message.Message): do_update: global___DoUpdate | None = ..., resolve_nexus_operation_start: global___ResolveNexusOperationStart | None = ..., resolve_nexus_operation: global___ResolveNexusOperation | None = ..., + workflow_task_attachments: global___WorkflowTaskAttachments | None = ..., remove_from_cache: global___RemoveFromCache | None = ..., ) -> None: ... def HasField( @@ -423,6 +429,8 @@ class WorkflowActivationJob(google.protobuf.message.Message): b"update_random_seed", "variant", b"variant", + "workflow_task_attachments", + b"workflow_task_attachments", ], ) -> builtins.bool: ... def ClearField( @@ -462,6 +470,8 @@ class WorkflowActivationJob(google.protobuf.message.Message): b"update_random_seed", "variant", b"variant", + "workflow_task_attachments", + b"workflow_task_attachments", ], ) -> None: ... def WhichOneof( @@ -483,6 +493,7 @@ class WorkflowActivationJob(google.protobuf.message.Message): "do_update", "resolve_nexus_operation_start", "resolve_nexus_operation", + "workflow_task_attachments", "remove_from_cache", ] | None @@ -1514,6 +1525,34 @@ class ResolveNexusOperation(google.protobuf.message.Message): global___ResolveNexusOperation = ResolveNexusOperation +class WorkflowTaskAttachments(google.protobuf.message.Message): + """The attachments the server put on the scheduled events of a Workflow Task. + + Core issues at most one per Workflow Task, in the task's first activation, after the task's + other events. It comes from History, so replay issues the same job at the same point. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ATTACHMENTS_FIELD_NUMBER: builtins.int + @property + def attachments( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + google.protobuf.any_pb2.Any + ]: + """In event order. A failed task's scheduled event and its retry's both count.""" + def __init__( + self, + *, + attachments: collections.abc.Iterable[google.protobuf.any_pb2.Any] | None = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["attachments", b"attachments"] + ) -> None: ... + +global___WorkflowTaskAttachments = WorkflowTaskAttachments + class RemoveFromCache(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor diff --git a/temporalio/bridge/proto/workflow_completion/workflow_completion_pb2.py b/temporalio/bridge/proto/workflow_completion/workflow_completion_pb2.py index 057b301e41..895e2feed6 100644 --- a/temporalio/bridge/proto/workflow_completion/workflow_completion_pb2.py +++ b/temporalio/bridge/proto/workflow_completion/workflow_completion_pb2.py @@ -31,7 +31,7 @@ ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n?temporal/sdk/core/workflow_completion/workflow_completion.proto\x12\x1b\x63oresdk.workflow_completion\x1a%temporal/api/failure/v1/message.proto\x1a(temporal/api/enums/v1/failed_cause.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a%temporal/sdk/core/common/common.proto\x1a;temporal/sdk/core/workflow_commands/workflow_commands.proto"\xbe\x02\n\x1cWorkflowActivationCompletion\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12:\n\nsuccessful\x18\x02 \x01(\x0b\x32$.coresdk.workflow_completion.SuccessH\x00\x12\x36\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32$.coresdk.workflow_completion.FailureH\x00\x12H\n\x18payload_download_metrics\x18\x04 \x01(\x0b\x32&.coresdk.common.ExternalStorageMetrics\x12\x46\n\x16payload_upload_metrics\x18\x05 \x01(\x0b\x32&.coresdk.common.ExternalStorageMetricsB\x08\n\x06status"\xac\x01\n\x07Success\x12<\n\x08\x63ommands\x18\x01 \x03(\x0b\x32*.coresdk.workflow_commands.WorkflowCommand\x12\x1b\n\x13used_internal_flags\x18\x06 \x03(\r\x12\x46\n\x13versioning_behavior\x18\x07 \x01(\x0e\x32).temporal.api.enums.v1.VersioningBehavior"\x81\x01\n\x07\x46\x61ilure\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x43\n\x0b\x66orce_cause\x18\x02 \x01(\x0e\x32..temporal.api.enums.v1.WorkflowTaskFailedCauseB8\xea\x02\x35Temporalio::Internal::Bridge::Api::WorkflowCompletionb\x06proto3' + b'\n?temporal/sdk/core/workflow_completion/workflow_completion.proto\x12\x1b\x63oresdk.workflow_completion\x1a%temporal/api/failure/v1/message.proto\x1a(temporal/api/enums/v1/failed_cause.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a%temporal/sdk/core/common/common.proto\x1a;temporal/sdk/core/workflow_commands/workflow_commands.proto"\xbe\x02\n\x1cWorkflowActivationCompletion\x12\x0e\n\x06run_id\x18\x01 \x01(\t\x12:\n\nsuccessful\x18\x02 \x01(\x0b\x32$.coresdk.workflow_completion.SuccessH\x00\x12\x36\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32$.coresdk.workflow_completion.FailureH\x00\x12H\n\x18payload_download_metrics\x18\x04 \x01(\x0b\x32&.coresdk.common.ExternalStorageMetrics\x12\x46\n\x16payload_upload_metrics\x18\x05 \x01(\x0b\x32&.coresdk.common.ExternalStorageMetricsB\x08\n\x06status"\xc4\x01\n\x07Success\x12<\n\x08\x63ommands\x18\x01 \x03(\x0b\x32*.coresdk.workflow_commands.WorkflowCommand\x12\x1b\n\x13used_internal_flags\x18\x06 \x03(\r\x12\x46\n\x13versioning_behavior\x18\x07 \x01(\x0e\x32).temporal.api.enums.v1.VersioningBehavior\x12\x16\n\x0eheartbeat_task\x18\x08 \x01(\x08"\x81\x01\n\x07\x46\x61ilure\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x43\n\x0b\x66orce_cause\x18\x02 \x01(\x0e\x32..temporal.api.enums.v1.WorkflowTaskFailedCauseB8\xea\x02\x35Temporalio::Internal::Bridge::Api::WorkflowCompletionb\x06proto3' ) @@ -81,7 +81,7 @@ _WORKFLOWACTIVATIONCOMPLETION._serialized_start = 316 _WORKFLOWACTIVATIONCOMPLETION._serialized_end = 634 _SUCCESS._serialized_start = 637 - _SUCCESS._serialized_end = 809 - _FAILURE._serialized_start = 812 - _FAILURE._serialized_end = 941 + _SUCCESS._serialized_end = 833 + _FAILURE._serialized_start = 836 + _FAILURE._serialized_end = 965 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/workflow_completion/workflow_completion_pb2.pyi b/temporalio/bridge/proto/workflow_completion/workflow_completion_pb2.pyi index 8e12736aae..4754754f05 100644 --- a/temporalio/bridge/proto/workflow_completion/workflow_completion_pb2.pyi +++ b/temporalio/bridge/proto/workflow_completion/workflow_completion_pb2.pyi @@ -111,6 +111,7 @@ class Success(google.protobuf.message.Message): COMMANDS_FIELD_NUMBER: builtins.int USED_INTERNAL_FLAGS_FIELD_NUMBER: builtins.int VERSIONING_BEHAVIOR_FIELD_NUMBER: builtins.int + HEARTBEAT_TASK_FIELD_NUMBER: builtins.int @property def commands( self, @@ -127,6 +128,13 @@ class Success(google.protobuf.message.Message): temporalio.api.enums.v1.workflow_pb2.VersioningBehavior.ValueType ) """The versioning behavior this workflow is currently using""" + heartbeat_task: builtins.bool + """Asks Core to complete the workflow task now if local activities are still running, as it + does at a local activity heartbeat. The completion carries the commands and markers so far + and asks the server for a new task, and the local activities run on. Lang sets it from a + count or a clock, so Core ignores it while replaying. Without running local activities, + the task completes as it would anyway. + """ def __init__( self, *, @@ -136,12 +144,15 @@ class Success(google.protobuf.message.Message): | None = ..., used_internal_flags: collections.abc.Iterable[builtins.int] | None = ..., versioning_behavior: temporalio.api.enums.v1.workflow_pb2.VersioningBehavior.ValueType = ..., + heartbeat_task: builtins.bool = ..., ) -> None: ... def ClearField( self, field_name: typing_extensions.Literal[ "commands", b"commands", + "heartbeat_task", + b"heartbeat_task", "used_internal_flags", b"used_internal_flags", "versioning_behavior", diff --git a/temporalio/bridge/sdk-core b/temporalio/bridge/sdk-core index 5dd6f0ec32..869a190ad8 160000 --- a/temporalio/bridge/sdk-core +++ b/temporalio/bridge/sdk-core @@ -1 +1 @@ -Subproject commit 5dd6f0ec32f5f1f951c0ef8faa38ade5808cef0b +Subproject commit 869a190ad857754d9f338736007be4932c84e052 diff --git a/temporalio/bridge/streams_generated.py b/temporalio/bridge/streams_generated.py index e2b1f2ced8..2a20ca6f2a 100644 --- a/temporalio/bridge/streams_generated.py +++ b/temporalio/bridge/streams_generated.py @@ -5,6 +5,7 @@ from typing import TYPE_CHECKING +import temporalio.api.workflowservice.v1 import temporalio.bridge.proto.streams if TYPE_CHECKING: @@ -50,6 +51,42 @@ async def describe_store( "DescribeStore", req, temporalio.bridge.proto.streams.DescribeStoreResponse ) + async def describe_stream_notifier( + self, req: temporalio.api.workflowservice.v1.DescribeStreamNotifierRequest + ) -> temporalio.api.workflowservice.v1.DescribeStreamNotifierResponse: + """Invokes the StreamService.describe_stream_notifier call.""" + return await self._store.call( + "DescribeStreamNotifier", + req, + temporalio.api.workflowservice.v1.DescribeStreamNotifierResponse, + ) + + async def flush_notifications( + self, req: temporalio.bridge.proto.streams.FlushNotificationsRequest + ) -> temporalio.bridge.proto.streams.FlushNotificationsResponse: + """Invokes the StreamService.flush_notifications call.""" + return await self._store.call( + "FlushNotifications", + req, + temporalio.bridge.proto.streams.FlushNotificationsResponse, + ) + + async def follow( + self, req: temporalio.bridge.proto.streams.FollowRequest + ) -> temporalio.bridge.proto.streams.FollowResponse: + """Invokes the StreamService.follow call.""" + return await self._store.call( + "Follow", req, temporalio.bridge.proto.streams.FollowResponse + ) + + async def follow_range( + self, req: temporalio.bridge.proto.streams.FollowRangeRequest + ) -> temporalio.bridge.proto.streams.FollowResponse: + """Invokes the StreamService.follow_range call.""" + return await self._store.call( + "FollowRange", req, temporalio.bridge.proto.streams.FollowResponse + ) + async def latest( self, req: temporalio.bridge.proto.streams.LatestRequest ) -> temporalio.bridge.proto.streams.LatestResponse: @@ -76,6 +113,22 @@ async def read( "Read", req, temporalio.bridge.proto.streams.ReadResponse ) + async def read_range( + self, req: temporalio.bridge.proto.streams.ReadRangeRequest + ) -> temporalio.bridge.proto.streams.ReadResponse: + """Invokes the StreamService.read_range call.""" + return await self._store.call( + "ReadRange", req, temporalio.bridge.proto.streams.ReadResponse + ) + + async def release_floor( + self, req: temporalio.bridge.proto.streams.ReleaseFloorRequest + ) -> temporalio.bridge.proto.streams.ReleaseFloorResponse: + """Invokes the StreamService.release_floor call.""" + return await self._store.call( + "ReleaseFloor", req, temporalio.bridge.proto.streams.ReleaseFloorResponse + ) + async def retire_producer( self, req: temporalio.bridge.proto.streams.RetireProducerRequest ) -> temporalio.bridge.proto.streams.RetireProducerResponse: @@ -103,3 +156,29 @@ async def shutdown_worker( req, temporalio.bridge.proto.streams.ShutdownWorkerResponse, ) + + async def subscribe( + self, req: temporalio.bridge.proto.streams.SubscribeRequest + ) -> temporalio.bridge.proto.streams.SubscribeResponse: + """Invokes the StreamService.subscribe call.""" + return await self._store.call( + "Subscribe", req, temporalio.bridge.proto.streams.SubscribeResponse + ) + + async def unsubscribe( + self, req: temporalio.bridge.proto.streams.UnsubscribeRequest + ) -> temporalio.bridge.proto.streams.UnsubscribeResponse: + """Invokes the StreamService.unsubscribe call.""" + return await self._store.call( + "Unsubscribe", req, temporalio.bridge.proto.streams.UnsubscribeResponse + ) + + async def wait_for_notification( + self, req: temporalio.bridge.proto.streams.WaitForNotificationRequest + ) -> temporalio.bridge.proto.streams.WaitForNotificationResponse: + """Invokes the StreamService.wait_for_notification call.""" + return await self._store.call( + "WaitForNotification", + req, + temporalio.bridge.proto.streams.WaitForNotificationResponse, + ) From 42e0d2ada3578abc76fbe0c5271ce737399c9666 Mon Sep 17 00:00:00 2001 From: Mohammad Dashti Date: Sun, 18 Oct 2026 00:43:05 -0700 Subject: [PATCH 2/6] Moved the Core pin to kj5 and sdk-streams to the new #9. kj1 now reads old JSON Histories with no attachments key. Nothing generated changes. --- temporalio/bridge/Cargo.lock | 2 +- temporalio/bridge/Cargo.toml | 2 +- temporalio/bridge/sdk-core | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/temporalio/bridge/Cargo.lock b/temporalio/bridge/Cargo.lock index eee40156db..a55db2fa7b 100644 --- a/temporalio/bridge/Cargo.lock +++ b/temporalio/bridge/Cargo.lock @@ -2926,7 +2926,7 @@ dependencies = [ [[package]] name = "temporalio-streams" version = "0.1.0" -source = "git+https://github.com/moetemp/sdk-streams?rev=9250d6c7003b6deedf8222972ccbebcfc8efa1c7#9250d6c7003b6deedf8222972ccbebcfc8efa1c7" +source = "git+https://github.com/moetemp/sdk-streams?rev=4070e1959a6f35ef8ed6845b5d89cd969a7ef9d6#4070e1959a6f35ef8ed6845b5d89cd969a7ef9d6" dependencies = [ "async-trait", "aws-lc-rs", diff --git a/temporalio/bridge/Cargo.toml b/temporalio/bridge/Cargo.toml index 9b53c2c814..559dd0c1a3 100644 --- a/temporalio/bridge/Cargo.toml +++ b/temporalio/bridge/Cargo.toml @@ -91,7 +91,7 @@ url = "2.2" # makes it use the submodule's crates, so the bridge sees one `Connection` type. [dependencies.temporalio-streams] git = "https://github.com/moetemp/sdk-streams" -rev = "9250d6c7003b6deedf8222972ccbebcfc8efa1c7" +rev = "4070e1959a6f35ef8ed6845b5d89cd969a7ef9d6" default-features = false features = ["envconfig", "redis"] diff --git a/temporalio/bridge/sdk-core b/temporalio/bridge/sdk-core index 869a190ad8..e77282e0a2 160000 --- a/temporalio/bridge/sdk-core +++ b/temporalio/bridge/sdk-core @@ -1 +1 @@ -Subproject commit 869a190ad857754d9f338736007be4932c84e052 +Subproject commit e77282e0a29cf9a77a1bb407144f54b3c24c2559 From fb90f10645fe4e2223ee38fc64cb17561da1b9c4 Mon Sep 17 00:00:00 2001 From: Mohammad Dashti Date: Sun, 18 Oct 2026 02:10:41 -0700 Subject: [PATCH 3/6] Moved sdk-streams to the sj5 head that withdraws failed task calls. --- temporalio/bridge/Cargo.lock | 2 +- temporalio/bridge/Cargo.toml | 2 +- .../bridge/proto/streams/streams_pb2.py | 256 +++++++++--------- 3 files changed, 130 insertions(+), 130 deletions(-) diff --git a/temporalio/bridge/Cargo.lock b/temporalio/bridge/Cargo.lock index a55db2fa7b..27b7feb889 100644 --- a/temporalio/bridge/Cargo.lock +++ b/temporalio/bridge/Cargo.lock @@ -2926,7 +2926,7 @@ dependencies = [ [[package]] name = "temporalio-streams" version = "0.1.0" -source = "git+https://github.com/moetemp/sdk-streams?rev=4070e1959a6f35ef8ed6845b5d89cd969a7ef9d6#4070e1959a6f35ef8ed6845b5d89cd969a7ef9d6" +source = "git+https://github.com/moetemp/sdk-streams?rev=aac844af460b8dde6126b03db84301c94b47289b#aac844af460b8dde6126b03db84301c94b47289b" dependencies = [ "async-trait", "aws-lc-rs", diff --git a/temporalio/bridge/Cargo.toml b/temporalio/bridge/Cargo.toml index 559dd0c1a3..366f7abb67 100644 --- a/temporalio/bridge/Cargo.toml +++ b/temporalio/bridge/Cargo.toml @@ -91,7 +91,7 @@ url = "2.2" # makes it use the submodule's crates, so the bridge sees one `Connection` type. [dependencies.temporalio-streams] git = "https://github.com/moetemp/sdk-streams" -rev = "4070e1959a6f35ef8ed6845b5d89cd969a7ef9d6" +rev = "aac844af460b8dde6126b03db84301c94b47289b" default-features = false features = ["envconfig", "redis"] diff --git a/temporalio/bridge/proto/streams/streams_pb2.py b/temporalio/bridge/proto/streams/streams_pb2.py index 7392e738ae..74bc69ee99 100644 --- a/temporalio/bridge/proto/streams/streams_pb2.py +++ b/temporalio/bridge/proto/streams/streams_pb2.py @@ -32,7 +32,7 @@ ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\'temporal/sdk/core/streams/streams.proto\x12\x0f\x63oresdk.streams\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a%temporal/sdk/streams/v1/message.proto\x1a=temporal/api/workflowservice/v1/stream_request_response.proto"\x88\x02\n\x11StreamStoreConfig\x12\x32\n\x05redis\x18\x01 \x01(\x0b\x32!.coresdk.streams.RedisStoreConfigH\x00\x12\x34\n\x06memory\x18\x02 \x01(\x0b\x32".coresdk.streams.MemoryStoreConfigH\x00\x12\x18\n\x10notify_on_append\x18\x03 \x01(\x08\x12\x15\n\rmax_notifiers\x18\x04 \x01(\r\x12\x34\n\x11owner_start_grace\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\x07\n\x05storeJ\x04\x08\x05\x10\x06R\x13notify_every_append"\xc0\x02\n\x10RedisStoreConfig\x12\x0c\n\x04urls\x18\x01 \x03(\t\x12\x0f\n\x07\x63luster\x18\x02 \x01(\x08\x12\x12\n\nkey_prefix\x18\x03 \x01(\t\x12,\n\tretention\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1f\n\x17\x62locking_reads_per_node\x18\x05 \x01(\r\x12\x33\n\x10response_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\x0b\x66loor_lease\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x36\n\x13\x66loor_release_grace\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05plain\x18\n \x01(\x08"M\n\x11MemoryStoreConfig\x12\x38\n\x0c\x63\x61pabilities\x18\x01 \x01(\x0b\x32".coresdk.streams.StoreCapabilities"\xa1\x01\n\rStreamAddress\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x34\n\nowner_kind\x18\x02 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\r\n\x05topic\x18\x05 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x06 \x01(\t"\x92\x01\n\x07\x43hainId\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x14\n\x0c\x66irst_run_id\x18\x03 \x01(\t\x12\x34\n\nowner_kind\x18\x04 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0b\x61\x63tivity_id\x18\x05 \x01(\t"5\n\rNamedProducer\x12\x13\n\x0bproducer_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x03"\x97\x01\n\x10\x41\x63tivityProducer\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x05\x12\x38\n\x14\x61ttempt_started_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"\xbf\x01\n\x0c\x41ppendRecord\x12\x37\n\x04kind\x18\x01 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12-\n\x04\x62ody\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x14\n\x0c\x63ontent_hash\x18\x03 \x01(\x0c\x12\x31\n\x04link\x18\x04 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink"\x85\x02\n\rAppendRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x05named\x18\x02 \x01(\x0b\x32\x1e.coresdk.streams.NamedProducerH\x00\x12\x35\n\x08\x61\x63tivity\x18\x03 \x01(\x0b\x32!.coresdk.streams.ActivityProducerH\x00\x12\x10\n\x08sequence\x18\x04 \x01(\x03\x12.\n\x07records\x18\x05 \x03(\x0b\x32\x1d.coresdk.streams.AppendRecord\x12\x0e\n\x06\x64igest\x18\x06 \x01(\x0c\x42\n\n\x08producer";\n\x0e\x41ppendResponse\x12\x14\n\x0c\x66irst_cursor\x18\x01 \x01(\t\x12\x13\n\x0blast_cursor\x18\x02 \x01(\t"\x82\x02\n\x0bReadRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\r\n\x05\x61\x66ter\x18\x02 \x01(\t\x12\'\n\x04wait\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x04 \x01(\r\x12\r\n\x05state\x18\x05 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x07 \x01(\t\x12\x33\n\nsubscriber\x18\x08 \x01(\x0b\x32\x1f.coresdk.streams.ReadSubscriber\x12\x11\n\tmax_bytes\x18\t \x01(\x04J\x04\x08\x06\x10\x07R\x03\x61rm"b\n\x0eReadSubscriber\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"]\n\x0cSupersession\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x13\n\x0bproducer_id\x18\x02 \x01(\t\x12\x18\n\x10previous_attempt\x18\x03 \x01(\x03\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x03"\xa3\x01\n\nReadRecord\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t\x12\x37\n\x06stored\x18\x02 \x01(\x0b\x32%.temporal.sdk.streams.v1.StreamRecordH\x00\x12\x33\n\nsuperseded\x18\x03 \x01(\x0b\x32\x1d.coresdk.streams.SupersessionH\x00\x12\r\n\x05stale\x18\x04 \x01(\x08\x42\x08\n\x06record"\xd7\x02\n\x0cReadResponse\x12,\n\x07records\x18\x01 \x03(\x0b\x32\x1b.coresdk.streams.ReadRecord\x12\x0e\n\x06\x63ursor\x18\x02 \x01(\t\x12\r\n\x05state\x18\x03 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x04 \x01(\x08\x12\x12\n\nwake_after\x18\x06 \x01(\x03\x12\x35\n\x0c\x63lose_result\x18\x07 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x08 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\t \x01(\t\x12\x16\n\x0erecords_digest\x18\n \x01(\x0c\x12\x1a\n\x12\x63hain_first_run_id\x18\x0b \x01(\t\x12\x14\n\x0cstart_cursor\x18\x0c \x01(\tJ\x04\x08\x05\x10\x06R\x05\x61rmed"\xe6\x01\n\x10ReadRangeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\r\n\x05\x61\x66ter\x18\x03 \x01(\t\x12\n\n\x02to\x18\x04 \x01(\t\x12\x16\n\x0estored_records\x18\x05 \x01(\r\x12\r\n\x05state\x18\x06 \x01(\x0c\x12\x16\n\x0erecords_digest\x18\x07 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x08 \x01(\t\x12\x16\n\x0estart_from_end\x18\t \x01(\x08"w\n\x13ReleaseFloorRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\x14\n\x0c\x66loor_holder\x18\x03 \x01(\t"\x16\n\x14ReleaseFloorResponse"\x8d\x02\n\rFollowRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\r\n\x05\x61\x66ter\x18\x02 \x01(\t\x12\r\n\x05state\x18\x03 \x01(\x0c\x12\'\n\x04wait\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x05 \x01(\r\x12\x11\n\tmax_depth\x18\x06 \x01(\r\x12\x10\n\x08max_open\x18\x07 \x01(\r\x12\x14\n\x0c\x66loor_holder\x18\x08 \x01(\t\x12\x35\n\nsubscriber\x18\t \x01(\x0b\x32!.coresdk.streams.FollowSubscriber"h\n\x10\x46ollowSubscriber\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x1b\n\x13subscription_prefix\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"\x89\x01\n\x0e\x46ollowedRecord\x12\x0e\n\x06source\x18\x01 \x01(\r\x12-\n\x06record\x18\x02 \x01(\x0b\x32\x1b.coresdk.streams.ReadRecordH\x00\x12\x30\n\nlink_state\x18\x03 \x01(\x0b\x32\x1a.coresdk.streams.LinkStateH\x00\x42\x06\n\x04item"\x82\x03\n\tLinkState\x12-\n\x04kind\x18\x01 \x01(\x0e\x32\x1f.coresdk.streams.LinkState.Kind\x12\x31\n\x04link\x18\x02 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink\x12\x35\n\x0c\x63lose_result\x18\x03 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x04 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12-\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x1e.coresdk.streams.StreamFailure\x12\x0e\n\x06reason\x18\x06 \x01(\t"d\n\x04Kind\x12\x14\n\x10KIND_UNSPECIFIED\x10\x00\x12\x0f\n\x0bKIND_OPENED\x10\x01\x12\r\n\tKIND_DONE\x10\x02\x12\x14\n\x10KIND_UNAVAILABLE\x10\x03\x12\x10\n\x0cKIND_SKIPPED\x10\x04"{\n\x0c\x46ollowSource\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06parent\x18\x02 \x01(\r\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\r\x12.\n\x06stream\x18\x04 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x0c\n\x04name\x18\x05 \x01(\t"\xe6\x02\n\x0bSourceRange\x12\x0e\n\x06source\x18\x01 \x01(\r\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\x14\n\x0cstart_cursor\x18\x03 \x01(\t\x12\x0e\n\x06\x63ursor\x18\x04 \x01(\t\x12\x16\n\x0estored_records\x18\x05 \x01(\r\x12\x10\n\x08state_in\x18\x06 \x01(\x0c\x12\x16\n\x0erecords_digest\x18\x07 \x01(\x0c\x12\x16\n\x0estart_from_end\x18\x08 \x01(\x08\x12\x0c\n\x04\x64one\x18\t \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\n \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x0b \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12-\n\x05\x65rror\x18\x0c \x01(\x0b\x32\x1e.coresdk.streams.StreamFailure"I\n\nSourceWake\x12\x0e\n\x06source\x18\x01 \x01(\r\x12\x17\n\x0fsubscription_id\x18\x02 \x01(\t\x12\x12\n\nwake_after\x18\x03 \x01(\x03"\xf0\x02\n\x0e\x46ollowResponse\x12\x30\n\x07records\x18\x01 \x03(\x0b\x32\x1f.coresdk.streams.FollowedRecord\x12\r\n\x05state\x18\x02 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x03 \x01(\x08\x12.\n\x07sources\x18\x04 \x03(\x0b\x32\x1d.coresdk.streams.FollowSource\x12,\n\x06ranges\x18\x05 \x03(\x0b\x32\x1c.coresdk.streams.SourceRange\x12*\n\x05wakes\x18\x06 \x03(\x0b\x32\x1b.coresdk.streams.SourceWake\x12\x35\n\x0c\x63lose_result\x18\x07 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x08 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x15\n\rfollow_digest\x18\t \x01(\x0c"\xd6\x01\n\x12\x46ollowRangeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x10\n\x08state_in\x18\x02 \x01(\x0c\x12,\n\x06ranges\x18\x03 \x03(\x0b\x32\x1c.coresdk.streams.SourceRange\x12\x15\n\rfollow_digest\x18\x04 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x05 \x01(\t\x12\x11\n\tmax_depth\x18\x06 \x01(\r\x12\x10\n\x08max_open\x18\x07 \x01(\r"?\n\rLatestRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress" \n\x0eLatestResponse\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t"\xb5\x01\n\x0c\x43loseRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x06result\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x31\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\x04 \x01(\t"\x84\x01\n\x0bStoredClose\x12/\n\x06result\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\x03 \x01(\t"\x0f\n\rCloseResponse"\x1b\n\x19\x46lushNotificationsRequest"\x1c\n\x1a\x46lushNotificationsResponse"\x94\x01\n\x10SubscribeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x04 \x01(\t\x12\x12\n\ngeneration\x18\x05 \x01(\r"Y\n\x11SubscribeResponse\x12\x1a\n\x12\x63hain_first_run_id\x18\x01 \x01(\t\x12\x10\n\x08\x61ttached\x18\x02 \x01(\x08\x12\x16\n\x0enewest_counter\x18\x03 \x01(\x03"\x81\x01\n\x12UnsubscribeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"\x15\n\x13UnsubscribeResponse"c\n\x1aWaitForNotificationRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x15\n\rafter_counter\x18\x02 \x01(\x03"\xd3\x01\n\x1bWaitForNotificationResponse\x12\x0f\n\x07\x63ounter\x18\x01 \x01(\x03\x12\x10\n\x08position\x18\x02 \x01(\t\x12\x11\n\ttimed_out\x18\x03 \x01(\x08\x12\x0e\n\x06\x63losed\x18\x04 \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\x05 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x06 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\x87\x01\n\x12\x44\x65leteOwnerRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x34\n\nowner_kind\x18\x02 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x04 \x01(\t"&\n\x13\x44\x65leteOwnerResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\x04"\xbb\x01\n\x15RetireProducerRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x05named\x18\x02 \x01(\x0b\x32\x1e.coresdk.streams.NamedProducerH\x00\x12\x35\n\x08\x61\x63tivity\x18\x03 \x01(\x0b\x32!.coresdk.streams.ActivityProducerH\x00\x42\n\n\x08producer"\x18\n\x16RetireProducerResponse"\x16\n\x14\x44\x65scribeStoreRequest"_\n\x15\x44\x65scribeStoreResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x0c\x63\x61pabilities\x18\x02 \x01(\x0b\x32".coresdk.streams.StoreCapabilities"\xc1\x02\n\x11StoreCapabilities\x12\x16\n\x0eproducer_state\x18\x01 \x01(\x08\x12\x11\n\tkept_last\x18\x04 \x01(\x08\x12\r\n\x05holds\x18\x05 \x01(\x08\x12\x13\n\x0b\x63hange_feed\x18\x06 \x01(\x08\x12\x12\n\ncheap_logs\x18\x07 \x01(\x08\x12\x14\n\x0c\x64\x65lete_owner\x18\x08 \x01(\x08\x12\x15\n\rtopic_listing\x18\t \x01(\x08\x12\x11\n\tlong_poll\x18\n \x01(\x08\x12\x17\n\x0f\x64\x65nse_positions\x18\x0b \x01(\x08\x12\x31\n\x0ereplay_horizon\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x18\n\x10max_record_bytes\x18\r \x01(\x04\x12\x17\n\x0fmax_batch_bytes\x18\x0e \x01(\x04J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04"u\n\rStreamFailure\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32".coresdk.streams.StreamFailureKind\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0e\n\x06\x63ursor\x18\x03 \x01(\t\x12\x11\n\tclosed_by\x18\x04 \x01(\t"\xa5\x01\n\x12StoreAppendRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x13\n\x0bproducer_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x03\x12\x10\n\x08sequence\x18\x05 \x01(\x03\x12\x0e\n\x06\x64igest\x18\x06 \x01(\x0c\x12\x0f\n\x07records\x18\x07 \x03(\x0c"O\n\x13StoreAppendResponse\x12\x16\n\x0e\x66irst_position\x18\x01 \x01(\t\x12\x15\n\rlast_position\x18\x02 \x01(\tJ\x04\x08\x03\x10\x04R\x03\x61rm"\xab\x01\n\x10StoreReadRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x16\n\x0e\x61\x66ter_position\x18\x03 \x01(\t\x12\'\n\x04wait\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x05 \x01(\rJ\x04\x08\x06\x10\x07R\x03\x61rm"0\n\x0cStoredRecord\x12\x10\n\x08position\x18\x01 \x01(\t\x12\x0e\n\x06record\x18\x02 \x01(\x0c"\x8d\x01\n\x11StoreReadResponse\x12.\n\x07records\x18\x01 \x03(\x0b\x32\x1d.coresdk.streams.StoredRecord\x12\x0e\n\x06\x63losed\x18\x02 \x01(\x08\x12+\n\x05\x63lose\x18\x04 \x01(\x0b\x32\x1c.coresdk.streams.StoredCloseJ\x04\x08\x03\x10\x04R\x05\x61rmed"L\n\x12StoreLatestRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t"\'\n\x13StoreLatestResponse\x12\x10\n\x08position\x18\x01 \x01(\t"\xf6\x03\n\x1aPublishWorkflowTaskRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\x12\n\ntask_queue\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x05 \x01(\t\x12\x0e\n\x06run_id\x18\x06 \x01(\t\x12\x1e\n\x16\x66irst_execution_run_id\x18\x07 \x01(\t\x12\x0c\n\x04\x63ron\x18\x08 \x01(\x08\x12\x18\n\x10has_retry_policy\x18\t \x01(\x08\x12\x1d\n\x15task_started_event_id\x18\n \x01(\x03\x12\x17\n\x0f\x66\x61iled_attempts\x18\x0b \x01(\r\x12#\n\x1b\x63ompleted_started_event_ids\x18\x0c \x03(\x03\x12.\n\x07records\x18\r \x03(\x0b\x32\x1d.coresdk.streams.OutputRecord\x12\x42\n\x10terminal_command\x18\x0e \x01(\x0e\x32(.coresdk.streams.WorkflowTerminalCommand\x12I\n\x19resolved_owner_activities\x18\x0f \x03(\x0b\x32&.coresdk.streams.ResolvedOwnerActivity"\x9a\x01\n\x15ResolvedOwnerActivity\x12\x13\n\x0b\x61\x63tivity_id\x18\x01 \x01(\t\x12\x39\n\x07outcome\x18\x02 \x01(\x0e\x32(.coresdk.streams.ResolvedActivityOutcome\x12\x31\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\xce\x01\n\x0cOutputRecord\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x37\n\x04kind\x18\x02 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12-\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x14\n\x0c\x63ontent_hash\x18\x04 \x01(\x0c\x12\x31\n\x04link\x18\x05 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink"5\n\x1bPublishWorkflowTaskResponse\x12\x16\n\x0e\x64ropped_topics\x18\x01 \x03(\t"Y\n\x11RunEvictedRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12!\n\x19workflow_execution_ending\x18\x03 \x01(\x08"\x14\n\x12RunEvictedResponse"*\n\x15ShutdownWorkerRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t"\x18\n\x16ShutdownWorkerResponse*\x9d\x01\n\x0fStreamOwnerKind\x12!\n\x1dSTREAM_OWNER_KIND_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSTREAM_OWNER_KIND_WORKFLOW\x10\x01\x12\x1e\n\x1aSTREAM_OWNER_KIND_ACTIVITY\x10\x02\x12\'\n#STREAM_OWNER_KIND_WORKFLOW_ACTIVITY\x10\x03*\xbe\x04\n\x11StreamFailureKind\x12#\n\x1fSTREAM_FAILURE_KIND_UNSPECIFIED\x10\x00\x12*\n&STREAM_FAILURE_KIND_PRODUCER_DIVERGENT\x10\x01\x12&\n"STREAM_FAILURE_KIND_PRODUCER_STALE\x10\x02\x12\'\n#STREAM_FAILURE_KIND_OUTCOME_UNKNOWN\x10\x03\x12\x1f\n\x1bSTREAM_FAILURE_KIND_REFUSED\x10\x04\x12\x1e\n\x1aSTREAM_FAILURE_KIND_CLOSED\x10\x05\x12\x1e\n\x1aSTREAM_FAILURE_KIND_CURSOR\x10\x06\x12\x1f\n\x1bSTREAM_FAILURE_KIND_EXPIRED\x10\x07\x12!\n\x1dSTREAM_FAILURE_KIND_NOT_FOUND\x10\x08\x12\x1e\n\x1aSTREAM_FAILURE_KIND_RECORD\x10\t\x12\x1f\n\x1bSTREAM_FAILURE_KIND_STORAGE\x10\n\x12#\n\x1fSTREAM_FAILURE_KIND_UNSUPPORTED\x10\x0b\x12(\n$STREAM_FAILURE_KIND_INVALID_ARGUMENT\x10\x0c\x12\'\n#STREAM_FAILURE_KIND_REPLAY_MISMATCH\x10\r\x12)\n%STREAM_FAILURE_KIND_REPLAY_RANGE_LOST\x10\x0e*\xbc\x01\n\x17ResolvedActivityOutcome\x12)\n%RESOLVED_ACTIVITY_OUTCOME_UNSPECIFIED\x10\x00\x12\'\n#RESOLVED_ACTIVITY_OUTCOME_COMPLETED\x10\x01\x12$\n RESOLVED_ACTIVITY_OUTCOME_FAILED\x10\x02\x12\'\n#RESOLVED_ACTIVITY_OUTCOME_CANCELLED\x10\x03*\xe5\x01\n\x17WorkflowTerminalCommand\x12)\n%WORKFLOW_TERMINAL_COMMAND_UNSPECIFIED\x10\x00\x12&\n"WORKFLOW_TERMINAL_COMMAND_COMPLETE\x10\x01\x12"\n\x1eWORKFLOW_TERMINAL_COMMAND_FAIL\x10\x02\x12$\n WORKFLOW_TERMINAL_COMMAND_CANCEL\x10\x03\x12-\n)WORKFLOW_TERMINAL_COMMAND_CONTINUE_AS_NEW\x10\x04\x32\xf2\r\n\rStreamService\x12I\n\x06\x41ppend\x12\x1e.coresdk.streams.AppendRequest\x1a\x1f.coresdk.streams.AppendResponse\x12\x43\n\x04Read\x12\x1c.coresdk.streams.ReadRequest\x1a\x1d.coresdk.streams.ReadResponse\x12I\n\x06Latest\x12\x1e.coresdk.streams.LatestRequest\x1a\x1f.coresdk.streams.LatestResponse\x12\x46\n\x05\x43lose\x12\x1d.coresdk.streams.CloseRequest\x1a\x1e.coresdk.streams.CloseResponse\x12X\n\x0b\x44\x65leteOwner\x12#.coresdk.streams.DeleteOwnerRequest\x1a$.coresdk.streams.DeleteOwnerResponse\x12\x61\n\x0eRetireProducer\x12&.coresdk.streams.RetireProducerRequest\x1a\'.coresdk.streams.RetireProducerResponse\x12m\n\x12\x46lushNotifications\x12*.coresdk.streams.FlushNotificationsRequest\x1a+.coresdk.streams.FlushNotificationsResponse\x12R\n\tSubscribe\x12!.coresdk.streams.SubscribeRequest\x1a".coresdk.streams.SubscribeResponse\x12X\n\x0bUnsubscribe\x12#.coresdk.streams.UnsubscribeRequest\x1a$.coresdk.streams.UnsubscribeResponse\x12p\n\x13WaitForNotification\x12+.coresdk.streams.WaitForNotificationRequest\x1a,.coresdk.streams.WaitForNotificationResponse\x12\x99\x01\n\x16\x44\x65scribeStreamNotifier\x12>.temporal.api.workflowservice.v1.DescribeStreamNotifierRequest\x1a?.temporal.api.workflowservice.v1.DescribeStreamNotifierResponse\x12M\n\tReadRange\x12!.coresdk.streams.ReadRangeRequest\x1a\x1d.coresdk.streams.ReadResponse\x12[\n\x0cReleaseFloor\x12$.coresdk.streams.ReleaseFloorRequest\x1a%.coresdk.streams.ReleaseFloorResponse\x12I\n\x06\x46ollow\x12\x1e.coresdk.streams.FollowRequest\x1a\x1f.coresdk.streams.FollowResponse\x12S\n\x0b\x46ollowRange\x12#.coresdk.streams.FollowRangeRequest\x1a\x1f.coresdk.streams.FollowResponse\x12^\n\rDescribeStore\x12%.coresdk.streams.DescribeStoreRequest\x1a&.coresdk.streams.DescribeStoreResponse\x12p\n\x13PublishWorkflowTask\x12+.coresdk.streams.PublishWorkflowTaskRequest\x1a,.coresdk.streams.PublishWorkflowTaskResponse\x12U\n\nRunEvicted\x12".coresdk.streams.RunEvictedRequest\x1a#.coresdk.streams.RunEvictedResponse\x12\x61\n\x0eShutdownWorker\x12&.coresdk.streams.ShutdownWorkerRequest\x1a\'.coresdk.streams.ShutdownWorkerResponseB-\xea\x02*Temporalio::Internal::Bridge::Api::Streamsb\x06proto3' + b'\n\'temporal/sdk/core/streams/streams.proto\x12\x0f\x63oresdk.streams\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a%temporal/sdk/streams/v1/message.proto\x1a=temporal/api/workflowservice/v1/stream_request_response.proto"\x88\x02\n\x11StreamStoreConfig\x12\x32\n\x05redis\x18\x01 \x01(\x0b\x32!.coresdk.streams.RedisStoreConfigH\x00\x12\x34\n\x06memory\x18\x02 \x01(\x0b\x32".coresdk.streams.MemoryStoreConfigH\x00\x12\x18\n\x10notify_on_append\x18\x03 \x01(\x08\x12\x15\n\rmax_notifiers\x18\x04 \x01(\r\x12\x34\n\x11owner_start_grace\x18\x06 \x01(\x0b\x32\x19.google.protobuf.DurationB\x07\n\x05storeJ\x04\x08\x05\x10\x06R\x13notify_every_append"\xc0\x02\n\x10RedisStoreConfig\x12\x0c\n\x04urls\x18\x01 \x03(\t\x12\x0f\n\x07\x63luster\x18\x02 \x01(\x08\x12\x12\n\nkey_prefix\x18\x03 \x01(\t\x12,\n\tretention\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x1f\n\x17\x62locking_reads_per_node\x18\x05 \x01(\r\x12\x33\n\x10response_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12.\n\x0b\x66loor_lease\x18\x07 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x36\n\x13\x66loor_release_grace\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\r\n\x05plain\x18\n \x01(\x08"M\n\x11MemoryStoreConfig\x12\x38\n\x0c\x63\x61pabilities\x18\x01 \x01(\x0b\x32".coresdk.streams.StoreCapabilities"\xa1\x01\n\rStreamAddress\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x34\n\nowner_kind\x18\x02 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x0e\n\x06run_id\x18\x04 \x01(\t\x12\r\n\x05topic\x18\x05 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x06 \x01(\t"\x92\x01\n\x07\x43hainId\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x14\n\x0c\x66irst_run_id\x18\x03 \x01(\t\x12\x34\n\nowner_kind\x18\x04 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0b\x61\x63tivity_id\x18\x05 \x01(\t"y\n\rNamedProducer\x12\x13\n\x0bproducer_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\x03\x12\x1d\n\x15task_started_event_id\x18\x03 \x01(\x03\x12#\n\x1b\x63ompleted_started_event_ids\x18\x04 \x03(\x03"\x97\x01\n\x10\x41\x63tivityProducer\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x05\x12\x38\n\x14\x61ttempt_started_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"\xbf\x01\n\x0c\x41ppendRecord\x12\x37\n\x04kind\x18\x01 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12-\n\x04\x62ody\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x14\n\x0c\x63ontent_hash\x18\x03 \x01(\x0c\x12\x31\n\x04link\x18\x04 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink"\x85\x02\n\rAppendRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x05named\x18\x02 \x01(\x0b\x32\x1e.coresdk.streams.NamedProducerH\x00\x12\x35\n\x08\x61\x63tivity\x18\x03 \x01(\x0b\x32!.coresdk.streams.ActivityProducerH\x00\x12\x10\n\x08sequence\x18\x04 \x01(\x03\x12.\n\x07records\x18\x05 \x03(\x0b\x32\x1d.coresdk.streams.AppendRecord\x12\x0e\n\x06\x64igest\x18\x06 \x01(\x0c\x42\n\n\x08producer";\n\x0e\x41ppendResponse\x12\x14\n\x0c\x66irst_cursor\x18\x01 \x01(\t\x12\x13\n\x0blast_cursor\x18\x02 \x01(\t"\x82\x02\n\x0bReadRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\r\n\x05\x61\x66ter\x18\x02 \x01(\t\x12\'\n\x04wait\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x04 \x01(\r\x12\r\n\x05state\x18\x05 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x07 \x01(\t\x12\x33\n\nsubscriber\x18\x08 \x01(\x0b\x32\x1f.coresdk.streams.ReadSubscriber\x12\x11\n\tmax_bytes\x18\t \x01(\x04J\x04\x08\x06\x10\x07R\x03\x61rm"b\n\x0eReadSubscriber\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"]\n\x0cSupersession\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x13\n\x0bproducer_id\x18\x02 \x01(\t\x12\x18\n\x10previous_attempt\x18\x03 \x01(\x03\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x03"\xa3\x01\n\nReadRecord\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t\x12\x37\n\x06stored\x18\x02 \x01(\x0b\x32%.temporal.sdk.streams.v1.StreamRecordH\x00\x12\x33\n\nsuperseded\x18\x03 \x01(\x0b\x32\x1d.coresdk.streams.SupersessionH\x00\x12\r\n\x05stale\x18\x04 \x01(\x08\x42\x08\n\x06record"\xd7\x02\n\x0cReadResponse\x12,\n\x07records\x18\x01 \x03(\x0b\x32\x1b.coresdk.streams.ReadRecord\x12\x0e\n\x06\x63ursor\x18\x02 \x01(\t\x12\r\n\x05state\x18\x03 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x04 \x01(\x08\x12\x12\n\nwake_after\x18\x06 \x01(\x03\x12\x35\n\x0c\x63lose_result\x18\x07 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x08 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\t \x01(\t\x12\x16\n\x0erecords_digest\x18\n \x01(\x0c\x12\x1a\n\x12\x63hain_first_run_id\x18\x0b \x01(\t\x12\x14\n\x0cstart_cursor\x18\x0c \x01(\tJ\x04\x08\x05\x10\x06R\x05\x61rmed"\xe6\x01\n\x10ReadRangeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\r\n\x05\x61\x66ter\x18\x03 \x01(\t\x12\n\n\x02to\x18\x04 \x01(\t\x12\x16\n\x0estored_records\x18\x05 \x01(\r\x12\r\n\x05state\x18\x06 \x01(\x0c\x12\x16\n\x0erecords_digest\x18\x07 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x08 \x01(\t\x12\x16\n\x0estart_from_end\x18\t \x01(\x08"w\n\x13ReleaseFloorRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\x14\n\x0c\x66loor_holder\x18\x03 \x01(\t"\x16\n\x14ReleaseFloorResponse"\x8d\x02\n\rFollowRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\r\n\x05\x61\x66ter\x18\x02 \x01(\t\x12\r\n\x05state\x18\x03 \x01(\x0c\x12\'\n\x04wait\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x05 \x01(\r\x12\x11\n\tmax_depth\x18\x06 \x01(\r\x12\x10\n\x08max_open\x18\x07 \x01(\r\x12\x14\n\x0c\x66loor_holder\x18\x08 \x01(\t\x12\x35\n\nsubscriber\x18\t \x01(\x0b\x32!.coresdk.streams.FollowSubscriber"h\n\x10\x46ollowSubscriber\x12\x13\n\x0bworkflow_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x1b\n\x13subscription_prefix\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"\x89\x01\n\x0e\x46ollowedRecord\x12\x0e\n\x06source\x18\x01 \x01(\r\x12-\n\x06record\x18\x02 \x01(\x0b\x32\x1b.coresdk.streams.ReadRecordH\x00\x12\x30\n\nlink_state\x18\x03 \x01(\x0b\x32\x1a.coresdk.streams.LinkStateH\x00\x42\x06\n\x04item"\x82\x03\n\tLinkState\x12-\n\x04kind\x18\x01 \x01(\x0e\x32\x1f.coresdk.streams.LinkState.Kind\x12\x31\n\x04link\x18\x02 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink\x12\x35\n\x0c\x63lose_result\x18\x03 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x04 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12-\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x1e.coresdk.streams.StreamFailure\x12\x0e\n\x06reason\x18\x06 \x01(\t"d\n\x04Kind\x12\x14\n\x10KIND_UNSPECIFIED\x10\x00\x12\x0f\n\x0bKIND_OPENED\x10\x01\x12\r\n\tKIND_DONE\x10\x02\x12\x14\n\x10KIND_UNAVAILABLE\x10\x03\x12\x10\n\x0cKIND_SKIPPED\x10\x04"{\n\x0c\x46ollowSource\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x0e\n\x06parent\x18\x02 \x01(\r\x12\r\n\x05\x64\x65pth\x18\x03 \x01(\r\x12.\n\x06stream\x18\x04 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x0c\n\x04name\x18\x05 \x01(\t"\xe6\x02\n\x0bSourceRange\x12\x0e\n\x06source\x18\x01 \x01(\r\x12\x1a\n\x12\x63hain_first_run_id\x18\x02 \x01(\t\x12\x14\n\x0cstart_cursor\x18\x03 \x01(\t\x12\x0e\n\x06\x63ursor\x18\x04 \x01(\t\x12\x16\n\x0estored_records\x18\x05 \x01(\r\x12\x10\n\x08state_in\x18\x06 \x01(\x0c\x12\x16\n\x0erecords_digest\x18\x07 \x01(\x0c\x12\x16\n\x0estart_from_end\x18\x08 \x01(\x08\x12\x0c\n\x04\x64one\x18\t \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\n \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x0b \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12-\n\x05\x65rror\x18\x0c \x01(\x0b\x32\x1e.coresdk.streams.StreamFailure"I\n\nSourceWake\x12\x0e\n\x06source\x18\x01 \x01(\r\x12\x17\n\x0fsubscription_id\x18\x02 \x01(\t\x12\x12\n\nwake_after\x18\x03 \x01(\x03"\xf0\x02\n\x0e\x46ollowResponse\x12\x30\n\x07records\x18\x01 \x03(\x0b\x32\x1f.coresdk.streams.FollowedRecord\x12\r\n\x05state\x18\x02 \x01(\x0c\x12\x0c\n\x04\x64one\x18\x03 \x01(\x08\x12.\n\x07sources\x18\x04 \x03(\x0b\x32\x1d.coresdk.streams.FollowSource\x12,\n\x06ranges\x18\x05 \x03(\x0b\x32\x1c.coresdk.streams.SourceRange\x12*\n\x05wakes\x18\x06 \x03(\x0b\x32\x1b.coresdk.streams.SourceWake\x12\x35\n\x0c\x63lose_result\x18\x07 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x08 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x15\n\rfollow_digest\x18\t \x01(\x0c"\xd6\x01\n\x12\x46ollowRangeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x10\n\x08state_in\x18\x02 \x01(\x0c\x12,\n\x06ranges\x18\x03 \x03(\x0b\x32\x1c.coresdk.streams.SourceRange\x12\x15\n\rfollow_digest\x18\x04 \x01(\x0c\x12\x14\n\x0c\x66loor_holder\x18\x05 \x01(\t\x12\x11\n\tmax_depth\x18\x06 \x01(\r\x12\x10\n\x08max_open\x18\x07 \x01(\r"?\n\rLatestRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress" \n\x0eLatestResponse\x12\x0e\n\x06\x63ursor\x18\x01 \x01(\t"\xb5\x01\n\x0c\x43loseRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x06result\x18\x02 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x31\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\x04 \x01(\t"\x84\x01\n\x0bStoredClose\x12/\n\x06result\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x31\n\x07\x66\x61ilure\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.Failure\x12\x11\n\tclosed_by\x18\x03 \x01(\t"\x0f\n\rCloseResponse"\x1b\n\x19\x46lushNotificationsRequest"\x1c\n\x1a\x46lushNotificationsResponse"\x94\x01\n\x10SubscribeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x13\n\x0bworkflow_id\x18\x02 \x01(\t\x12\x0e\n\x06run_id\x18\x03 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x04 \x01(\t\x12\x12\n\ngeneration\x18\x05 \x01(\r"Y\n\x11SubscribeResponse\x12\x1a\n\x12\x63hain_first_run_id\x18\x01 \x01(\t\x12\x10\n\x08\x61ttached\x18\x02 \x01(\x08\x12\x16\n\x0enewest_counter\x18\x03 \x01(\x03"\x81\x01\n\x12UnsubscribeRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12\x17\n\x0fsubscription_id\x18\x03 \x01(\t\x12\x12\n\ngeneration\x18\x04 \x01(\r"\x15\n\x13UnsubscribeResponse"c\n\x1aWaitForNotificationRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12\x15\n\rafter_counter\x18\x02 \x01(\x03"\xd3\x01\n\x1bWaitForNotificationResponse\x12\x0f\n\x07\x63ounter\x18\x01 \x01(\x03\x12\x10\n\x08position\x18\x02 \x01(\t\x12\x11\n\ttimed_out\x18\x03 \x01(\x08\x12\x0e\n\x06\x63losed\x18\x04 \x01(\x08\x12\x35\n\x0c\x63lose_result\x18\x05 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\rclose_failure\x18\x06 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\x87\x01\n\x12\x44\x65leteOwnerRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x34\n\nowner_kind\x18\x02 \x01(\x0e\x32 .coresdk.streams.StreamOwnerKind\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x13\n\x0b\x61\x63tivity_id\x18\x04 \x01(\t"&\n\x13\x44\x65leteOwnerResponse\x12\x0f\n\x07\x64\x65leted\x18\x01 \x01(\x04"\xbb\x01\n\x15RetireProducerRequest\x12.\n\x06stream\x18\x01 \x01(\x0b\x32\x1e.coresdk.streams.StreamAddress\x12/\n\x05named\x18\x02 \x01(\x0b\x32\x1e.coresdk.streams.NamedProducerH\x00\x12\x35\n\x08\x61\x63tivity\x18\x03 \x01(\x0b\x32!.coresdk.streams.ActivityProducerH\x00\x42\n\n\x08producer"\x18\n\x16RetireProducerResponse"\x16\n\x14\x44\x65scribeStoreRequest"_\n\x15\x44\x65scribeStoreResponse\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x0c\x63\x61pabilities\x18\x02 \x01(\x0b\x32".coresdk.streams.StoreCapabilities"\xc1\x02\n\x11StoreCapabilities\x12\x16\n\x0eproducer_state\x18\x01 \x01(\x08\x12\x11\n\tkept_last\x18\x04 \x01(\x08\x12\r\n\x05holds\x18\x05 \x01(\x08\x12\x13\n\x0b\x63hange_feed\x18\x06 \x01(\x08\x12\x12\n\ncheap_logs\x18\x07 \x01(\x08\x12\x14\n\x0c\x64\x65lete_owner\x18\x08 \x01(\x08\x12\x15\n\rtopic_listing\x18\t \x01(\x08\x12\x11\n\tlong_poll\x18\n \x01(\x08\x12\x17\n\x0f\x64\x65nse_positions\x18\x0b \x01(\x08\x12\x31\n\x0ereplay_horizon\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x18\n\x10max_record_bytes\x18\r \x01(\x04\x12\x17\n\x0fmax_batch_bytes\x18\x0e \x01(\x04J\x04\x08\x02\x10\x03J\x04\x08\x03\x10\x04"u\n\rStreamFailure\x12\x30\n\x04kind\x18\x01 \x01(\x0e\x32".coresdk.streams.StreamFailureKind\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0e\n\x06\x63ursor\x18\x03 \x01(\t\x12\x11\n\tclosed_by\x18\x04 \x01(\t"\xa5\x01\n\x12StoreAppendRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x13\n\x0bproducer_id\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\x03\x12\x10\n\x08sequence\x18\x05 \x01(\x03\x12\x0e\n\x06\x64igest\x18\x06 \x01(\x0c\x12\x0f\n\x07records\x18\x07 \x03(\x0c"O\n\x13StoreAppendResponse\x12\x16\n\x0e\x66irst_position\x18\x01 \x01(\t\x12\x15\n\rlast_position\x18\x02 \x01(\tJ\x04\x08\x03\x10\x04R\x03\x61rm"\xab\x01\n\x10StoreReadRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t\x12\x16\n\x0e\x61\x66ter_position\x18\x03 \x01(\t\x12\'\n\x04wait\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x13\n\x0bmax_records\x18\x05 \x01(\rJ\x04\x08\x06\x10\x07R\x03\x61rm"0\n\x0cStoredRecord\x12\x10\n\x08position\x18\x01 \x01(\t\x12\x0e\n\x06record\x18\x02 \x01(\x0c"\x8d\x01\n\x11StoreReadResponse\x12.\n\x07records\x18\x01 \x03(\x0b\x32\x1d.coresdk.streams.StoredRecord\x12\x0e\n\x06\x63losed\x18\x02 \x01(\x08\x12+\n\x05\x63lose\x18\x04 \x01(\x0b\x32\x1c.coresdk.streams.StoredCloseJ\x04\x08\x03\x10\x04R\x05\x61rmed"L\n\x12StoreLatestRequest\x12\'\n\x05\x63hain\x18\x01 \x01(\x0b\x32\x18.coresdk.streams.ChainId\x12\r\n\x05topic\x18\x02 \x01(\t"\'\n\x13StoreLatestResponse\x12\x10\n\x08position\x18\x01 \x01(\t"\xf6\x03\n\x1aPublishWorkflowTaskRequest\x12\x11\n\tnamespace\x18\x01 \x01(\t\x12\x11\n\tworker_id\x18\x02 \x01(\t\x12\x12\n\ntask_queue\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x05 \x01(\t\x12\x0e\n\x06run_id\x18\x06 \x01(\t\x12\x1e\n\x16\x66irst_execution_run_id\x18\x07 \x01(\t\x12\x0c\n\x04\x63ron\x18\x08 \x01(\x08\x12\x18\n\x10has_retry_policy\x18\t \x01(\x08\x12\x1d\n\x15task_started_event_id\x18\n \x01(\x03\x12\x17\n\x0f\x66\x61iled_attempts\x18\x0b \x01(\r\x12#\n\x1b\x63ompleted_started_event_ids\x18\x0c \x03(\x03\x12.\n\x07records\x18\r \x03(\x0b\x32\x1d.coresdk.streams.OutputRecord\x12\x42\n\x10terminal_command\x18\x0e \x01(\x0e\x32(.coresdk.streams.WorkflowTerminalCommand\x12I\n\x19resolved_owner_activities\x18\x0f \x03(\x0b\x32&.coresdk.streams.ResolvedOwnerActivity"\x9a\x01\n\x15ResolvedOwnerActivity\x12\x13\n\x0b\x61\x63tivity_id\x18\x01 \x01(\t\x12\x39\n\x07outcome\x18\x02 \x01(\x0e\x32(.coresdk.streams.ResolvedActivityOutcome\x12\x31\n\x07\x66\x61ilure\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\xce\x01\n\x0cOutputRecord\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x37\n\x04kind\x18\x02 \x01(\x0e\x32).temporal.sdk.streams.v1.StreamRecordKind\x12-\n\x04\x62ody\x18\x03 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x14\n\x0c\x63ontent_hash\x18\x04 \x01(\x0c\x12\x31\n\x04link\x18\x05 \x01(\x0b\x32#.temporal.sdk.streams.v1.StreamLink"5\n\x1bPublishWorkflowTaskResponse\x12\x16\n\x0e\x64ropped_topics\x18\x01 \x03(\t"Y\n\x11RunEvictedRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t\x12\x0e\n\x06run_id\x18\x02 \x01(\t\x12!\n\x19workflow_execution_ending\x18\x03 \x01(\x08"\x14\n\x12RunEvictedResponse"*\n\x15ShutdownWorkerRequest\x12\x11\n\tworker_id\x18\x01 \x01(\t"\x18\n\x16ShutdownWorkerResponse*\x9d\x01\n\x0fStreamOwnerKind\x12!\n\x1dSTREAM_OWNER_KIND_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSTREAM_OWNER_KIND_WORKFLOW\x10\x01\x12\x1e\n\x1aSTREAM_OWNER_KIND_ACTIVITY\x10\x02\x12\'\n#STREAM_OWNER_KIND_WORKFLOW_ACTIVITY\x10\x03*\xbe\x04\n\x11StreamFailureKind\x12#\n\x1fSTREAM_FAILURE_KIND_UNSPECIFIED\x10\x00\x12*\n&STREAM_FAILURE_KIND_PRODUCER_DIVERGENT\x10\x01\x12&\n"STREAM_FAILURE_KIND_PRODUCER_STALE\x10\x02\x12\'\n#STREAM_FAILURE_KIND_OUTCOME_UNKNOWN\x10\x03\x12\x1f\n\x1bSTREAM_FAILURE_KIND_REFUSED\x10\x04\x12\x1e\n\x1aSTREAM_FAILURE_KIND_CLOSED\x10\x05\x12\x1e\n\x1aSTREAM_FAILURE_KIND_CURSOR\x10\x06\x12\x1f\n\x1bSTREAM_FAILURE_KIND_EXPIRED\x10\x07\x12!\n\x1dSTREAM_FAILURE_KIND_NOT_FOUND\x10\x08\x12\x1e\n\x1aSTREAM_FAILURE_KIND_RECORD\x10\t\x12\x1f\n\x1bSTREAM_FAILURE_KIND_STORAGE\x10\n\x12#\n\x1fSTREAM_FAILURE_KIND_UNSUPPORTED\x10\x0b\x12(\n$STREAM_FAILURE_KIND_INVALID_ARGUMENT\x10\x0c\x12\'\n#STREAM_FAILURE_KIND_REPLAY_MISMATCH\x10\r\x12)\n%STREAM_FAILURE_KIND_REPLAY_RANGE_LOST\x10\x0e*\xbc\x01\n\x17ResolvedActivityOutcome\x12)\n%RESOLVED_ACTIVITY_OUTCOME_UNSPECIFIED\x10\x00\x12\'\n#RESOLVED_ACTIVITY_OUTCOME_COMPLETED\x10\x01\x12$\n RESOLVED_ACTIVITY_OUTCOME_FAILED\x10\x02\x12\'\n#RESOLVED_ACTIVITY_OUTCOME_CANCELLED\x10\x03*\xe5\x01\n\x17WorkflowTerminalCommand\x12)\n%WORKFLOW_TERMINAL_COMMAND_UNSPECIFIED\x10\x00\x12&\n"WORKFLOW_TERMINAL_COMMAND_COMPLETE\x10\x01\x12"\n\x1eWORKFLOW_TERMINAL_COMMAND_FAIL\x10\x02\x12$\n WORKFLOW_TERMINAL_COMMAND_CANCEL\x10\x03\x12-\n)WORKFLOW_TERMINAL_COMMAND_CONTINUE_AS_NEW\x10\x04\x32\xf2\r\n\rStreamService\x12I\n\x06\x41ppend\x12\x1e.coresdk.streams.AppendRequest\x1a\x1f.coresdk.streams.AppendResponse\x12\x43\n\x04Read\x12\x1c.coresdk.streams.ReadRequest\x1a\x1d.coresdk.streams.ReadResponse\x12I\n\x06Latest\x12\x1e.coresdk.streams.LatestRequest\x1a\x1f.coresdk.streams.LatestResponse\x12\x46\n\x05\x43lose\x12\x1d.coresdk.streams.CloseRequest\x1a\x1e.coresdk.streams.CloseResponse\x12X\n\x0b\x44\x65leteOwner\x12#.coresdk.streams.DeleteOwnerRequest\x1a$.coresdk.streams.DeleteOwnerResponse\x12\x61\n\x0eRetireProducer\x12&.coresdk.streams.RetireProducerRequest\x1a\'.coresdk.streams.RetireProducerResponse\x12m\n\x12\x46lushNotifications\x12*.coresdk.streams.FlushNotificationsRequest\x1a+.coresdk.streams.FlushNotificationsResponse\x12R\n\tSubscribe\x12!.coresdk.streams.SubscribeRequest\x1a".coresdk.streams.SubscribeResponse\x12X\n\x0bUnsubscribe\x12#.coresdk.streams.UnsubscribeRequest\x1a$.coresdk.streams.UnsubscribeResponse\x12p\n\x13WaitForNotification\x12+.coresdk.streams.WaitForNotificationRequest\x1a,.coresdk.streams.WaitForNotificationResponse\x12\x99\x01\n\x16\x44\x65scribeStreamNotifier\x12>.temporal.api.workflowservice.v1.DescribeStreamNotifierRequest\x1a?.temporal.api.workflowservice.v1.DescribeStreamNotifierResponse\x12M\n\tReadRange\x12!.coresdk.streams.ReadRangeRequest\x1a\x1d.coresdk.streams.ReadResponse\x12[\n\x0cReleaseFloor\x12$.coresdk.streams.ReleaseFloorRequest\x1a%.coresdk.streams.ReleaseFloorResponse\x12I\n\x06\x46ollow\x12\x1e.coresdk.streams.FollowRequest\x1a\x1f.coresdk.streams.FollowResponse\x12S\n\x0b\x46ollowRange\x12#.coresdk.streams.FollowRangeRequest\x1a\x1f.coresdk.streams.FollowResponse\x12^\n\rDescribeStore\x12%.coresdk.streams.DescribeStoreRequest\x1a&.coresdk.streams.DescribeStoreResponse\x12p\n\x13PublishWorkflowTask\x12+.coresdk.streams.PublishWorkflowTaskRequest\x1a,.coresdk.streams.PublishWorkflowTaskResponse\x12U\n\nRunEvicted\x12".coresdk.streams.RunEvictedRequest\x1a#.coresdk.streams.RunEvictedResponse\x12\x61\n\x0eShutdownWorker\x12&.coresdk.streams.ShutdownWorkerRequest\x1a\'.coresdk.streams.ShutdownWorkerResponseB-\xea\x02*Temporalio::Internal::Bridge::Api::Streamsb\x06proto3' ) _STREAMOWNERKIND = DESCRIPTOR.enum_types_by_name["StreamOwnerKind"] @@ -848,14 +848,14 @@ DESCRIPTOR._serialized_options = ( b"\352\002*Temporalio::Internal::Bridge::Api::Streams" ) - _STREAMOWNERKIND._serialized_start = 9426 - _STREAMOWNERKIND._serialized_end = 9583 - _STREAMFAILUREKIND._serialized_start = 9586 - _STREAMFAILUREKIND._serialized_end = 10160 - _RESOLVEDACTIVITYOUTCOME._serialized_start = 10163 - _RESOLVEDACTIVITYOUTCOME._serialized_end = 10351 - _WORKFLOWTERMINALCOMMAND._serialized_start = 10354 - _WORKFLOWTERMINALCOMMAND._serialized_end = 10583 + _STREAMOWNERKIND._serialized_start = 9494 + _STREAMOWNERKIND._serialized_end = 9651 + _STREAMFAILUREKIND._serialized_start = 9654 + _STREAMFAILUREKIND._serialized_end = 10228 + _RESOLVEDACTIVITYOUTCOME._serialized_start = 10231 + _RESOLVEDACTIVITYOUTCOME._serialized_end = 10419 + _WORKFLOWTERMINALCOMMAND._serialized_start = 10422 + _WORKFLOWTERMINALCOMMAND._serialized_end = 10651 _STREAMSTORECONFIG._serialized_start = 305 _STREAMSTORECONFIG._serialized_end = 569 _REDISSTORECONFIG._serialized_start = 572 @@ -867,123 +867,123 @@ _CHAINID._serialized_start = 1138 _CHAINID._serialized_end = 1284 _NAMEDPRODUCER._serialized_start = 1286 - _NAMEDPRODUCER._serialized_end = 1339 - _ACTIVITYPRODUCER._serialized_start = 1342 - _ACTIVITYPRODUCER._serialized_end = 1493 - _APPENDRECORD._serialized_start = 1496 - _APPENDRECORD._serialized_end = 1687 - _APPENDREQUEST._serialized_start = 1690 - _APPENDREQUEST._serialized_end = 1951 - _APPENDRESPONSE._serialized_start = 1953 - _APPENDRESPONSE._serialized_end = 2012 - _READREQUEST._serialized_start = 2015 - _READREQUEST._serialized_end = 2273 - _READSUBSCRIBER._serialized_start = 2275 - _READSUBSCRIBER._serialized_end = 2373 - _SUPERSESSION._serialized_start = 2375 - _SUPERSESSION._serialized_end = 2468 - _READRECORD._serialized_start = 2471 - _READRECORD._serialized_end = 2634 - _READRESPONSE._serialized_start = 2637 - _READRESPONSE._serialized_end = 2980 - _READRANGEREQUEST._serialized_start = 2983 - _READRANGEREQUEST._serialized_end = 3213 - _RELEASEFLOORREQUEST._serialized_start = 3215 - _RELEASEFLOORREQUEST._serialized_end = 3334 - _RELEASEFLOORRESPONSE._serialized_start = 3336 - _RELEASEFLOORRESPONSE._serialized_end = 3358 - _FOLLOWREQUEST._serialized_start = 3361 - _FOLLOWREQUEST._serialized_end = 3630 - _FOLLOWSUBSCRIBER._serialized_start = 3632 - _FOLLOWSUBSCRIBER._serialized_end = 3736 - _FOLLOWEDRECORD._serialized_start = 3739 - _FOLLOWEDRECORD._serialized_end = 3876 - _LINKSTATE._serialized_start = 3879 - _LINKSTATE._serialized_end = 4265 - _LINKSTATE_KIND._serialized_start = 4165 - _LINKSTATE_KIND._serialized_end = 4265 - _FOLLOWSOURCE._serialized_start = 4267 - _FOLLOWSOURCE._serialized_end = 4390 - _SOURCERANGE._serialized_start = 4393 - _SOURCERANGE._serialized_end = 4751 - _SOURCEWAKE._serialized_start = 4753 - _SOURCEWAKE._serialized_end = 4826 - _FOLLOWRESPONSE._serialized_start = 4829 - _FOLLOWRESPONSE._serialized_end = 5197 - _FOLLOWRANGEREQUEST._serialized_start = 5200 - _FOLLOWRANGEREQUEST._serialized_end = 5414 - _LATESTREQUEST._serialized_start = 5416 - _LATESTREQUEST._serialized_end = 5479 - _LATESTRESPONSE._serialized_start = 5481 - _LATESTRESPONSE._serialized_end = 5513 - _CLOSEREQUEST._serialized_start = 5516 - _CLOSEREQUEST._serialized_end = 5697 - _STOREDCLOSE._serialized_start = 5700 - _STOREDCLOSE._serialized_end = 5832 - _CLOSERESPONSE._serialized_start = 5834 - _CLOSERESPONSE._serialized_end = 5849 - _FLUSHNOTIFICATIONSREQUEST._serialized_start = 5851 - _FLUSHNOTIFICATIONSREQUEST._serialized_end = 5878 - _FLUSHNOTIFICATIONSRESPONSE._serialized_start = 5880 - _FLUSHNOTIFICATIONSRESPONSE._serialized_end = 5908 - _SUBSCRIBEREQUEST._serialized_start = 5911 - _SUBSCRIBEREQUEST._serialized_end = 6059 - _SUBSCRIBERESPONSE._serialized_start = 6061 - _SUBSCRIBERESPONSE._serialized_end = 6150 - _UNSUBSCRIBEREQUEST._serialized_start = 6153 - _UNSUBSCRIBEREQUEST._serialized_end = 6282 - _UNSUBSCRIBERESPONSE._serialized_start = 6284 - _UNSUBSCRIBERESPONSE._serialized_end = 6305 - _WAITFORNOTIFICATIONREQUEST._serialized_start = 6307 - _WAITFORNOTIFICATIONREQUEST._serialized_end = 6406 - _WAITFORNOTIFICATIONRESPONSE._serialized_start = 6409 - _WAITFORNOTIFICATIONRESPONSE._serialized_end = 6620 - _DELETEOWNERREQUEST._serialized_start = 6623 - _DELETEOWNERREQUEST._serialized_end = 6758 - _DELETEOWNERRESPONSE._serialized_start = 6760 - _DELETEOWNERRESPONSE._serialized_end = 6798 - _RETIREPRODUCERREQUEST._serialized_start = 6801 - _RETIREPRODUCERREQUEST._serialized_end = 6988 - _RETIREPRODUCERRESPONSE._serialized_start = 6990 - _RETIREPRODUCERRESPONSE._serialized_end = 7014 - _DESCRIBESTOREREQUEST._serialized_start = 7016 - _DESCRIBESTOREREQUEST._serialized_end = 7038 - _DESCRIBESTORERESPONSE._serialized_start = 7040 - _DESCRIBESTORERESPONSE._serialized_end = 7135 - _STORECAPABILITIES._serialized_start = 7138 - _STORECAPABILITIES._serialized_end = 7459 - _STREAMFAILURE._serialized_start = 7461 - _STREAMFAILURE._serialized_end = 7578 - _STOREAPPENDREQUEST._serialized_start = 7581 - _STOREAPPENDREQUEST._serialized_end = 7746 - _STOREAPPENDRESPONSE._serialized_start = 7748 - _STOREAPPENDRESPONSE._serialized_end = 7827 - _STOREREADREQUEST._serialized_start = 7830 - _STOREREADREQUEST._serialized_end = 8001 - _STOREDRECORD._serialized_start = 8003 - _STOREDRECORD._serialized_end = 8051 - _STOREREADRESPONSE._serialized_start = 8054 - _STOREREADRESPONSE._serialized_end = 8195 - _STORELATESTREQUEST._serialized_start = 8197 - _STORELATESTREQUEST._serialized_end = 8273 - _STORELATESTRESPONSE._serialized_start = 8275 - _STORELATESTRESPONSE._serialized_end = 8314 - _PUBLISHWORKFLOWTASKREQUEST._serialized_start = 8317 - _PUBLISHWORKFLOWTASKREQUEST._serialized_end = 8819 - _RESOLVEDOWNERACTIVITY._serialized_start = 8822 - _RESOLVEDOWNERACTIVITY._serialized_end = 8976 - _OUTPUTRECORD._serialized_start = 8979 - _OUTPUTRECORD._serialized_end = 9185 - _PUBLISHWORKFLOWTASKRESPONSE._serialized_start = 9187 - _PUBLISHWORKFLOWTASKRESPONSE._serialized_end = 9240 - _RUNEVICTEDREQUEST._serialized_start = 9242 - _RUNEVICTEDREQUEST._serialized_end = 9331 - _RUNEVICTEDRESPONSE._serialized_start = 9333 - _RUNEVICTEDRESPONSE._serialized_end = 9353 - _SHUTDOWNWORKERREQUEST._serialized_start = 9355 - _SHUTDOWNWORKERREQUEST._serialized_end = 9397 - _SHUTDOWNWORKERRESPONSE._serialized_start = 9399 - _SHUTDOWNWORKERRESPONSE._serialized_end = 9423 - _STREAMSERVICE._serialized_start = 10586 - _STREAMSERVICE._serialized_end = 12364 + _NAMEDPRODUCER._serialized_end = 1407 + _ACTIVITYPRODUCER._serialized_start = 1410 + _ACTIVITYPRODUCER._serialized_end = 1561 + _APPENDRECORD._serialized_start = 1564 + _APPENDRECORD._serialized_end = 1755 + _APPENDREQUEST._serialized_start = 1758 + _APPENDREQUEST._serialized_end = 2019 + _APPENDRESPONSE._serialized_start = 2021 + _APPENDRESPONSE._serialized_end = 2080 + _READREQUEST._serialized_start = 2083 + _READREQUEST._serialized_end = 2341 + _READSUBSCRIBER._serialized_start = 2343 + _READSUBSCRIBER._serialized_end = 2441 + _SUPERSESSION._serialized_start = 2443 + _SUPERSESSION._serialized_end = 2536 + _READRECORD._serialized_start = 2539 + _READRECORD._serialized_end = 2702 + _READRESPONSE._serialized_start = 2705 + _READRESPONSE._serialized_end = 3048 + _READRANGEREQUEST._serialized_start = 3051 + _READRANGEREQUEST._serialized_end = 3281 + _RELEASEFLOORREQUEST._serialized_start = 3283 + _RELEASEFLOORREQUEST._serialized_end = 3402 + _RELEASEFLOORRESPONSE._serialized_start = 3404 + _RELEASEFLOORRESPONSE._serialized_end = 3426 + _FOLLOWREQUEST._serialized_start = 3429 + _FOLLOWREQUEST._serialized_end = 3698 + _FOLLOWSUBSCRIBER._serialized_start = 3700 + _FOLLOWSUBSCRIBER._serialized_end = 3804 + _FOLLOWEDRECORD._serialized_start = 3807 + _FOLLOWEDRECORD._serialized_end = 3944 + _LINKSTATE._serialized_start = 3947 + _LINKSTATE._serialized_end = 4333 + _LINKSTATE_KIND._serialized_start = 4233 + _LINKSTATE_KIND._serialized_end = 4333 + _FOLLOWSOURCE._serialized_start = 4335 + _FOLLOWSOURCE._serialized_end = 4458 + _SOURCERANGE._serialized_start = 4461 + _SOURCERANGE._serialized_end = 4819 + _SOURCEWAKE._serialized_start = 4821 + _SOURCEWAKE._serialized_end = 4894 + _FOLLOWRESPONSE._serialized_start = 4897 + _FOLLOWRESPONSE._serialized_end = 5265 + _FOLLOWRANGEREQUEST._serialized_start = 5268 + _FOLLOWRANGEREQUEST._serialized_end = 5482 + _LATESTREQUEST._serialized_start = 5484 + _LATESTREQUEST._serialized_end = 5547 + _LATESTRESPONSE._serialized_start = 5549 + _LATESTRESPONSE._serialized_end = 5581 + _CLOSEREQUEST._serialized_start = 5584 + _CLOSEREQUEST._serialized_end = 5765 + _STOREDCLOSE._serialized_start = 5768 + _STOREDCLOSE._serialized_end = 5900 + _CLOSERESPONSE._serialized_start = 5902 + _CLOSERESPONSE._serialized_end = 5917 + _FLUSHNOTIFICATIONSREQUEST._serialized_start = 5919 + _FLUSHNOTIFICATIONSREQUEST._serialized_end = 5946 + _FLUSHNOTIFICATIONSRESPONSE._serialized_start = 5948 + _FLUSHNOTIFICATIONSRESPONSE._serialized_end = 5976 + _SUBSCRIBEREQUEST._serialized_start = 5979 + _SUBSCRIBEREQUEST._serialized_end = 6127 + _SUBSCRIBERESPONSE._serialized_start = 6129 + _SUBSCRIBERESPONSE._serialized_end = 6218 + _UNSUBSCRIBEREQUEST._serialized_start = 6221 + _UNSUBSCRIBEREQUEST._serialized_end = 6350 + _UNSUBSCRIBERESPONSE._serialized_start = 6352 + _UNSUBSCRIBERESPONSE._serialized_end = 6373 + _WAITFORNOTIFICATIONREQUEST._serialized_start = 6375 + _WAITFORNOTIFICATIONREQUEST._serialized_end = 6474 + _WAITFORNOTIFICATIONRESPONSE._serialized_start = 6477 + _WAITFORNOTIFICATIONRESPONSE._serialized_end = 6688 + _DELETEOWNERREQUEST._serialized_start = 6691 + _DELETEOWNERREQUEST._serialized_end = 6826 + _DELETEOWNERRESPONSE._serialized_start = 6828 + _DELETEOWNERRESPONSE._serialized_end = 6866 + _RETIREPRODUCERREQUEST._serialized_start = 6869 + _RETIREPRODUCERREQUEST._serialized_end = 7056 + _RETIREPRODUCERRESPONSE._serialized_start = 7058 + _RETIREPRODUCERRESPONSE._serialized_end = 7082 + _DESCRIBESTOREREQUEST._serialized_start = 7084 + _DESCRIBESTOREREQUEST._serialized_end = 7106 + _DESCRIBESTORERESPONSE._serialized_start = 7108 + _DESCRIBESTORERESPONSE._serialized_end = 7203 + _STORECAPABILITIES._serialized_start = 7206 + _STORECAPABILITIES._serialized_end = 7527 + _STREAMFAILURE._serialized_start = 7529 + _STREAMFAILURE._serialized_end = 7646 + _STOREAPPENDREQUEST._serialized_start = 7649 + _STOREAPPENDREQUEST._serialized_end = 7814 + _STOREAPPENDRESPONSE._serialized_start = 7816 + _STOREAPPENDRESPONSE._serialized_end = 7895 + _STOREREADREQUEST._serialized_start = 7898 + _STOREREADREQUEST._serialized_end = 8069 + _STOREDRECORD._serialized_start = 8071 + _STOREDRECORD._serialized_end = 8119 + _STOREREADRESPONSE._serialized_start = 8122 + _STOREREADRESPONSE._serialized_end = 8263 + _STORELATESTREQUEST._serialized_start = 8265 + _STORELATESTREQUEST._serialized_end = 8341 + _STORELATESTRESPONSE._serialized_start = 8343 + _STORELATESTRESPONSE._serialized_end = 8382 + _PUBLISHWORKFLOWTASKREQUEST._serialized_start = 8385 + _PUBLISHWORKFLOWTASKREQUEST._serialized_end = 8887 + _RESOLVEDOWNERACTIVITY._serialized_start = 8890 + _RESOLVEDOWNERACTIVITY._serialized_end = 9044 + _OUTPUTRECORD._serialized_start = 9047 + _OUTPUTRECORD._serialized_end = 9253 + _PUBLISHWORKFLOWTASKRESPONSE._serialized_start = 9255 + _PUBLISHWORKFLOWTASKRESPONSE._serialized_end = 9308 + _RUNEVICTEDREQUEST._serialized_start = 9310 + _RUNEVICTEDREQUEST._serialized_end = 9399 + _RUNEVICTEDRESPONSE._serialized_start = 9401 + _RUNEVICTEDRESPONSE._serialized_end = 9421 + _SHUTDOWNWORKERREQUEST._serialized_start = 9423 + _SHUTDOWNWORKERREQUEST._serialized_end = 9465 + _SHUTDOWNWORKERRESPONSE._serialized_start = 9467 + _SHUTDOWNWORKERRESPONSE._serialized_end = 9491 + _STREAMSERVICE._serialized_start = 10654 + _STREAMSERVICE._serialized_end = 12432 # @@protoc_insertion_point(module_scope) From 875abe48dd53f52a96b8557740eea7f0c7b0db0d Mon Sep 17 00:00:00 2001 From: Mohammad Dashti Date: Sun, 18 Oct 2026 22:28:37 -0700 Subject: [PATCH 4/6] Matched the Redis ACL line and the store table to the pinned crate. This layer's crate needs hlen, sadd and smembers and offers retention holds, so the docs say so here. --- temporalio/contrib/streams/docs/redis-guarantees.md | 2 +- temporalio/contrib/streams/docs/store-capabilities.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/temporalio/contrib/streams/docs/redis-guarantees.md b/temporalio/contrib/streams/docs/redis-guarantees.md index f153854b6f..68df0f259d 100644 --- a/temporalio/contrib/streams/docs/redis-guarantees.md +++ b/temporalio/contrib/streams/docs/redis-guarantees.md @@ -121,7 +121,7 @@ Every key of a namespace's streams starts with one namespace's applications: ``` -ACL SETUSER streams-app on >secret resetkeys ~temporal-streams:{my-ns:* resetchannels -@all +evalsha +eval +script|load +multi +exec +xadd +xread +xrevrange +xrange +xtrim +xlen +hget +hset +hgetall +hincrby +hdel +hscan +rpush +lrange +exists +del +unlink +pexpire +pttl +time +info +config|get +ping +hello +client|setinfo +cluster|slots +ACL SETUSER streams-app on >secret resetkeys ~temporal-streams:{my-ns:* resetchannels -@all +evalsha +eval +script|load +multi +exec +xadd +xread +xrevrange +xrange +xtrim +xlen +hget +hset +hgetall +hlen +hincrby +hdel +hscan +sadd +smembers +rpush +lrange +exists +del +unlink +pexpire +pttl +time +info +config|get +ping +hello +client|setinfo +cluster|slots ``` The stream runtime's conformance suite runs as a user with exactly these diff --git a/temporalio/contrib/streams/docs/store-capabilities.md b/temporalio/contrib/streams/docs/store-capabilities.md index d8d7dc940f..f170780afa 100644 --- a/temporalio/contrib/streams/docs/store-capabilities.md +++ b/temporalio/contrib/streams/docs/store-capabilities.md @@ -79,8 +79,8 @@ Y means the store has it, and N means the stream runtime takes the fallback. | Store | Producer state | Kept last | Holds | Change feed | Cheap logs | Delete | Listing | Long poll | |---|---|---|---|---|---|---|---|---| -| `MemoryStreams()` | Y | Y | N | N | Y | Y | Y | Y | -| `RedisStreams(...)` | Y | Y | N | N | Y | Y | Y | Y | +| `MemoryStreams()` | Y | Y | Y | N | Y | Y | Y | Y | +| `RedisStreams(...)` | Y | Y | Y | N | Y | Y | Y | Y | | `RedisStreams(..., plain=True)` | N | N | N | N | Y | Y | Y | Y | `RedisStreams(plain=True)` runs no Lua scripts. Use it on a Redis that From 2e2cb31d6d190da8df6051870644ad50a3ef1818 Mon Sep 17 00:00:00 2001 From: Mohammad Dashti Date: Sun, 18 Oct 2026 22:28:43 -0700 Subject: [PATCH 5/6] Raised the replay errors for the failure kinds the pinned crate adds. Each failure kind of this layer's crate must map to its own error. --- temporalio/contrib/streams/__init__.py | 4 ++++ temporalio/contrib/streams/_errors.py | 21 ++++++++++++++++++++ tests/contrib/streams/test_errors_cursors.py | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/temporalio/contrib/streams/__init__.py b/temporalio/contrib/streams/__init__.py index 7fce16b106..9cebf91961 100644 --- a/temporalio/contrib/streams/__init__.py +++ b/temporalio/contrib/streams/__init__.py @@ -77,6 +77,8 @@ StreamProducerError, StreamRecordError, StreamRefusedError, + StreamReplayMismatchError, + StreamReplayRangeLostError, StreamStorageError, StreamUnsupportedError, ) @@ -141,6 +143,8 @@ "StreamRecordError", "StreamRef", "StreamRefusedError", + "StreamReplayMismatchError", + "StreamReplayRangeLostError", "StreamStorageError", "StreamStorePlugin", "StreamTopic", diff --git a/temporalio/contrib/streams/_errors.py b/temporalio/contrib/streams/_errors.py index 8e38141b1b..6f4b1f85ef 100644 --- a/temporalio/contrib/streams/_errors.py +++ b/temporalio/contrib/streams/_errors.py @@ -35,6 +35,8 @@ "StreamProducerError", "StreamRecordError", "StreamRefusedError", + "StreamReplayMismatchError", + "StreamReplayRangeLostError", "StreamStorageError", "StreamUnsupportedError", ] @@ -143,6 +145,23 @@ class StreamUnsupportedError(StreamError): """The capability is not offered by this release or by this store.""" +class StreamReplayMismatchError(StreamError): + """A replay read found other records than the read it repeats. + + Other content, another count or another end. A positions-only Workflow + reader reports it as nondeterminism, so the Workflow Task fails. + """ + + +class StreamReplayRangeLostError(StreamError): + """A replay read found that the store no longer holds the range it repeats. + + Retention trimmed the records, or the stream was deleted. The Workflow + Task fails and is retried, so an operator can restore the store, reset + the Workflow past the read, or replay with recorded batches. + """ + + _BY_KIND: dict[int, type[StreamError]] = { StreamFailureKind.STREAM_FAILURE_KIND_PRODUCER_DIVERGENT: StreamProducerError, StreamFailureKind.STREAM_FAILURE_KIND_PRODUCER_STALE: StreamProducerError, @@ -154,6 +173,8 @@ class StreamUnsupportedError(StreamError): StreamFailureKind.STREAM_FAILURE_KIND_NOT_FOUND: StreamNotFoundError, StreamFailureKind.STREAM_FAILURE_KIND_STORAGE: StreamStorageError, StreamFailureKind.STREAM_FAILURE_KIND_UNSUPPORTED: StreamUnsupportedError, + StreamFailureKind.STREAM_FAILURE_KIND_REPLAY_MISMATCH: StreamReplayMismatchError, + StreamFailureKind.STREAM_FAILURE_KIND_REPLAY_RANGE_LOST: StreamReplayRangeLostError, } diff --git a/tests/contrib/streams/test_errors_cursors.py b/tests/contrib/streams/test_errors_cursors.py index f955d1e29e..31c5e30453 100644 --- a/tests/contrib/streams/test_errors_cursors.py +++ b/tests/contrib/streams/test_errors_cursors.py @@ -16,6 +16,8 @@ StreamProducerError, StreamRecordError, StreamRefusedError, + StreamReplayMismatchError, + StreamReplayRangeLostError, StreamStorageError, StreamUnsupportedError, ) @@ -65,6 +67,8 @@ def test_each_core_failure_kind_raises_its_error(): StreamFailureKind.STREAM_FAILURE_KIND_STORAGE: StreamStorageError, StreamFailureKind.STREAM_FAILURE_KIND_UNSUPPORTED: StreamUnsupportedError, StreamFailureKind.STREAM_FAILURE_KIND_INVALID_ARGUMENT: ValueError, + StreamFailureKind.STREAM_FAILURE_KIND_REPLAY_MISMATCH: StreamReplayMismatchError, + StreamFailureKind.STREAM_FAILURE_KIND_REPLAY_RANGE_LOST: StreamReplayRangeLostError, } # Every kind the stream runtime defines has its error, so a new kind fails # here first. From 2b4a10effd8c806e23ce23ef2a899ab1ea988df6 Mon Sep 17 00:00:00 2001 From: Mohammad Dashti Date: Mon, 19 Oct 2026 12:02:11 -0700 Subject: [PATCH 6/6] Left the retry follow test to h11, since the J1 pin predates the rule. The Jetty and Bridge layers pin a crate head without the withdrawn segment rule, and the crate's own follow tests cover it. --- tests/contrib/streams/test_follow.py | 42 ---------------------------- 1 file changed, 42 deletions(-) diff --git a/tests/contrib/streams/test_follow.py b/tests/contrib/streams/test_follow.py index b69725582d..777c5284b3 100644 --- a/tests/contrib/streams/test_follow.py +++ b/tests/contrib/streams/test_follow.py @@ -238,48 +238,6 @@ async def test_a_link_back_to_an_open_stream_is_a_cycle(client: Client): ] -async def test_a_retry_that_writes_the_same_open_resumes_the_child(client: Client): - streams = await connect_with(client, MemoryStreams()) - async with new_worker(streams, Waits) as worker: - agent_id = await running_owner(streams, worker.task_queue) - child_id = await running_owner(streams, worker.task_queue) - agent = stream_handle(streams, agent_id, topic=EVENTS) - child = stream_handle(streams, child_id, topic=EVENTS) - await child.producer(producer_id="c", attempt=1).append("c1", "c2") - for attempt in (1, 2): - writes = agent.producer(producer_id="tool", attempt=attempt) - await writes.append(f"m{attempt}") - await writes.link(child.ref, name="child") - for workflow_id in (child_id, agent_id): - owner = streams.get_workflow_handle(workflow_id) - await owner.signal(Waits.finish) - await owner.result() - items = await collect(agent.follow()) - assert shape(items) == [ - "m1", - "OPEN:child", - "OPENED:child", - "DONE:child:withdrawn", - "m2", - "OPEN:child", - "OPENED:child:resumed", - "c1", - "c2", - "DONE:child", - ] - states = [item for item in items if item.link_state is not None] - assert [item.link_state.reason for item in states if item.link_state] == [ - "", - "withdrawn", - "resumed", - "", - ] - assert len({item.source for item in states}) == 1, "the child keeps its source" - assert any( - item.record and item.record.kind is RecordKind.SUPERSEDED for item in items - ) - - async def test_a_missing_child_is_unavailable_after_the_grace(client: Client): streams = await connect_with(client, MemoryStreams(owner_start_grace=timedelta(0))) async with new_worker(streams, Waits) as worker: