diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f8a2a95aa..dc398cad4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,6 +107,13 @@ to include examples, links to docs, or any other relevant information. ### Fixed +- Resume external input waits when cold replay encounters a wake in an already + loaded History page, including Workers with workflow caching disabled. +- Avoid an unnecessary output replacement Workflow Task after stream input has + resumed the Workflow and it is waiting on an Activity or timer. +- Keep an incomplete retained external stream task alive when workflow caching + is disabled; evict it after its normal task boundary instead of repeatedly + interrupting input readiness with shutdown markers. - `GoogleAdkPlugin` now passes the optional `anthropic`, `litellm`, and `openai` SDKs through the workflow sandbox. - `contrib.deepagents`: prevent duplicate input messages after continue-as-new. diff --git a/temporalio/bridge/proto/core_interface_pb2.py b/temporalio/bridge/proto/core_interface_pb2.py index 19f330433a..e7343abbe6 100644 --- a/temporalio/bridge/proto/core_interface_pb2.py +++ b/temporalio/bridge/proto/core_interface_pb2.py @@ -33,6 +33,9 @@ from temporalio.bridge.proto.external_data import ( external_data_pb2 as temporal_dot_sdk_dot_core_dot_external__data_dot_external__data__pb2, ) +from temporalio.bridge.proto.external_stream import ( + external_stream_pb2 as temporal_dot_sdk_dot_core_dot_external__stream_dot_external__stream__pb2, +) from temporalio.bridge.proto.workflow_activation import ( workflow_activation_pb2 as temporal_dot_sdk_dot_core_dot_workflow__activation_dot_workflow__activation__pb2, ) @@ -44,7 +47,7 @@ ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n&temporal/sdk/core/core_interface.proto\x12\x07\x63oresdk\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a\x37temporal/sdk/core/activity_result/activity_result.proto\x1a\x33temporal/sdk/core/activity_task/activity_task.proto\x1a%temporal/sdk/core/common/common.proto\x1a\x33temporal/sdk/core/external_data/external_data.proto\x1a?temporal/sdk/core/workflow_activation/workflow_activation.proto\x1a;temporal/sdk/core/workflow_commands/workflow_commands.proto\x1a?temporal/sdk/core/workflow_completion/workflow_completion.proto"Y\n\x11\x41\x63tivityHeartbeat\x12\x12\n\ntask_token\x18\x01 \x01(\x0c\x12\x30\n\x07\x64\x65tails\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload"n\n\x16\x41\x63tivityTaskCompletion\x12\x12\n\ntask_token\x18\x01 \x01(\x0c\x12@\n\x06result\x18\x02 \x01(\x0b\x32\x30.coresdk.activity_result.ActivityExecutionResult"<\n\x10WorkflowSlotInfo\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x11\n\tis_sticky\x18\x02 \x01(\x08")\n\x10\x41\x63tivitySlotInfo\x12\x15\n\ractivity_type\x18\x01 \x01(\t".\n\x15LocalActivitySlotInfo\x12\x15\n\ractivity_type\x18\x01 \x01(\t"3\n\rNexusSlotInfo\x12\x0f\n\x07service\x18\x01 \x01(\t\x12\x11\n\toperation\x18\x02 \x01(\t"\x86\x01\n\rNamespaceInfo\x12-\n\x06limits\x18\x01 \x01(\x0b\x32\x1d.coresdk.NamespaceInfo.Limits\x1a\x46\n\x06Limits\x12\x1d\n\x15\x62lob_size_limit_error\x18\x01 \x01(\x03\x12\x1d\n\x15memo_size_limit_error\x18\x02 \x01(\x03\x42\x33\xea\x02\x30Temporalio::Internal::Bridge::Api::CoreInterfaceb\x06proto3' + b'\n&temporal/sdk/core/core_interface.proto\x12\x07\x63oresdk\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a$temporal/api/common/v1/message.proto\x1a\x37temporal/sdk/core/activity_result/activity_result.proto\x1a\x33temporal/sdk/core/activity_task/activity_task.proto\x1a%temporal/sdk/core/common/common.proto\x1a\x33temporal/sdk/core/external_data/external_data.proto\x1a\x37temporal/sdk/core/external_stream/external_stream.proto\x1a?temporal/sdk/core/workflow_activation/workflow_activation.proto\x1a;temporal/sdk/core/workflow_commands/workflow_commands.proto\x1a?temporal/sdk/core/workflow_completion/workflow_completion.proto"Y\n\x11\x41\x63tivityHeartbeat\x12\x12\n\ntask_token\x18\x01 \x01(\x0c\x12\x30\n\x07\x64\x65tails\x18\x02 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload"n\n\x16\x41\x63tivityTaskCompletion\x12\x12\n\ntask_token\x18\x01 \x01(\x0c\x12@\n\x06result\x18\x02 \x01(\x0b\x32\x30.coresdk.activity_result.ActivityExecutionResult"<\n\x10WorkflowSlotInfo\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x11\n\tis_sticky\x18\x02 \x01(\x08")\n\x10\x41\x63tivitySlotInfo\x12\x15\n\ractivity_type\x18\x01 \x01(\t".\n\x15LocalActivitySlotInfo\x12\x15\n\ractivity_type\x18\x01 \x01(\t"3\n\rNexusSlotInfo\x12\x0f\n\x07service\x18\x01 \x01(\t\x12\x11\n\toperation\x18\x02 \x01(\t"\x86\x01\n\rNamespaceInfo\x12-\n\x06limits\x18\x01 \x01(\x0b\x32\x1d.coresdk.NamespaceInfo.Limits\x1a\x46\n\x06Limits\x12\x1d\n\x15\x62lob_size_limit_error\x18\x01 \x01(\x03\x12\x1d\n\x15memo_size_limit_error\x18\x02 \x01(\x03\x42\x33\xea\x02\x30Temporalio::Internal::Bridge::Api::CoreInterfaceb\x06proto3' ) @@ -148,20 +151,20 @@ DESCRIPTOR._serialized_options = ( b"\352\0020Temporalio::Internal::Bridge::Api::CoreInterface" ) - _ACTIVITYHEARTBEAT._serialized_start = 576 - _ACTIVITYHEARTBEAT._serialized_end = 665 - _ACTIVITYTASKCOMPLETION._serialized_start = 667 - _ACTIVITYTASKCOMPLETION._serialized_end = 777 - _WORKFLOWSLOTINFO._serialized_start = 779 - _WORKFLOWSLOTINFO._serialized_end = 839 - _ACTIVITYSLOTINFO._serialized_start = 841 - _ACTIVITYSLOTINFO._serialized_end = 882 - _LOCALACTIVITYSLOTINFO._serialized_start = 884 - _LOCALACTIVITYSLOTINFO._serialized_end = 930 - _NEXUSSLOTINFO._serialized_start = 932 - _NEXUSSLOTINFO._serialized_end = 983 - _NAMESPACEINFO._serialized_start = 986 - _NAMESPACEINFO._serialized_end = 1120 - _NAMESPACEINFO_LIMITS._serialized_start = 1050 - _NAMESPACEINFO_LIMITS._serialized_end = 1120 + _ACTIVITYHEARTBEAT._serialized_start = 633 + _ACTIVITYHEARTBEAT._serialized_end = 722 + _ACTIVITYTASKCOMPLETION._serialized_start = 724 + _ACTIVITYTASKCOMPLETION._serialized_end = 834 + _WORKFLOWSLOTINFO._serialized_start = 836 + _WORKFLOWSLOTINFO._serialized_end = 896 + _ACTIVITYSLOTINFO._serialized_start = 898 + _ACTIVITYSLOTINFO._serialized_end = 939 + _LOCALACTIVITYSLOTINFO._serialized_start = 941 + _LOCALACTIVITYSLOTINFO._serialized_end = 987 + _NEXUSSLOTINFO._serialized_start = 989 + _NEXUSSLOTINFO._serialized_end = 1040 + _NAMESPACEINFO._serialized_start = 1043 + _NAMESPACEINFO._serialized_end = 1177 + _NAMESPACEINFO_LIMITS._serialized_start = 1107 + _NAMESPACEINFO_LIMITS._serialized_end = 1177 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/external_data/__init__.py b/temporalio/bridge/proto/external_data/__init__.py index 836e97ef43..28f6b487a9 100644 --- a/temporalio/bridge/proto/external_data/__init__.py +++ b/temporalio/bridge/proto/external_data/__init__.py @@ -1,6 +1,21 @@ -from .external_data_pb2 import LocalActivityMarkerData, PatchedMarkerData +from .external_data_pb2 import ( + ExternalOutputSegmentManifest, + ExternalOutputStreamManifest, + ExternalOutputTopicManifest, + ExternalStreamMarkerData, + ExternalWaitMarker, + LocalActivityMarkerData, + ParkReason, + PatchedMarkerData, +) __all__ = [ + "ExternalOutputSegmentManifest", + "ExternalOutputStreamManifest", + "ExternalOutputTopicManifest", + "ExternalStreamMarkerData", + "ExternalWaitMarker", "LocalActivityMarkerData", + "ParkReason", "PatchedMarkerData", ] diff --git a/temporalio/bridge/proto/external_data/external_data_pb2.py b/temporalio/bridge/proto/external_data/external_data_pb2.py index e8070efa79..07a8534cb6 100644 --- a/temporalio/bridge/proto/external_data/external_data_pb2.py +++ b/temporalio/bridge/proto/external_data/external_data_pb2.py @@ -8,6 +8,7 @@ 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) @@ -18,12 +19,37 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n3temporal/sdk/core/external_data/external_data.proto\x12\x15\x63oresdk.external_data\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\xfe\x01\n\x17LocalActivityMarkerData\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x03 \x01(\t\x12\x15\n\ractivity_type\x18\x04 \x01(\t\x12\x31\n\rcomplete_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12*\n\x07\x62\x61\x63koff\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n\x16original_schedule_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"3\n\x11PatchedMarkerData\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08\x42\x32\xea\x02/Temporalio::Internal::Bridge::Api::ExternalDatab\x06proto3' + b'\n3temporal/sdk/core/external_data/external_data.proto\x12\x15\x63oresdk.external_data\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto"\xfe\x01\n\x17LocalActivityMarkerData\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x0f\n\x07\x61ttempt\x18\x02 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x03 \x01(\t\x12\x15\n\ractivity_type\x18\x04 \x01(\t\x12\x31\n\rcomplete_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12*\n\x07\x62\x61\x63koff\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12:\n\x16original_schedule_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp"3\n\x11PatchedMarkerData\x12\n\n\x02id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08"\xa9\x02\n\x18\x45xternalStreamMarkerData\x12\x16\n\x0eschema_version\x18\x01 \x01(\r\x12\x1d\n\x15quiescence_generation\x18\x02 \x01(\x04\x12\x38\n\x05waits\x18\x03 \x03(\x0b\x32).coresdk.external_data.ExternalWaitMarker\x12\x19\n\x11replay_annotation\x18\x04 \x01(\x0c\x12<\n\x11terminal_boundary\x18\x05 \x01(\x0e\x32!.coresdk.external_data.ParkReason\x12\x43\n\x06output\x18\x06 \x01(\x0b\x32\x33.coresdk.external_data.ExternalOutputStreamManifest"9\n\x12\x45xternalWaitMarker\x12\x0f\n\x07wait_id\x18\x01 \x01(\r\x12\x12\n\ngeneration\x18\x02 \x01(\x04"\xda\x02\n\x1c\x45xternalOutputStreamManifest\x12\x16\n\x0eschema_version\x18\x01 \x01(\r\x12\x1b\n\x13\x66ingerprint_version\x18\x02 \x01(\r\x12\x13\n\x0bstage_token\x18\x03 \x01(\t\x12\x1e\n\x16history_floor_event_id\x18\x04 \x01(\x03\x12\x0e\n\x06run_id\x18\x05 \x01(\t\x12\x42\n\x06topics\x18\x06 \x03(\x0b\x32\x32.coresdk.external_data.ExternalOutputTopicManifest\x12\x46\n\x08segments\x18\x07 \x03(\x0b\x32\x34.coresdk.external_data.ExternalOutputSegmentManifest\x12\x13\n\x0bprovider_id\x18\x08 \x01(\t\x12\x1f\n\x17provider_format_version\x18\t \x01(\r"\x8d\x01\n\x1b\x45xternalOutputTopicManifest\x12\r\n\x05topic\x18\x01 \x01(\t\x12\x14\n\x0crecord_count\x18\x02 \x01(\r\x12\x1a\n\x12logical_byte_count\x18\x03 \x01(\x04\x12\x1b\n\x13logical_fingerprint\x18\x04 \x01(\x0c\x12\x10\n\x08\x66inished\x18\x05 \x01(\x08"?\n\x1d\x45xternalOutputSegmentManifest\x12\x1e\n\x16record_counts_by_topic\x18\x01 \x03(\r*\xde\x02\n\nParkReason\x12\x1b\n\x17PARK_REASON_UNSPECIFIED\x10\x00\x12\x14\n\x10PARK_REASON_IDLE\x10\x01\x12 \n\x1cPARK_REASON_ALL_WRITE_FENCED\x10\x02\x12\x18\n\x14PARK_REASON_SHUTDOWN\x10\x03\x12\x18\n\x14PARK_REASON_ROLLOVER\x10\x04\x12\x1f\n\x1bPARK_REASON_BUDGET_ROLLOVER\x10\x05\x12!\n\x1dPARK_REASON_COMMANDS_PRODUCED\x10\x06\x12"\n\x1ePARK_REASON_WORKFLOW_COMPLETED\x10\x07\x12\x1e\n\x1aPARK_REASON_TASK_COMPLETED\x10\x08\x12\x1e\n\x1aPARK_REASON_OUTPUT_LATENCY\x10\t\x12\x1f\n\x1bPARK_REASON_OUTPUT_CAPACITY\x10\nB2\xea\x02/Temporalio::Internal::Bridge::Api::ExternalDatab\x06proto3' ) +_PARKREASON = DESCRIPTOR.enum_types_by_name["ParkReason"] +ParkReason = enum_type_wrapper.EnumTypeWrapper(_PARKREASON) +PARK_REASON_UNSPECIFIED = 0 +PARK_REASON_IDLE = 1 +PARK_REASON_ALL_WRITE_FENCED = 2 +PARK_REASON_SHUTDOWN = 3 +PARK_REASON_ROLLOVER = 4 +PARK_REASON_BUDGET_ROLLOVER = 5 +PARK_REASON_COMMANDS_PRODUCED = 6 +PARK_REASON_WORKFLOW_COMPLETED = 7 +PARK_REASON_TASK_COMPLETED = 8 +PARK_REASON_OUTPUT_LATENCY = 9 +PARK_REASON_OUTPUT_CAPACITY = 10 + _LOCALACTIVITYMARKERDATA = DESCRIPTOR.message_types_by_name["LocalActivityMarkerData"] _PATCHEDMARKERDATA = DESCRIPTOR.message_types_by_name["PatchedMarkerData"] +_EXTERNALSTREAMMARKERDATA = DESCRIPTOR.message_types_by_name["ExternalStreamMarkerData"] +_EXTERNALWAITMARKER = DESCRIPTOR.message_types_by_name["ExternalWaitMarker"] +_EXTERNALOUTPUTSTREAMMANIFEST = DESCRIPTOR.message_types_by_name[ + "ExternalOutputStreamManifest" +] +_EXTERNALOUTPUTTOPICMANIFEST = DESCRIPTOR.message_types_by_name[ + "ExternalOutputTopicManifest" +] +_EXTERNALOUTPUTSEGMENTMANIFEST = DESCRIPTOR.message_types_by_name[ + "ExternalOutputSegmentManifest" +] LocalActivityMarkerData = _reflection.GeneratedProtocolMessageType( "LocalActivityMarkerData", (_message.Message,), @@ -46,13 +72,80 @@ ) _sym_db.RegisterMessage(PatchedMarkerData) +ExternalStreamMarkerData = _reflection.GeneratedProtocolMessageType( + "ExternalStreamMarkerData", + (_message.Message,), + { + "DESCRIPTOR": _EXTERNALSTREAMMARKERDATA, + "__module__": "temporal.sdk.core.external_data.external_data_pb2", + # @@protoc_insertion_point(class_scope:coresdk.external_data.ExternalStreamMarkerData) + }, +) +_sym_db.RegisterMessage(ExternalStreamMarkerData) + +ExternalWaitMarker = _reflection.GeneratedProtocolMessageType( + "ExternalWaitMarker", + (_message.Message,), + { + "DESCRIPTOR": _EXTERNALWAITMARKER, + "__module__": "temporal.sdk.core.external_data.external_data_pb2", + # @@protoc_insertion_point(class_scope:coresdk.external_data.ExternalWaitMarker) + }, +) +_sym_db.RegisterMessage(ExternalWaitMarker) + +ExternalOutputStreamManifest = _reflection.GeneratedProtocolMessageType( + "ExternalOutputStreamManifest", + (_message.Message,), + { + "DESCRIPTOR": _EXTERNALOUTPUTSTREAMMANIFEST, + "__module__": "temporal.sdk.core.external_data.external_data_pb2", + # @@protoc_insertion_point(class_scope:coresdk.external_data.ExternalOutputStreamManifest) + }, +) +_sym_db.RegisterMessage(ExternalOutputStreamManifest) + +ExternalOutputTopicManifest = _reflection.GeneratedProtocolMessageType( + "ExternalOutputTopicManifest", + (_message.Message,), + { + "DESCRIPTOR": _EXTERNALOUTPUTTOPICMANIFEST, + "__module__": "temporal.sdk.core.external_data.external_data_pb2", + # @@protoc_insertion_point(class_scope:coresdk.external_data.ExternalOutputTopicManifest) + }, +) +_sym_db.RegisterMessage(ExternalOutputTopicManifest) + +ExternalOutputSegmentManifest = _reflection.GeneratedProtocolMessageType( + "ExternalOutputSegmentManifest", + (_message.Message,), + { + "DESCRIPTOR": _EXTERNALOUTPUTSEGMENTMANIFEST, + "__module__": "temporal.sdk.core.external_data.external_data_pb2", + # @@protoc_insertion_point(class_scope:coresdk.external_data.ExternalOutputSegmentManifest) + }, +) +_sym_db.RegisterMessage(ExternalOutputSegmentManifest) + if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = ( b"\352\002/Temporalio::Internal::Bridge::Api::ExternalData" ) + _PARKREASON._serialized_start = 1371 + _PARKREASON._serialized_end = 1721 _LOCALACTIVITYMARKERDATA._serialized_start = 144 _LOCALACTIVITYMARKERDATA._serialized_end = 398 _PATCHEDMARKERDATA._serialized_start = 400 _PATCHEDMARKERDATA._serialized_end = 451 + _EXTERNALSTREAMMARKERDATA._serialized_start = 454 + _EXTERNALSTREAMMARKERDATA._serialized_end = 751 + _EXTERNALWAITMARKER._serialized_start = 753 + _EXTERNALWAITMARKER._serialized_end = 810 + _EXTERNALOUTPUTSTREAMMANIFEST._serialized_start = 813 + _EXTERNALOUTPUTSTREAMMANIFEST._serialized_end = 1159 + _EXTERNALOUTPUTTOPICMANIFEST._serialized_start = 1162 + _EXTERNALOUTPUTTOPICMANIFEST._serialized_end = 1303 + _EXTERNALOUTPUTSEGMENTMANIFEST._serialized_start = 1305 + _EXTERNALOUTPUTSEGMENTMANIFEST._serialized_end = 1368 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/external_data/external_data_pb2.pyi b/temporalio/bridge/proto/external_data/external_data_pb2.pyi index a1d29e39d8..07d07deaa3 100644 --- a/temporalio/bridge/proto/external_data/external_data_pb2.pyi +++ b/temporalio/bridge/proto/external_data/external_data_pb2.pyi @@ -4,20 +4,109 @@ isort:skip_file """ import builtins +import collections.abc import sys +import typing import google.protobuf.descriptor 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 -if sys.version_info >= (3, 8): +if sys.version_info >= (3, 10): import typing as typing_extensions else: import typing_extensions DESCRIPTOR: google.protobuf.descriptor.FileDescriptor +class _ParkReason: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _ParkReasonEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ParkReason.ValueType], + builtins.type, +): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + PARK_REASON_UNSPECIFIED: _ParkReason.ValueType # 0 + PARK_REASON_IDLE: _ParkReason.ValueType # 1 + """The global quiescence timer expired with no record on any active wait.""" + PARK_REASON_ALL_WRITE_FENCED: _ParkReason.ValueType # 2 + """Every active wait in the quiescent snapshot reached a write fence with no later record + immediately available, so the idle delay was bypassed. + """ + PARK_REASON_SHUTDOWN: _ParkReason.ValueType # 3 + """The Worker is shutting down or the Run is being evicted while a Workflow Task is open.""" + PARK_REASON_ROLLOVER: _ParkReason.ValueType # 4 + """The Workflow Task rollover deadline expired. Core decided this one, so the terminal came + back through FinalizeExternalStreams. + """ + PARK_REASON_BUDGET_ROLLOVER: _ParkReason.ValueType # 5 + """The annotation reached its byte budget high-water mark and lang asked for a rollover. Unlike + PARK_REASON_ROLLOVER this needs no finalization round trip: the triggering + WorkflowStreamProgress already carried the terminal. + """ + PARK_REASON_COMMANDS_PRODUCED: _ParkReason.ValueType # 6 + """The completion carried server-bound commands (timer, activity, child workflow, signal), so + the Workflow Task completed normally with subscriptions left active and unparked. + """ + PARK_REASON_WORKFLOW_COMPLETED: _ParkReason.ValueType # 7 + """The completion carried a terminal command -- complete, fail, cancel, or continue-as-new.""" + PARK_REASON_TASK_COMPLETED: _ParkReason.ValueType # 8 + """The Workflow Task completed normally with nothing else to report: records were consumed and + no stream wait remained pending. Distinct from PARK_REASON_COMMANDS_PRODUCED so the marker + says which of the two it actually was rather than implying commands that never existed. + """ + PARK_REASON_OUTPUT_LATENCY: _ParkReason.ValueType # 9 + """The Workflow Task's output visibility deadline expired.""" + PARK_REASON_OUTPUT_CAPACITY: _ParkReason.ValueType # 10 + """The staged output reached its deterministic record or logical-byte capacity.""" + +class ParkReason(_ParkReason, metaclass=_ParkReasonEnumTypeWrapper): + """Why a Workflow Task holding external stream waits ended. Core knows the reason on every + completion path -- it either decided the boundary itself or was told -- which is why this + lives here, in the Core-readable marker envelope, and is deliberately *not* duplicated inside + the opaque replay annotation where a second copy could disagree with this one. + """ + +PARK_REASON_UNSPECIFIED: ParkReason.ValueType # 0 +PARK_REASON_IDLE: ParkReason.ValueType # 1 +"""The global quiescence timer expired with no record on any active wait.""" +PARK_REASON_ALL_WRITE_FENCED: ParkReason.ValueType # 2 +"""Every active wait in the quiescent snapshot reached a write fence with no later record +immediately available, so the idle delay was bypassed. +""" +PARK_REASON_SHUTDOWN: ParkReason.ValueType # 3 +"""The Worker is shutting down or the Run is being evicted while a Workflow Task is open.""" +PARK_REASON_ROLLOVER: ParkReason.ValueType # 4 +"""The Workflow Task rollover deadline expired. Core decided this one, so the terminal came +back through FinalizeExternalStreams. +""" +PARK_REASON_BUDGET_ROLLOVER: ParkReason.ValueType # 5 +"""The annotation reached its byte budget high-water mark and lang asked for a rollover. Unlike +PARK_REASON_ROLLOVER this needs no finalization round trip: the triggering +WorkflowStreamProgress already carried the terminal. +""" +PARK_REASON_COMMANDS_PRODUCED: ParkReason.ValueType # 6 +"""The completion carried server-bound commands (timer, activity, child workflow, signal), so +the Workflow Task completed normally with subscriptions left active and unparked. +""" +PARK_REASON_WORKFLOW_COMPLETED: ParkReason.ValueType # 7 +"""The completion carried a terminal command -- complete, fail, cancel, or continue-as-new.""" +PARK_REASON_TASK_COMPLETED: ParkReason.ValueType # 8 +"""The Workflow Task completed normally with nothing else to report: records were consumed and +no stream wait remained pending. Distinct from PARK_REASON_COMMANDS_PRODUCED so the marker +says which of the two it actually was rather than implying commands that never existed. +""" +PARK_REASON_OUTPUT_LATENCY: ParkReason.ValueType # 9 +"""The Workflow Task's output visibility deadline expired.""" +PARK_REASON_OUTPUT_CAPACITY: ParkReason.ValueType # 10 +"""The staged output reached its deterministic record or logical-byte capacity.""" +global___ParkReason = ParkReason + class LocalActivityMarkerData(google.protobuf.message.Message): """This file defines data that Core might write externally. The first motivating case being storing data in markers in event history. Defining such data as protos provides an easy way @@ -122,3 +211,246 @@ class PatchedMarkerData(google.protobuf.message.Message): ) -> None: ... global___PatchedMarkerData = PatchedMarkerData + +class ExternalStreamMarkerData(google.protobuf.message.Message): + """What Core writes into a marker for a Workflow Task that consumed external streams. Exactly one + of these is written per Workflow Task, however many progress reports that task carried. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SCHEMA_VERSION_FIELD_NUMBER: builtins.int + QUIESCENCE_GENERATION_FIELD_NUMBER: builtins.int + WAITS_FIELD_NUMBER: builtins.int + REPLAY_ANNOTATION_FIELD_NUMBER: builtins.int + TERMINAL_BOUNDARY_FIELD_NUMBER: builtins.int + OUTPUT_FIELD_NUMBER: builtins.int + schema_version: builtins.int + quiescence_generation: builtins.int + """Identifies the complete blocked snapshot this marker closes.""" + @property + def waits( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ExternalWaitMarker + ]: ... + replay_annotation: builtins.bytes + """The accumulated replay annotation, opaque to Core. Core appends each observation delta to + this and never parses any of it. + """ + terminal_boundary: global___ParkReason.ValueType + @property + def output(self) -> global___ExternalOutputStreamManifest: + """The output staged for this Workflow Task, if any. Output shares this marker with input so + replay has one activation-segment schedule and never drains the Workflow event loop twice. + """ + def __init__( + self, + *, + schema_version: builtins.int = ..., + quiescence_generation: builtins.int = ..., + waits: collections.abc.Iterable[global___ExternalWaitMarker] | None = ..., + replay_annotation: builtins.bytes = ..., + terminal_boundary: global___ParkReason.ValueType = ..., + output: global___ExternalOutputStreamManifest | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["output", b"output"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "output", + b"output", + "quiescence_generation", + b"quiescence_generation", + "replay_annotation", + b"replay_annotation", + "schema_version", + b"schema_version", + "terminal_boundary", + b"terminal_boundary", + "waits", + b"waits", + ], + ) -> None: ... + +global___ExternalStreamMarkerData = ExternalStreamMarkerData + +class ExternalWaitMarker(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WAIT_ID_FIELD_NUMBER: builtins.int + GENERATION_FIELD_NUMBER: builtins.int + wait_id: builtins.int + generation: builtins.int + def __init__( + self, + *, + wait_id: builtins.int = ..., + generation: builtins.int = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "generation", b"generation", "wait_id", b"wait_id" + ], + ) -> None: ... + +global___ExternalWaitMarker = ExternalWaitMarker + +class ExternalOutputStreamManifest(google.protobuf.message.Message): + """Compact proof of the externally staged output belonging to one Workflow Task. + + This message contains no record payloads. The stage token identifies the immutable pending + batch in the provider, while the remaining fields let replay validate the deterministic logical + output and let a cold reader reconcile the pending batch against History. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SCHEMA_VERSION_FIELD_NUMBER: builtins.int + FINGERPRINT_VERSION_FIELD_NUMBER: builtins.int + STAGE_TOKEN_FIELD_NUMBER: builtins.int + HISTORY_FLOOR_EVENT_ID_FIELD_NUMBER: builtins.int + RUN_ID_FIELD_NUMBER: builtins.int + TOPICS_FIELD_NUMBER: builtins.int + SEGMENTS_FIELD_NUMBER: builtins.int + PROVIDER_ID_FIELD_NUMBER: builtins.int + PROVIDER_FORMAT_VERSION_FIELD_NUMBER: builtins.int + schema_version: builtins.int + fingerprint_version: builtins.int + stage_token: builtins.str + history_floor_event_id: builtins.int + """The event immediately preceding this Workflow Task's WorkflowTaskScheduled event in the + ordered History view used to build its activation. + """ + run_id: builtins.str + @property + def topics( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ExternalOutputTopicManifest + ]: ... + @property + def segments( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ExternalOutputSegmentManifest + ]: + """One entry per live activation segment, including segments which published no output.""" + provider_id: builtins.str + """Stable configured provider binding. Reconciliation refuses to interpret the batch through a + different provider or provider wire format. + """ + provider_format_version: builtins.int + def __init__( + self, + *, + schema_version: builtins.int = ..., + fingerprint_version: builtins.int = ..., + stage_token: builtins.str = ..., + history_floor_event_id: builtins.int = ..., + run_id: builtins.str = ..., + topics: collections.abc.Iterable[global___ExternalOutputTopicManifest] + | None = ..., + segments: collections.abc.Iterable[global___ExternalOutputSegmentManifest] + | None = ..., + provider_id: builtins.str = ..., + provider_format_version: builtins.int = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "fingerprint_version", + b"fingerprint_version", + "history_floor_event_id", + b"history_floor_event_id", + "provider_format_version", + b"provider_format_version", + "provider_id", + b"provider_id", + "run_id", + b"run_id", + "schema_version", + b"schema_version", + "segments", + b"segments", + "stage_token", + b"stage_token", + "topics", + b"topics", + ], + ) -> None: ... + +global___ExternalOutputStreamManifest = ExternalOutputStreamManifest + +class ExternalOutputTopicManifest(google.protobuf.message.Message): + """Logical, pre-codec identity of one topic sub-batch.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TOPIC_FIELD_NUMBER: builtins.int + RECORD_COUNT_FIELD_NUMBER: builtins.int + LOGICAL_BYTE_COUNT_FIELD_NUMBER: builtins.int + LOGICAL_FINGERPRINT_FIELD_NUMBER: builtins.int + FINISHED_FIELD_NUMBER: builtins.int + topic: builtins.str + record_count: builtins.int + logical_byte_count: builtins.int + logical_fingerprint: builtins.bytes + finished: builtins.bool + def __init__( + self, + *, + topic: builtins.str = ..., + record_count: builtins.int = ..., + logical_byte_count: builtins.int = ..., + logical_fingerprint: builtins.bytes = ..., + finished: builtins.bool = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "finished", + b"finished", + "logical_byte_count", + b"logical_byte_count", + "logical_fingerprint", + b"logical_fingerprint", + "record_count", + b"record_count", + "topic", + b"topic", + ], + ) -> None: ... + +global___ExternalOutputTopicManifest = ExternalOutputTopicManifest + +class ExternalOutputSegmentManifest(google.protobuf.message.Message): + """Record counts for one activation segment. Entries correspond positionally to `topics` in the + enclosing ExternalOutputStreamManifest, retaining empty segments without repeating topic names. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + RECORD_COUNTS_BY_TOPIC_FIELD_NUMBER: builtins.int + @property + def record_counts_by_topic( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[ + builtins.int + ]: ... + def __init__( + self, + *, + record_counts_by_topic: collections.abc.Iterable[builtins.int] | None = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "record_counts_by_topic", b"record_counts_by_topic" + ], + ) -> None: ... + +global___ExternalOutputSegmentManifest = ExternalOutputSegmentManifest diff --git a/temporalio/bridge/proto/external_stream/__init__.py b/temporalio/bridge/proto/external_stream/__init__.py new file mode 100644 index 0000000000..9f2eed766e --- /dev/null +++ b/temporalio/bridge/proto/external_stream/__init__.py @@ -0,0 +1,5 @@ +from .external_stream_pb2 import WakeSignal + +__all__ = [ + "WakeSignal", +] diff --git a/temporalio/bridge/proto/external_stream/external_stream_pb2.py b/temporalio/bridge/proto/external_stream/external_stream_pb2.py new file mode 100644 index 0000000000..b7051cba1d --- /dev/null +++ b/temporalio/bridge/proto/external_stream/external_stream_pb2.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/sdk/core/external_stream/external_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 + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n7temporal/sdk/core/external_stream/external_stream.proto\x12\x17\x63oresdk.external_stream"\xa2\x01\n\nWakeSignal\x12\x18\n\x10\x65nvelope_version\x18\x01 \x01(\r\x12\x13\n\x0bstream_name\x18\x02 \x01(\t\x12\x0f\n\x07wait_id\x18\x03 \x01(\r\x12\x17\n\x0fpark_generation\x18\x04 \x01(\x04\x12\x1e\n\x16\x66irst_execution_run_id\x18\x05 \x01(\t\x12\x1b\n\x13producer_session_id\x18\x06 \x01(\tB4\xea\x02\x31Temporalio::Internal::Bridge::Api::ExternalStreamb\x06proto3' +) + + +_WAKESIGNAL = DESCRIPTOR.message_types_by_name["WakeSignal"] +WakeSignal = _reflection.GeneratedProtocolMessageType( + "WakeSignal", + (_message.Message,), + { + "DESCRIPTOR": _WAKESIGNAL, + "__module__": "temporal.sdk.core.external_stream.external_stream_pb2", + # @@protoc_insertion_point(class_scope:coresdk.external_stream.WakeSignal) + }, +) +_sym_db.RegisterMessage(WakeSignal) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = ( + b"\352\0021Temporalio::Internal::Bridge::Api::ExternalStream" + ) + _WAKESIGNAL._serialized_start = 85 + _WAKESIGNAL._serialized_end = 247 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/external_stream/external_stream_pb2.pyi b/temporalio/bridge/proto/external_stream/external_stream_pb2.pyi new file mode 100644 index 0000000000..4702ac5541 --- /dev/null +++ b/temporalio/bridge/proto/external_stream/external_stream_pb2.pyi @@ -0,0 +1,95 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file + +Wire formats for External Workflow Streams that are neither commands nor activation jobs. + +The one member today is the reserved wake Signal's envelope. It lives here, at the protocol +level, rather than being a user payload: Core must read its fields, and Core has no access to +the user's DataConverter or codec. A user codec that encrypts payloads would otherwise make the +envelope unreadable to the component that must read it. +""" + +import builtins +import sys + +import google.protobuf.descriptor +import google.protobuf.message + +if sys.version_info >= (3, 8): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class WakeSignal(google.protobuf.message.Message): + """The payload of the reserved `__temporal_external_stream_wake` Signal. + + Sent as a single argument whose Payload uses metadata + `encoding = "binary/protobuf"` and + `messageType = "coresdk.external_stream.WakeSignal"`, serialized with the protocol's own + serialization rather than through the user's DataConverter. + + The Signal carries no user data, so bypassing the codec leaks nothing. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + ENVELOPE_VERSION_FIELD_NUMBER: builtins.int + STREAM_NAME_FIELD_NUMBER: builtins.int + WAIT_ID_FIELD_NUMBER: builtins.int + PARK_GENERATION_FIELD_NUMBER: builtins.int + FIRST_EXECUTION_RUN_ID_FIELD_NUMBER: builtins.int + PRODUCER_SESSION_ID_FIELD_NUMBER: builtins.int + envelope_version: builtins.int + """Starts at 1. Core ignores an unknown version harmlessly rather than failing -- an old Core + must not break because a newer producer learned a new field. + """ + stream_name: builtins.str + """The stream this wake was prompted by. Only a hint: on wakeup the runtime rechecks every + active subscription, not just this one. + """ + wait_id: builtins.int + park_generation: builtins.int + """0 is reserved and means "no park generation" -- an unparked wake, which Core accepts as a + recheck request after validating chain identity. Park generations are quiescence + generations, which start at 1, so a *non-zero* generation the current Run does not + recognize is a claim that turned out to be wrong and is ignored as stale. + """ + first_execution_run_id: builtins.str + """Chain identity, not the current Run. The Signal is addressed to the Workflow ID without a + Run ID so it always lands on the current Run of the chain; this field is what lets Core + tell "same chain, stale generation" from "different chain". + """ + producer_session_id: builtins.str + """Diagnostics only. Never used for validation or deduplication.""" + def __init__( + self, + *, + envelope_version: builtins.int = ..., + stream_name: builtins.str = ..., + wait_id: builtins.int = ..., + park_generation: builtins.int = ..., + first_execution_run_id: builtins.str = ..., + producer_session_id: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "envelope_version", + b"envelope_version", + "first_execution_run_id", + b"first_execution_run_id", + "park_generation", + b"park_generation", + "producer_session_id", + b"producer_session_id", + "stream_name", + b"stream_name", + "wait_id", + b"wait_id", + ], + ) -> None: ... + +global___WakeSignal = WakeSignal diff --git a/temporalio/bridge/proto/workflow_activation/__init__.py b/temporalio/bridge/proto/workflow_activation/__init__.py index 421a143c98..1e5623c940 100644 --- a/temporalio/bridge/proto/workflow_activation/__init__.py +++ b/temporalio/bridge/proto/workflow_activation/__init__.py @@ -1,18 +1,22 @@ from .workflow_activation_pb2 import ( CancelWorkflow, DoUpdate, + FinalizeExternalStreams, FireTimer, InitializeWorkflow, NotificationsReceived, NotifyHasPatch, + PrepareExternalStreamPark, QueryWorkflow, RemoveFromCache, + ReplayExternalStreams, ResolveActivity, ResolveChildWorkflowExecution, ResolveChildWorkflowExecutionStart, ResolveChildWorkflowExecutionStartCancelled, ResolveChildWorkflowExecutionStartFailure, ResolveChildWorkflowExecutionStartSuccess, + ResolveExternalStreamWaits, ResolveNexusOperation, ResolveNexusOperationStart, ResolveRequestCancelExternalWorkflow, @@ -26,18 +30,22 @@ __all__ = [ "CancelWorkflow", "DoUpdate", + "FinalizeExternalStreams", "FireTimer", "InitializeWorkflow", "NotificationsReceived", "NotifyHasPatch", + "PrepareExternalStreamPark", "QueryWorkflow", "RemoveFromCache", + "ReplayExternalStreams", "ResolveActivity", "ResolveChildWorkflowExecution", "ResolveChildWorkflowExecutionStart", "ResolveChildWorkflowExecutionStartCancelled", "ResolveChildWorkflowExecutionStartFailure", "ResolveChildWorkflowExecutionStartSuccess", + "ResolveExternalStreamWaits", "ResolveNexusOperation", "ResolveNexusOperationStart", "ResolveRequestCancelExternalWorkflow", diff --git a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py index 190f679865..df51ab4fd7 100644 --- a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py +++ b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py @@ -45,18 +45,32 @@ from temporalio.bridge.proto.common import ( common_pb2 as temporal_dot_sdk_dot_core_dot_common_dot_common__pb2, ) +from temporalio.bridge.proto.external_data import ( + external_data_pb2 as temporal_dot_sdk_dot_core_dot_external__data_dot_external__data__pb2, +) from temporalio.bridge.proto.nexus import ( nexus_pb2 as temporal_dot_sdk_dot_core_dot_nexus_dot_nexus__pb2, ) +from temporalio.bridge.proto.workflow_commands import ( + workflow_commands_pb2 as temporal_dot_sdk_dot_core_dot_workflow__commands_dot_workflow__commands__pb2, +) 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/notification/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"\xa2\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"\xb6\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\x12T\n\x16notifications_received\x18\x15 \x01(\x0b\x32\x32.coresdk.workflow_activation.NotificationsReceivedH\x00\x12I\n\x11remove_from_cache\x18\x32 \x01(\x0b\x32,.coresdk.workflow_activation.RemoveFromCacheH\x00\x42\t\n\x07variant"Z\n\x15NotificationsReceived\x12\x41\n\rnotifications\x18\x01 \x03(\x0b\x32*.temporal.api.notification.v1.Notification"\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\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/notification/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\x1a\x33temporal/sdk/core/external_data/external_data.proto\x1a;temporal/sdk/core/workflow_commands/workflow_commands.proto"\xc2\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\x12\x1e\n\x16history_floor_event_id\x18\r \x01(\x03"\xaa\x0e\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\x12`\n\x1dresolve_external_stream_waits\x18\x11 \x01(\x0b\x32\x37.coresdk.workflow_activation.ResolveExternalStreamWaitsH\x00\x12^\n\x1cprepare_external_stream_park\x18\x12 \x01(\x0b\x32\x36.coresdk.workflow_activation.PrepareExternalStreamParkH\x00\x12U\n\x17replay_external_streams\x18\x13 \x01(\x0b\x32\x32.coresdk.workflow_activation.ReplayExternalStreamsH\x00\x12Y\n\x19\x66inalize_external_streams\x18\x14 \x01(\x0b\x32\x34.coresdk.workflow_activation.FinalizeExternalStreamsH\x00\x12T\n\x16notifications_received\x18\x15 \x01(\x0b\x32\x32.coresdk.workflow_activation.NotificationsReceivedH\x00\x12I\n\x11remove_from_cache\x18\x32 \x01(\x0b\x32,.coresdk.workflow_activation.RemoveFromCacheH\x00\x42\t\n\x07variant"Z\n\x15NotificationsReceived\x12\x41\n\rnotifications\x18\x01 \x03(\x0b\x32*.temporal.api.notification.v1.Notification"\x7f\n\x1aResolveExternalStreamWaits\x12\x1d\n\x15quiescence_generation\x18\x01 \x01(\x04\x12\x42\n\x0bready_hints\x18\x02 \x03(\x0b\x32-.coresdk.workflow_commands.ExternalStreamWait"\xab\x01\n\x19PrepareExternalStreamPark\x12\x1d\n\x15quiescence_generation\x18\x01 \x01(\x04\x12<\n\x05waits\x18\x02 \x03(\x0b\x32-.coresdk.workflow_commands.ExternalStreamWait\x12\x31\n\x06reason\x18\x03 \x01(\x0e\x32!.coresdk.external_data.ParkReason"\x92\x02\n\x15ReplayExternalStreams\x12\x1d\n\x15quiescence_generation\x18\x01 \x01(\x04\x12<\n\x05waits\x18\x02 \x03(\x0b\x32-.coresdk.workflow_commands.ExternalStreamWait\x12\x19\n\x11replay_annotation\x18\x03 \x01(\x0c\x12<\n\x11terminal_boundary\x18\x04 \x01(\x0e\x32!.coresdk.external_data.ParkReason\x12\x43\n\x06output\x18\x05 \x01(\x0b\x32\x33.coresdk.external_data.ExternalOutputStreamManifest"\xa9\x01\n\x17\x46inalizeExternalStreams\x12\x1d\n\x15quiescence_generation\x18\x01 \x01(\x04\x12<\n\x05waits\x18\x02 \x03(\x0b\x32-.coresdk.workflow_commands.ExternalStreamWait\x12\x31\n\x06reason\x18\x03 \x01(\x0e\x32!.coresdk.external_data.ParkReason"\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' ) _WORKFLOWACTIVATION = DESCRIPTOR.message_types_by_name["WorkflowActivation"] _WORKFLOWACTIVATIONJOB = DESCRIPTOR.message_types_by_name["WorkflowActivationJob"] _NOTIFICATIONSRECEIVED = DESCRIPTOR.message_types_by_name["NotificationsReceived"] +_RESOLVEEXTERNALSTREAMWAITS = DESCRIPTOR.message_types_by_name[ + "ResolveExternalStreamWaits" +] +_PREPAREEXTERNALSTREAMPARK = DESCRIPTOR.message_types_by_name[ + "PrepareExternalStreamPark" +] +_REPLAYEXTERNALSTREAMS = DESCRIPTOR.message_types_by_name["ReplayExternalStreams"] +_FINALIZEEXTERNALSTREAMS = DESCRIPTOR.message_types_by_name["FinalizeExternalStreams"] _INITIALIZEWORKFLOW = DESCRIPTOR.message_types_by_name["InitializeWorkflow"] _INITIALIZEWORKFLOW_HEADERSENTRY = _INITIALIZEWORKFLOW.nested_types_by_name[ "HeadersEntry" @@ -132,6 +146,50 @@ ) _sym_db.RegisterMessage(NotificationsReceived) +ResolveExternalStreamWaits = _reflection.GeneratedProtocolMessageType( + "ResolveExternalStreamWaits", + (_message.Message,), + { + "DESCRIPTOR": _RESOLVEEXTERNALSTREAMWAITS, + "__module__": "temporal.sdk.core.workflow_activation.workflow_activation_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_activation.ResolveExternalStreamWaits) + }, +) +_sym_db.RegisterMessage(ResolveExternalStreamWaits) + +PrepareExternalStreamPark = _reflection.GeneratedProtocolMessageType( + "PrepareExternalStreamPark", + (_message.Message,), + { + "DESCRIPTOR": _PREPAREEXTERNALSTREAMPARK, + "__module__": "temporal.sdk.core.workflow_activation.workflow_activation_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_activation.PrepareExternalStreamPark) + }, +) +_sym_db.RegisterMessage(PrepareExternalStreamPark) + +ReplayExternalStreams = _reflection.GeneratedProtocolMessageType( + "ReplayExternalStreams", + (_message.Message,), + { + "DESCRIPTOR": _REPLAYEXTERNALSTREAMS, + "__module__": "temporal.sdk.core.workflow_activation.workflow_activation_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_activation.ReplayExternalStreams) + }, +) +_sym_db.RegisterMessage(ReplayExternalStreams) + +FinalizeExternalStreams = _reflection.GeneratedProtocolMessageType( + "FinalizeExternalStreams", + (_message.Message,), + { + "DESCRIPTOR": _FINALIZEEXTERNALSTREAMS, + "__module__": "temporal.sdk.core.workflow_activation.workflow_activation_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_activation.FinalizeExternalStreams) + }, +) +_sym_db.RegisterMessage(FinalizeExternalStreams) + InitializeWorkflow = _reflection.GeneratedProtocolMessageType( "InitializeWorkflow", (_message.Message,), @@ -394,58 +452,66 @@ _SIGNALWORKFLOW_HEADERSENTRY._serialized_options = b"8\001" _DOUPDATE_HEADERSENTRY._options = None _DOUPDATE_HEADERSENTRY._serialized_options = b"8\001" - _WORKFLOWACTIVATION._serialized_start = 618 - _WORKFLOWACTIVATION._serialized_end = 1164 - _WORKFLOWACTIVATIONJOB._serialized_start = 1167 - _WORKFLOWACTIVATIONJOB._serialized_end = 2629 - _NOTIFICATIONSRECEIVED._serialized_start = 2631 - _NOTIFICATIONSRECEIVED._serialized_end = 2721 - _INITIALIZEWORKFLOW._serialized_start = 2724 - _INITIALIZEWORKFLOW._serialized_end = 4128 - _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_start = 4049 - _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_end = 4128 - _FIRETIMER._serialized_start = 4130 - _FIRETIMER._serialized_end = 4154 - _RESOLVEACTIVITY._serialized_start = 4156 - _RESOLVEACTIVITY._serialized_end = 4265 - _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_start = 4268 - _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_end = 4605 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_start = 4607 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_end = 4666 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_start = 4669 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_end = 4835 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_start = 4837 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_end = 4933 - _RESOLVECHILDWORKFLOWEXECUTION._serialized_start = 4935 - _RESOLVECHILDWORKFLOWEXECUTION._serialized_end = 5040 - _UPDATERANDOMSEED._serialized_start = 5042 - _UPDATERANDOMSEED._serialized_end = 5085 - _QUERYWORKFLOW._serialized_start = 5088 - _QUERYWORKFLOW._serialized_end = 5348 - _QUERYWORKFLOW_HEADERSENTRY._serialized_start = 4049 - _QUERYWORKFLOW_HEADERSENTRY._serialized_end = 4128 - _CANCELWORKFLOW._serialized_start = 5350 - _CANCELWORKFLOW._serialized_end = 5382 - _SIGNALWORKFLOW._serialized_start = 5385 - _SIGNALWORKFLOW._serialized_end = 5674 - _SIGNALWORKFLOW_HEADERSENTRY._serialized_start = 4049 - _SIGNALWORKFLOW_HEADERSENTRY._serialized_end = 4128 - _NOTIFYHASPATCH._serialized_start = 5676 - _NOTIFYHASPATCH._serialized_end = 5710 - _RESOLVESIGNALEXTERNALWORKFLOW._serialized_start = 5713 - _RESOLVESIGNALEXTERNALWORKFLOW._serialized_end = 5890 - _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_start = 5893 - _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_end = 6077 - _DOUPDATE._serialized_start = 6080 - _DOUPDATE._serialized_end = 6411 - _DOUPDATE_HEADERSENTRY._serialized_start = 4049 - _DOUPDATE_HEADERSENTRY._serialized_end = 4128 - _RESOLVENEXUSOPERATIONSTART._serialized_start = 6414 - _RESOLVENEXUSOPERATIONSTART._serialized_end = 6568 - _RESOLVENEXUSOPERATION._serialized_start = 6570 - _RESOLVENEXUSOPERATION._serialized_end = 6659 - _REMOVEFROMCACHE._serialized_start = 6662 - _REMOVEFROMCACHE._serialized_end = 7014 - _REMOVEFROMCACHE_EVICTIONREASON._serialized_start = 6776 - _REMOVEFROMCACHE_EVICTIONREASON._serialized_end = 7014 + _WORKFLOWACTIVATION._serialized_start = 732 + _WORKFLOWACTIVATION._serialized_end = 1310 + _WORKFLOWACTIVATIONJOB._serialized_start = 1313 + _WORKFLOWACTIVATIONJOB._serialized_end = 3147 + _NOTIFICATIONSRECEIVED._serialized_start = 3149 + _NOTIFICATIONSRECEIVED._serialized_end = 3239 + _RESOLVEEXTERNALSTREAMWAITS._serialized_start = 3241 + _RESOLVEEXTERNALSTREAMWAITS._serialized_end = 3368 + _PREPAREEXTERNALSTREAMPARK._serialized_start = 3371 + _PREPAREEXTERNALSTREAMPARK._serialized_end = 3542 + _REPLAYEXTERNALSTREAMS._serialized_start = 3545 + _REPLAYEXTERNALSTREAMS._serialized_end = 3819 + _FINALIZEEXTERNALSTREAMS._serialized_start = 3822 + _FINALIZEEXTERNALSTREAMS._serialized_end = 3991 + _INITIALIZEWORKFLOW._serialized_start = 3994 + _INITIALIZEWORKFLOW._serialized_end = 5398 + _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_start = 5319 + _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_end = 5398 + _FIRETIMER._serialized_start = 5400 + _FIRETIMER._serialized_end = 5424 + _RESOLVEACTIVITY._serialized_start = 5426 + _RESOLVEACTIVITY._serialized_end = 5535 + _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_start = 5538 + _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_end = 5875 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_start = 5877 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_end = 5936 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_start = 5939 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_end = 6105 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_start = 6107 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_end = 6203 + _RESOLVECHILDWORKFLOWEXECUTION._serialized_start = 6205 + _RESOLVECHILDWORKFLOWEXECUTION._serialized_end = 6310 + _UPDATERANDOMSEED._serialized_start = 6312 + _UPDATERANDOMSEED._serialized_end = 6355 + _QUERYWORKFLOW._serialized_start = 6358 + _QUERYWORKFLOW._serialized_end = 6618 + _QUERYWORKFLOW_HEADERSENTRY._serialized_start = 5319 + _QUERYWORKFLOW_HEADERSENTRY._serialized_end = 5398 + _CANCELWORKFLOW._serialized_start = 6620 + _CANCELWORKFLOW._serialized_end = 6652 + _SIGNALWORKFLOW._serialized_start = 6655 + _SIGNALWORKFLOW._serialized_end = 6944 + _SIGNALWORKFLOW_HEADERSENTRY._serialized_start = 5319 + _SIGNALWORKFLOW_HEADERSENTRY._serialized_end = 5398 + _NOTIFYHASPATCH._serialized_start = 6946 + _NOTIFYHASPATCH._serialized_end = 6980 + _RESOLVESIGNALEXTERNALWORKFLOW._serialized_start = 6983 + _RESOLVESIGNALEXTERNALWORKFLOW._serialized_end = 7160 + _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_start = 7163 + _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_end = 7347 + _DOUPDATE._serialized_start = 7350 + _DOUPDATE._serialized_end = 7681 + _DOUPDATE_HEADERSENTRY._serialized_start = 5319 + _DOUPDATE_HEADERSENTRY._serialized_end = 5398 + _RESOLVENEXUSOPERATIONSTART._serialized_start = 7684 + _RESOLVENEXUSOPERATIONSTART._serialized_end = 7838 + _RESOLVENEXUSOPERATION._serialized_start = 7840 + _RESOLVENEXUSOPERATION._serialized_end = 7929 + _REMOVEFROMCACHE._serialized_start = 7932 + _REMOVEFROMCACHE._serialized_end = 8284 + _REMOVEFROMCACHE_EVICTIONREASON._serialized_start = 8046 + _REMOVEFROMCACHE_EVICTIONREASON._serialized_end = 8284 # @@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 57c93c6828..83aa108467 100644 --- a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.pyi +++ b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.pyi @@ -27,7 +27,9 @@ import temporalio.api.update.v1.message_pb2 import temporalio.bridge.proto.activity_result.activity_result_pb2 import temporalio.bridge.proto.child_workflow.child_workflow_pb2 import temporalio.bridge.proto.common.common_pb2 +import temporalio.bridge.proto.external_data.external_data_pb2 import temporalio.bridge.proto.nexus.nexus_pb2 +import temporalio.bridge.proto.workflow_commands.workflow_commands_pb2 if sys.version_info >= (3, 10): import typing as typing_extensions @@ -99,6 +101,7 @@ class WorkflowActivation(google.protobuf.message.Message): LAST_SDK_VERSION_FIELD_NUMBER: builtins.int SUGGEST_CONTINUE_AS_NEW_REASONS_FIELD_NUMBER: builtins.int TARGET_WORKER_DEPLOYMENT_VERSION_CHANGED_FIELD_NUMBER: builtins.int + HISTORY_FLOOR_EVENT_ID_FIELD_NUMBER: builtins.int run_id: builtins.str """The id of the currently active run of the workflow. Also used as a cache key. There may only ever be one active workflow task (and hence activation) of a run at one time. @@ -160,6 +163,11 @@ class WorkflowActivation(google.protobuf.message.Message): the workflow is Pinned. Experimental. """ + history_floor_event_id: builtins.int + """The event immediately preceding this Workflow Task's WorkflowTaskScheduled event in the + ordered History view Core used to build the activation. Zero means Core could not identify + that exact predecessor, in which case output must not be staged for this task. + """ def __init__( self, *, @@ -179,6 +187,7 @@ class WorkflowActivation(google.protobuf.message.Message): ] | None = ..., target_worker_deployment_version_changed: builtins.bool = ..., + history_floor_event_id: builtins.int = ..., ) -> None: ... def HasField( self, @@ -198,6 +207,8 @@ class WorkflowActivation(google.protobuf.message.Message): b"continue_as_new_suggested", "deployment_version_for_current_task", b"deployment_version_for_current_task", + "history_floor_event_id", + b"history_floor_event_id", "history_length", b"history_length", "history_size_bytes", @@ -239,6 +250,10 @@ 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 + RESOLVE_EXTERNAL_STREAM_WAITS_FIELD_NUMBER: builtins.int + PREPARE_EXTERNAL_STREAM_PARK_FIELD_NUMBER: builtins.int + REPLAY_EXTERNAL_STREAMS_FIELD_NUMBER: builtins.int + FINALIZE_EXTERNAL_STREAMS_FIELD_NUMBER: builtins.int NOTIFICATIONS_RECEIVED_FIELD_NUMBER: builtins.int REMOVE_FROM_CACHE_FIELD_NUMBER: builtins.int @property @@ -300,14 +315,23 @@ class WorkflowActivationJob(google.protobuf.message.Message): def resolve_nexus_operation(self) -> global___ResolveNexusOperation: """A nexus operation resolved.""" @property - def notifications_received(self) -> global___NotificationsReceived: - """17 to 20 are taken by the external stream jobs, which are developed - alongside this one and share this message. The number below is fixed - with that family and must not be reused. - - Notifications from the channels the workflow subscribed to. + def resolve_external_stream_waits(self) -> global___ResolveExternalStreamWaits: + """One or more external stream waits may have data buffered. Runs user workflow code.""" + @property + def prepare_external_stream_park(self) -> global___PrepareExternalStreamPark: + """Runtime-internal: install park intents and recheck every stream. Runs no user code.""" + @property + def replay_external_streams(self) -> global___ReplayExternalStreams: + """Replay: deliver the recorded external stream observations from a marker.""" + @property + def finalize_external_streams(self) -> global___FinalizeExternalStreams: + """Runtime-internal: encode the terminal boundary for a marker Core is about to write. + Runs no user code. """ @property + def notifications_received(self) -> global___NotificationsReceived: + """Notifications from the channels the workflow subscribed to.""" + @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 @@ -335,6 +359,10 @@ class WorkflowActivationJob(google.protobuf.message.Message): do_update: global___DoUpdate | None = ..., resolve_nexus_operation_start: global___ResolveNexusOperationStart | None = ..., resolve_nexus_operation: global___ResolveNexusOperation | None = ..., + resolve_external_stream_waits: global___ResolveExternalStreamWaits | None = ..., + prepare_external_stream_park: global___PrepareExternalStreamPark | None = ..., + replay_external_streams: global___ReplayExternalStreams | None = ..., + finalize_external_streams: global___FinalizeExternalStreams | None = ..., notifications_received: global___NotificationsReceived | None = ..., remove_from_cache: global___RemoveFromCache | None = ..., ) -> None: ... @@ -345,6 +373,8 @@ class WorkflowActivationJob(google.protobuf.message.Message): b"cancel_workflow", "do_update", b"do_update", + "finalize_external_streams", + b"finalize_external_streams", "fire_timer", b"fire_timer", "initialize_workflow", @@ -353,16 +383,22 @@ class WorkflowActivationJob(google.protobuf.message.Message): b"notifications_received", "notify_has_patch", b"notify_has_patch", + "prepare_external_stream_park", + b"prepare_external_stream_park", "query_workflow", b"query_workflow", "remove_from_cache", b"remove_from_cache", + "replay_external_streams", + b"replay_external_streams", "resolve_activity", b"resolve_activity", "resolve_child_workflow_execution", b"resolve_child_workflow_execution", "resolve_child_workflow_execution_start", b"resolve_child_workflow_execution_start", + "resolve_external_stream_waits", + b"resolve_external_stream_waits", "resolve_nexus_operation", b"resolve_nexus_operation", "resolve_nexus_operation_start", @@ -386,6 +422,8 @@ class WorkflowActivationJob(google.protobuf.message.Message): b"cancel_workflow", "do_update", b"do_update", + "finalize_external_streams", + b"finalize_external_streams", "fire_timer", b"fire_timer", "initialize_workflow", @@ -394,16 +432,22 @@ class WorkflowActivationJob(google.protobuf.message.Message): b"notifications_received", "notify_has_patch", b"notify_has_patch", + "prepare_external_stream_park", + b"prepare_external_stream_park", "query_workflow", b"query_workflow", "remove_from_cache", b"remove_from_cache", + "replay_external_streams", + b"replay_external_streams", "resolve_activity", b"resolve_activity", "resolve_child_workflow_execution", b"resolve_child_workflow_execution", "resolve_child_workflow_execution_start", b"resolve_child_workflow_execution_start", + "resolve_external_stream_waits", + b"resolve_external_stream_waits", "resolve_nexus_operation", b"resolve_nexus_operation", "resolve_nexus_operation_start", @@ -439,6 +483,10 @@ class WorkflowActivationJob(google.protobuf.message.Message): "do_update", "resolve_nexus_operation_start", "resolve_nexus_operation", + "resolve_external_stream_waits", + "prepare_external_stream_park", + "replay_external_streams", + "finalize_external_streams", "notifications_received", "remove_from_cache", ] @@ -478,6 +526,212 @@ class NotificationsReceived(google.protobuf.message.Message): global___NotificationsReceived = NotificationsReceived +class ResolveExternalStreamWaits(google.protobuf.message.Message): + """Tells lang that one or more external stream waits may now have data. + + This job contains no records. The listed waits are readiness *hints*, not an exhaustive + availability claim: on receipt lang probes every active wait, drains all currently available + inputs, and only then resumes Workflow futures. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + QUIESCENCE_GENERATION_FIELD_NUMBER: builtins.int + READY_HINTS_FIELD_NUMBER: builtins.int + quiescence_generation: builtins.int + @property + def ready_hints( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.bridge.proto.workflow_commands.workflow_commands_pb2.ExternalStreamWait + ]: ... + def __init__( + self, + *, + quiescence_generation: builtins.int = ..., + ready_hints: collections.abc.Iterable[ + temporalio.bridge.proto.workflow_commands.workflow_commands_pb2.ExternalStreamWait + ] + | None = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "quiescence_generation", + b"quiescence_generation", + "ready_hints", + b"ready_hints", + ], + ) -> None: ... + +global___ResolveExternalStreamWaits = ResolveExternalStreamWaits + +class PrepareExternalStreamPark(google.protobuf.message.Message): + """Asks lang to park the complete active wait set through the backend handshake. + + Runtime-internal: no user Workflow code runs. Lang installs a park intent per subscription, + rechecks every stream, and answers with ExternalStreamParkResult. A recheck that finds records + answers `became_ready` instead, and Core issues a normal resolve activation next. + + Requires backend I/O, so lang must not handle this on the synchronous Workflow thread. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + QUIESCENCE_GENERATION_FIELD_NUMBER: builtins.int + WAITS_FIELD_NUMBER: builtins.int + REASON_FIELD_NUMBER: builtins.int + quiescence_generation: builtins.int + @property + def waits( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.bridge.proto.workflow_commands.workflow_commands_pb2.ExternalStreamWait + ]: + """Always the complete active wait set.""" + reason: temporalio.bridge.proto.external_data.external_data_pb2.ParkReason.ValueType + """One of PARK_REASON_IDLE, PARK_REASON_ALL_WRITE_FENCED, or PARK_REASON_SHUTDOWN.""" + def __init__( + self, + *, + quiescence_generation: builtins.int = ..., + waits: collections.abc.Iterable[ + temporalio.bridge.proto.workflow_commands.workflow_commands_pb2.ExternalStreamWait + ] + | None = ..., + reason: temporalio.bridge.proto.external_data.external_data_pb2.ParkReason.ValueType = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "quiescence_generation", + b"quiescence_generation", + "reason", + b"reason", + "waits", + b"waits", + ], + ) -> None: ... + +global___PrepareExternalStreamPark = PrepareExternalStreamPark + +class ReplayExternalStreams(google.protobuf.message.Message): + """Carries a recorded marker's annotation back to lang during replay. + + Core issues exactly one of these per marker. Lang's replay driver walks the annotation's + segments in order, performing one event-loop drain per segment, so the live run's k + activations become k drains inside this one activation and condition evaluation matches. + + Requires backend I/O (the recorded range reads and their integrity validation), so lang must + prepare it off the Workflow thread and deliver from memory once it is on it. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + QUIESCENCE_GENERATION_FIELD_NUMBER: builtins.int + WAITS_FIELD_NUMBER: builtins.int + REPLAY_ANNOTATION_FIELD_NUMBER: builtins.int + TERMINAL_BOUNDARY_FIELD_NUMBER: builtins.int + OUTPUT_FIELD_NUMBER: builtins.int + quiescence_generation: builtins.int + @property + def waits( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.bridge.proto.workflow_commands.workflow_commands_pb2.ExternalStreamWait + ]: ... + replay_annotation: builtins.bytes + """Opaque to Core.""" + terminal_boundary: ( + temporalio.bridge.proto.external_data.external_data_pb2.ParkReason.ValueType + ) + @property + def output( + self, + ) -> temporalio.bridge.proto.external_data.external_data_pb2.ExternalOutputStreamManifest: + """The output manifest recorded in the same marker, if this Workflow Task published output.""" + def __init__( + self, + *, + quiescence_generation: builtins.int = ..., + waits: collections.abc.Iterable[ + temporalio.bridge.proto.workflow_commands.workflow_commands_pb2.ExternalStreamWait + ] + | None = ..., + replay_annotation: builtins.bytes = ..., + terminal_boundary: temporalio.bridge.proto.external_data.external_data_pb2.ParkReason.ValueType = ..., + output: temporalio.bridge.proto.external_data.external_data_pb2.ExternalOutputStreamManifest + | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["output", b"output"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "output", + b"output", + "quiescence_generation", + b"quiescence_generation", + "replay_annotation", + b"replay_annotation", + "terminal_boundary", + b"terminal_boundary", + "waits", + b"waits", + ], + ) -> None: ... + +global___ReplayExternalStreams = ReplayExternalStreams + +class FinalizeExternalStreams(google.protobuf.message.Message): + """Issued before Core writes a marker for a boundary Core itself decided and no park handshake + will run: rollover-deadline expiry, and shutdown or eviction with a Workflow Task open. + + Runs no user Workflow code, cannot resolve futures, and its only legal responses are + ExternalStreamFinalized or an activation failure. It requires *no* backend I/O: lang reads the + blocked cursor snapshot from its own in-memory manager state. If lang cannot answer, Core + writes no marker and the Workflow Task fails for retry -- there is no best-effort path. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + QUIESCENCE_GENERATION_FIELD_NUMBER: builtins.int + WAITS_FIELD_NUMBER: builtins.int + REASON_FIELD_NUMBER: builtins.int + quiescence_generation: builtins.int + @property + def waits( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + temporalio.bridge.proto.workflow_commands.workflow_commands_pb2.ExternalStreamWait + ]: ... + reason: temporalio.bridge.proto.external_data.external_data_pb2.ParkReason.ValueType + """One of PARK_REASON_ROLLOVER or PARK_REASON_SHUTDOWN.""" + def __init__( + self, + *, + quiescence_generation: builtins.int = ..., + waits: collections.abc.Iterable[ + temporalio.bridge.proto.workflow_commands.workflow_commands_pb2.ExternalStreamWait + ] + | None = ..., + reason: temporalio.bridge.proto.external_data.external_data_pb2.ParkReason.ValueType = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "quiescence_generation", + b"quiescence_generation", + "reason", + b"reason", + "waits", + b"waits", + ], + ) -> None: ... + +global___FinalizeExternalStreams = FinalizeExternalStreams + class InitializeWorkflow(google.protobuf.message.Message): """Initialize a new workflow""" diff --git a/temporalio/bridge/proto/workflow_commands/__init__.py b/temporalio/bridge/proto/workflow_commands/__init__.py index d735370547..fb31abf6ec 100644 --- a/temporalio/bridge/proto/workflow_commands/__init__.py +++ b/temporalio/bridge/proto/workflow_commands/__init__.py @@ -6,8 +6,12 @@ CancelWorkflowExecution, CompleteWorkflowExecution, ContinueAsNewWorkflowExecution, + ExternalStreamFinalized, + ExternalStreamParkResult, + ExternalStreamWait, FailWorkflowExecution, ModifyWorkflowProperties, + ParkSetConfirmed, QueryResult, QuerySuccess, RequestCancelActivity, @@ -21,11 +25,17 @@ SignalExternalWorkflowExecution, StartChildWorkflowExecution, StartTimer, + StreamSetBecameReady, SubscribeNotificationChannel, UnsubscribeNotificationChannel, UpdateResponse, UpsertWorkflowSearchAttributes, WorkflowCommand, + WorkflowOutputStreamBuffered, + WorkflowOutputStreamCommit, + WorkflowStreamChannels, + WorkflowStreamProgress, + WorkflowStreamQuiescent, ) __all__ = [ @@ -36,8 +46,12 @@ "CancelWorkflowExecution", "CompleteWorkflowExecution", "ContinueAsNewWorkflowExecution", + "ExternalStreamFinalized", + "ExternalStreamParkResult", + "ExternalStreamWait", "FailWorkflowExecution", "ModifyWorkflowProperties", + "ParkSetConfirmed", "QueryResult", "QuerySuccess", "RequestCancelActivity", @@ -51,9 +65,15 @@ "SignalExternalWorkflowExecution", "StartChildWorkflowExecution", "StartTimer", + "StreamSetBecameReady", "SubscribeNotificationChannel", "UnsubscribeNotificationChannel", "UpdateResponse", "UpsertWorkflowSearchAttributes", "WorkflowCommand", + "WorkflowOutputStreamBuffered", + "WorkflowOutputStreamCommit", + "WorkflowStreamChannels", + "WorkflowStreamProgress", + "WorkflowStreamQuiescent", ] diff --git a/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.py b/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.py index ca52e4519b..53437f845d 100644 --- a/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.py +++ b/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.py @@ -40,12 +40,15 @@ from temporalio.bridge.proto.common import ( common_pb2 as temporal_dot_sdk_dot_core_dot_common_dot_common__pb2, ) +from temporalio.bridge.proto.external_data import ( + external_data_pb2 as temporal_dot_sdk_dot_core_dot_external__data_dot_external__data__pb2, +) from temporalio.bridge.proto.nexus import ( nexus_pb2 as temporal_dot_sdk_dot_core_dot_nexus_dot_nexus__pb2, ) DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n;temporal/sdk/core/workflow_commands/workflow_commands.proto\x12\x19\x63oresdk.workflow_commands\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a$temporal/api/common/v1/message.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a%temporal/api/failure/v1/message.proto\x1a\'temporal/api/sdk/v1/user_metadata.proto\x1a,temporal/api/sdk/v1/event_group_marker.proto\x1a\x35temporal/sdk/core/child_workflow/child_workflow.proto\x1a#temporal/sdk/core/nexus/nexus.proto\x1a%temporal/sdk/core/common/common.proto"\xf3\x11\n\x0fWorkflowCommand\x12\x38\n\ruser_metadata\x18\x64 \x01(\x0b\x32!.temporal.api.sdk.v1.UserMetadata\x12\x42\n\x13\x65vent_group_markers\x18\x65 \x03(\x0b\x32%.temporal.api.sdk.v1.EventGroupMarker\x12<\n\x0bstart_timer\x18\x01 \x01(\x0b\x32%.coresdk.workflow_commands.StartTimerH\x00\x12H\n\x11schedule_activity\x18\x02 \x01(\x0b\x32+.coresdk.workflow_commands.ScheduleActivityH\x00\x12\x42\n\x10respond_to_query\x18\x03 \x01(\x0b\x32&.coresdk.workflow_commands.QueryResultH\x00\x12S\n\x17request_cancel_activity\x18\x04 \x01(\x0b\x32\x30.coresdk.workflow_commands.RequestCancelActivityH\x00\x12>\n\x0c\x63\x61ncel_timer\x18\x05 \x01(\x0b\x32&.coresdk.workflow_commands.CancelTimerH\x00\x12[\n\x1b\x63omplete_workflow_execution\x18\x06 \x01(\x0b\x32\x34.coresdk.workflow_commands.CompleteWorkflowExecutionH\x00\x12S\n\x17\x66\x61il_workflow_execution\x18\x07 \x01(\x0b\x32\x30.coresdk.workflow_commands.FailWorkflowExecutionH\x00\x12g\n"continue_as_new_workflow_execution\x18\x08 \x01(\x0b\x32\x39.coresdk.workflow_commands.ContinueAsNewWorkflowExecutionH\x00\x12W\n\x19\x63\x61ncel_workflow_execution\x18\t \x01(\x0b\x32\x32.coresdk.workflow_commands.CancelWorkflowExecutionH\x00\x12\x45\n\x10set_patch_marker\x18\n \x01(\x0b\x32).coresdk.workflow_commands.SetPatchMarkerH\x00\x12`\n\x1estart_child_workflow_execution\x18\x0b \x01(\x0b\x32\x36.coresdk.workflow_commands.StartChildWorkflowExecutionH\x00\x12\x62\n\x1f\x63\x61ncel_child_workflow_execution\x18\x0c \x01(\x0b\x32\x37.coresdk.workflow_commands.CancelChildWorkflowExecutionH\x00\x12w\n*request_cancel_external_workflow_execution\x18\r \x01(\x0b\x32\x41.coresdk.workflow_commands.RequestCancelExternalWorkflowExecutionH\x00\x12h\n"signal_external_workflow_execution\x18\x0e \x01(\x0b\x32:.coresdk.workflow_commands.SignalExternalWorkflowExecutionH\x00\x12Q\n\x16\x63\x61ncel_signal_workflow\x18\x0f \x01(\x0b\x32/.coresdk.workflow_commands.CancelSignalWorkflowH\x00\x12S\n\x17schedule_local_activity\x18\x10 \x01(\x0b\x32\x30.coresdk.workflow_commands.ScheduleLocalActivityH\x00\x12^\n\x1drequest_cancel_local_activity\x18\x11 \x01(\x0b\x32\x35.coresdk.workflow_commands.RequestCancelLocalActivityH\x00\x12\x66\n!upsert_workflow_search_attributes\x18\x12 \x01(\x0b\x32\x39.coresdk.workflow_commands.UpsertWorkflowSearchAttributesH\x00\x12Y\n\x1amodify_workflow_properties\x18\x13 \x01(\x0b\x32\x33.coresdk.workflow_commands.ModifyWorkflowPropertiesH\x00\x12\x44\n\x0fupdate_response\x18\x14 \x01(\x0b\x32).coresdk.workflow_commands.UpdateResponseH\x00\x12U\n\x18schedule_nexus_operation\x18\x15 \x01(\x0b\x32\x31.coresdk.workflow_commands.ScheduleNexusOperationH\x00\x12`\n\x1erequest_cancel_nexus_operation\x18\x16 \x01(\x0b\x32\x36.coresdk.workflow_commands.RequestCancelNexusOperationH\x00\x12\x61\n\x1esubscribe_notification_channel\x18\x1d \x01(\x0b\x32\x37.coresdk.workflow_commands.SubscribeNotificationChannelH\x00\x12\x65\n unsubscribe_notification_channel\x18\x1e \x01(\x0b\x32\x39.coresdk.workflow_commands.UnsubscribeNotificationChannelH\x00\x42\t\n\x07variant"/\n\x1cSubscribeNotificationChannel\x12\x0f\n\x07\x63hannel\x18\x01 \x01(\t"1\n\x1eUnsubscribeNotificationChannel\x12\x0f\n\x07\x63hannel\x18\x01 \x01(\t"S\n\nStartTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x38\n\x15start_to_fire_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration"\x1a\n\x0b\x43\x61ncelTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r"\xb8\x06\n\x10ScheduleActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x02 \x01(\t\x12\x15\n\ractivity_type\x18\x03 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12I\n\x07headers\x18\x06 \x03(\x0b\x32\x38.coresdk.workflow_commands.ScheduleActivity.HeadersEntry\x12\x32\n\targuments\x18\x07 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\x0c \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12N\n\x11\x63\x61ncellation_type\x18\r \x01(\x0e\x32\x33.coresdk.workflow_commands.ActivityCancellationType\x12\x1e\n\x16\x64o_not_eagerly_execute\x18\x0e \x01(\x08\x12;\n\x11versioning_intent\x18\x0f \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12\x32\n\x08priority\x18\x10 \x01(\x0b\x32 .temporal.api.common.v1.Priority\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"\x93\x06\n\x15ScheduleLocalActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x02 \x01(\t\x12\x15\n\ractivity_type\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\r\x12:\n\x16original_schedule_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12N\n\x07headers\x18\x06 \x03(\x0b\x32=.coresdk.workflow_commands.ScheduleLocalActivity.HeadersEntry\x12\x32\n\targuments\x18\x07 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\x0b \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x38\n\x15local_retry_threshold\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12N\n\x11\x63\x61ncellation_type\x18\r \x01(\x0e\x32\x33.coresdk.workflow_commands.ActivityCancellationType\x12#\n\x1binclude_arguments_in_marker\x18\x0e \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"$\n\x15RequestCancelActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r")\n\x1aRequestCancelLocalActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r"\x9c\x01\n\x0bQueryResult\x12\x10\n\x08query_id\x18\x01 \x01(\t\x12<\n\tsucceeded\x18\x02 \x01(\x0b\x32\'.coresdk.workflow_commands.QuerySuccessH\x00\x12\x32\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x42\t\n\x07variant"A\n\x0cQuerySuccess\x12\x31\n\x08response\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload"L\n\x19\x43ompleteWorkflowExecution\x12/\n\x06result\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload"J\n\x15\x46\x61ilWorkflowExecution\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\x92\x07\n\x1e\x43ontinueAsNewWorkflowExecution\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x12\n\ntask_queue\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\x14workflow_run_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12Q\n\x04memo\x18\x06 \x03(\x0b\x32\x43.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.MemoEntry\x12W\n\x07headers\x18\x07 \x03(\x0b\x32\x46.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.HeadersEntry\x12\x43\n\x11search_attributes\x18\x08 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x39\n\x0cretry_policy\x18\t \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12;\n\x11versioning_intent\x18\n \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12[\n\x1binitial_versioning_behavior\x18\x0b \x01(\x0e\x32\x36.temporal.api.enums.v1.ContinueAsNewVersioningBehavior\x12\x39\n\x16\x62\x61\x63koff_start_interval\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x1aL\n\tMemoEntry\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\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"L\n\x17\x43\x61ncelWorkflowExecution\x12\x31\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads"6\n\x0eSetPatchMarker\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08"\x96\t\n\x1bStartChildWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12.\n\x05input\x18\x06 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\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\x46\n\x13parent_close_policy\x18\n \x01(\x0e\x32).coresdk.child_workflow.ParentClosePolicy\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\x12T\n\x07headers\x18\x0f \x03(\x0b\x32\x43.coresdk.workflow_commands.StartChildWorkflowExecution.HeadersEntry\x12N\n\x04memo\x18\x10 \x03(\x0b\x32@.coresdk.workflow_commands.StartChildWorkflowExecution.MemoEntry\x12\x43\n\x11search_attributes\x18\x11 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12P\n\x11\x63\x61ncellation_type\x18\x12 \x01(\x0e\x32\x35.coresdk.child_workflow.ChildWorkflowCancellationType\x12;\n\x11versioning_intent\x18\x13 \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12\x32\n\x08priority\x18\x14 \x01(\x0b\x32 .temporal.api.common.v1.Priority\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\x1aL\n\tMemoEntry\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"J\n\x1c\x43\x61ncelChildWorkflowExecution\x12\x1a\n\x12\x63hild_workflow_seq\x18\x01 \x01(\r\x12\x0e\n\x06reason\x18\x02 \x01(\t"\x8e\x01\n&RequestCancelExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12G\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecution\x12\x0e\n\x06reason\x18\x03 \x01(\t"\x8f\x03\n\x1fSignalExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12I\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecutionH\x00\x12\x1b\n\x11\x63hild_workflow_id\x18\x03 \x01(\tH\x00\x12\x13\n\x0bsignal_name\x18\x04 \x01(\t\x12-\n\x04\x61rgs\x18\x05 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12X\n\x07headers\x18\x06 \x03(\x0b\x32G.coresdk.workflow_commands.SignalExternalWorkflowExecution.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\x42\x08\n\x06target"#\n\x14\x43\x61ncelSignalWorkflow\x12\x0b\n\x03seq\x18\x01 \x01(\r"e\n\x1eUpsertWorkflowSearchAttributes\x12\x43\n\x11search_attributes\x18\x01 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes"O\n\x18ModifyWorkflowProperties\x12\x33\n\rupserted_memo\x18\x01 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo"\xd2\x01\n\x0eUpdateResponse\x12\x1c\n\x14protocol_instance_id\x18\x01 \x01(\t\x12*\n\x08\x61\x63\x63\x65pted\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x34\n\x08rejected\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x12\x34\n\tcompleted\x18\x04 \x01(\x0b\x32\x1f.temporal.api.common.v1.PayloadH\x00\x42\n\n\x08response"\x9a\x04\n\x16ScheduleNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x11\n\toperation\x18\x04 \x01(\t\x12.\n\x05input\x18\x05 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12X\n\x0cnexus_header\x18\x07 \x03(\x0b\x32\x42.coresdk.workflow_commands.ScheduleNexusOperation.NexusHeaderEntry\x12H\n\x11\x63\x61ncellation_type\x18\x08 \x01(\x0e\x32-.coresdk.nexus.NexusOperationCancellationType\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \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"*\n\x1bRequestCancelNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r*X\n\x18\x41\x63tivityCancellationType\x12\x0e\n\nTRY_CANCEL\x10\x00\x12\x1f\n\x1bWAIT_CANCELLATION_COMPLETED\x10\x01\x12\x0b\n\x07\x41\x42\x41NDON\x10\x02\x42\x36\xea\x02\x33Temporalio::Internal::Bridge::Api::WorkflowCommandsb\x06proto3' + b'\n;temporal/sdk/core/workflow_commands/workflow_commands.proto\x12\x19\x63oresdk.workflow_commands\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a$temporal/api/common/v1/message.proto\x1a$temporal/api/enums/v1/workflow.proto\x1a%temporal/api/failure/v1/message.proto\x1a\'temporal/api/sdk/v1/user_metadata.proto\x1a,temporal/api/sdk/v1/event_group_marker.proto\x1a\x35temporal/sdk/core/child_workflow/child_workflow.proto\x1a#temporal/sdk/core/nexus/nexus.proto\x1a%temporal/sdk/core/common/common.proto\x1a\x33temporal/sdk/core/external_data/external_data.proto"\xf3\x16\n\x0fWorkflowCommand\x12\x38\n\ruser_metadata\x18\x64 \x01(\x0b\x32!.temporal.api.sdk.v1.UserMetadata\x12\x42\n\x13\x65vent_group_markers\x18\x65 \x03(\x0b\x32%.temporal.api.sdk.v1.EventGroupMarker\x12<\n\x0bstart_timer\x18\x01 \x01(\x0b\x32%.coresdk.workflow_commands.StartTimerH\x00\x12H\n\x11schedule_activity\x18\x02 \x01(\x0b\x32+.coresdk.workflow_commands.ScheduleActivityH\x00\x12\x42\n\x10respond_to_query\x18\x03 \x01(\x0b\x32&.coresdk.workflow_commands.QueryResultH\x00\x12S\n\x17request_cancel_activity\x18\x04 \x01(\x0b\x32\x30.coresdk.workflow_commands.RequestCancelActivityH\x00\x12>\n\x0c\x63\x61ncel_timer\x18\x05 \x01(\x0b\x32&.coresdk.workflow_commands.CancelTimerH\x00\x12[\n\x1b\x63omplete_workflow_execution\x18\x06 \x01(\x0b\x32\x34.coresdk.workflow_commands.CompleteWorkflowExecutionH\x00\x12S\n\x17\x66\x61il_workflow_execution\x18\x07 \x01(\x0b\x32\x30.coresdk.workflow_commands.FailWorkflowExecutionH\x00\x12g\n"continue_as_new_workflow_execution\x18\x08 \x01(\x0b\x32\x39.coresdk.workflow_commands.ContinueAsNewWorkflowExecutionH\x00\x12W\n\x19\x63\x61ncel_workflow_execution\x18\t \x01(\x0b\x32\x32.coresdk.workflow_commands.CancelWorkflowExecutionH\x00\x12\x45\n\x10set_patch_marker\x18\n \x01(\x0b\x32).coresdk.workflow_commands.SetPatchMarkerH\x00\x12`\n\x1estart_child_workflow_execution\x18\x0b \x01(\x0b\x32\x36.coresdk.workflow_commands.StartChildWorkflowExecutionH\x00\x12\x62\n\x1f\x63\x61ncel_child_workflow_execution\x18\x0c \x01(\x0b\x32\x37.coresdk.workflow_commands.CancelChildWorkflowExecutionH\x00\x12w\n*request_cancel_external_workflow_execution\x18\r \x01(\x0b\x32\x41.coresdk.workflow_commands.RequestCancelExternalWorkflowExecutionH\x00\x12h\n"signal_external_workflow_execution\x18\x0e \x01(\x0b\x32:.coresdk.workflow_commands.SignalExternalWorkflowExecutionH\x00\x12Q\n\x16\x63\x61ncel_signal_workflow\x18\x0f \x01(\x0b\x32/.coresdk.workflow_commands.CancelSignalWorkflowH\x00\x12S\n\x17schedule_local_activity\x18\x10 \x01(\x0b\x32\x30.coresdk.workflow_commands.ScheduleLocalActivityH\x00\x12^\n\x1drequest_cancel_local_activity\x18\x11 \x01(\x0b\x32\x35.coresdk.workflow_commands.RequestCancelLocalActivityH\x00\x12\x66\n!upsert_workflow_search_attributes\x18\x12 \x01(\x0b\x32\x39.coresdk.workflow_commands.UpsertWorkflowSearchAttributesH\x00\x12Y\n\x1amodify_workflow_properties\x18\x13 \x01(\x0b\x32\x33.coresdk.workflow_commands.ModifyWorkflowPropertiesH\x00\x12\x44\n\x0fupdate_response\x18\x14 \x01(\x0b\x32).coresdk.workflow_commands.UpdateResponseH\x00\x12U\n\x18schedule_nexus_operation\x18\x15 \x01(\x0b\x32\x31.coresdk.workflow_commands.ScheduleNexusOperationH\x00\x12`\n\x1erequest_cancel_nexus_operation\x18\x16 \x01(\x0b\x32\x36.coresdk.workflow_commands.RequestCancelNexusOperationH\x00\x12U\n\x18workflow_stream_progress\x18\x17 \x01(\x0b\x32\x31.coresdk.workflow_commands.WorkflowStreamProgressH\x00\x12W\n\x19workflow_stream_quiescent\x18\x18 \x01(\x0b\x32\x32.coresdk.workflow_commands.WorkflowStreamQuiescentH\x00\x12Z\n\x1b\x65xternal_stream_park_result\x18\x19 \x01(\x0b\x32\x33.coresdk.workflow_commands.ExternalStreamParkResultH\x00\x12W\n\x19\x65xternal_stream_finalized\x18\x1a \x01(\x0b\x32\x32.coresdk.workflow_commands.ExternalStreamFinalizedH\x00\x12^\n\x1dworkflow_output_stream_commit\x18\x1b \x01(\x0b\x32\x35.coresdk.workflow_commands.WorkflowOutputStreamCommitH\x00\x12\x62\n\x1fworkflow_output_stream_buffered\x18\x1c \x01(\x0b\x32\x37.coresdk.workflow_commands.WorkflowOutputStreamBufferedH\x00\x12\x61\n\x1esubscribe_notification_channel\x18\x1d \x01(\x0b\x32\x37.coresdk.workflow_commands.SubscribeNotificationChannelH\x00\x12\x65\n unsubscribe_notification_channel\x18\x1e \x01(\x0b\x32\x39.coresdk.workflow_commands.UnsubscribeNotificationChannelH\x00\x12U\n\x18workflow_stream_channels\x18! \x01(\x0b\x32\x31.coresdk.workflow_commands.WorkflowStreamChannelsH\x00\x42\t\n\x07variant"/\n\x1cSubscribeNotificationChannel\x12\x0f\n\x07\x63hannel\x18\x01 \x01(\t"1\n\x1eUnsubscribeNotificationChannel\x12\x0f\n\x07\x63hannel\x18\x01 \x01(\t"*\n\x16WorkflowStreamChannels\x12\x10\n\x08\x63hannels\x18\x01 \x03(\t"M\n\x16WorkflowStreamProgress\x12\x19\n\x11observation_delta\x18\x01 \x01(\x0c\x12\x18\n\x10request_rollover\x18\x02 \x01(\x08"\xa7\x01\n\x17WorkflowStreamQuiescent\x12\x1d\n\x15quiescence_generation\x18\x01 \x01(\x04\x12<\n\x05waits\x18\x02 \x03(\x0b\x32-.coresdk.workflow_commands.ExternalStreamWait\x12/\n\x0cidle_timeout\x18\x03 \x01(\x0b\x32\x19.google.protobuf.Duration"W\n\x12\x45xternalStreamWait\x12\x0f\n\x07wait_id\x18\x01 \x01(\r\x12\x12\n\ngeneration\x18\x02 \x01(\x04\x12\x1c\n\x14immediately_parkable\x18\x03 \x01(\x08"\xf0\x01\n\x18\x45xternalStreamParkResult\x12\x1d\n\x15quiescence_generation\x18\x01 \x01(\x04\x12@\n\tconfirmed\x18\x02 \x01(\x0b\x32+.coresdk.workflow_commands.ParkSetConfirmedH\x00\x12G\n\x0c\x62\x65\x63\x61me_ready\x18\x03 \x01(\x0b\x32/.coresdk.workflow_commands.StreamSetBecameReadyH\x00\x12\x1f\n\x17\x66inal_observation_delta\x18\x04 \x01(\x0c\x42\t\n\x07outcome"\x12\n\x10ParkSetConfirmed"\x16\n\x14StreamSetBecameReady"Y\n\x17\x45xternalStreamFinalized\x12\x1d\n\x15quiescence_generation\x18\x01 \x01(\x04\x12\x1f\n\x17\x66inal_observation_delta\x18\x02 \x01(\x0c"}\n\x1aWorkflowOutputStreamCommit\x12\x45\n\x08manifest\x18\x01 \x01(\x0b\x32\x33.coresdk.external_data.ExternalOutputStreamManifest\x12\x18\n\x10request_rollover\x18\x02 \x01(\x08"V\n\x1cWorkflowOutputStreamBuffered\x12\x36\n\x13max_publish_latency\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration"S\n\nStartTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x38\n\x15start_to_fire_timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration"\x1a\n\x0b\x43\x61ncelTimer\x12\x0b\n\x03seq\x18\x01 \x01(\r"\xb8\x06\n\x10ScheduleActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x02 \x01(\t\x12\x15\n\ractivity_type\x18\x03 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12I\n\x07headers\x18\x06 \x03(\x0b\x32\x38.coresdk.workflow_commands.ScheduleActivity.HeadersEntry\x12\x32\n\targuments\x18\x07 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x34\n\x11heartbeat_timeout\x18\x0b \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\x0c \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12N\n\x11\x63\x61ncellation_type\x18\r \x01(\x0e\x32\x33.coresdk.workflow_commands.ActivityCancellationType\x12\x1e\n\x16\x64o_not_eagerly_execute\x18\x0e \x01(\x08\x12;\n\x11versioning_intent\x18\x0f \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12\x32\n\x08priority\x18\x10 \x01(\x0b\x32 .temporal.api.common.v1.Priority\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"\x93\x06\n\x15ScheduleLocalActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x13\n\x0b\x61\x63tivity_id\x18\x02 \x01(\t\x12\x15\n\ractivity_type\x18\x03 \x01(\t\x12\x0f\n\x07\x61ttempt\x18\x04 \x01(\r\x12:\n\x16original_schedule_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12N\n\x07headers\x18\x06 \x03(\x0b\x32=.coresdk.workflow_commands.ScheduleLocalActivity.HeadersEntry\x12\x32\n\targuments\x18\x07 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x08 \x01(\x0b\x32\x19.google.protobuf.Duration\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x0cretry_policy\x18\x0b \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12\x38\n\x15local_retry_threshold\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x12N\n\x11\x63\x61ncellation_type\x18\r \x01(\x0e\x32\x33.coresdk.workflow_commands.ActivityCancellationType\x12#\n\x1binclude_arguments_in_marker\x18\x0e \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"$\n\x15RequestCancelActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r")\n\x1aRequestCancelLocalActivity\x12\x0b\n\x03seq\x18\x01 \x01(\r"\x9c\x01\n\x0bQueryResult\x12\x10\n\x08query_id\x18\x01 \x01(\t\x12<\n\tsucceeded\x18\x02 \x01(\x0b\x32\'.coresdk.workflow_commands.QuerySuccessH\x00\x12\x32\n\x06\x66\x61iled\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x42\t\n\x07variant"A\n\x0cQuerySuccess\x12\x31\n\x08response\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload"L\n\x19\x43ompleteWorkflowExecution\x12/\n\x06result\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload"J\n\x15\x46\x61ilWorkflowExecution\x12\x31\n\x07\x66\x61ilure\x18\x01 \x01(\x0b\x32 .temporal.api.failure.v1.Failure"\x92\x07\n\x1e\x43ontinueAsNewWorkflowExecution\x12\x15\n\rworkflow_type\x18\x01 \x01(\t\x12\x12\n\ntask_queue\x18\x02 \x01(\t\x12\x32\n\targuments\x18\x03 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12\x37\n\x14workflow_run_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x38\n\x15workflow_task_timeout\x18\x05 \x01(\x0b\x32\x19.google.protobuf.Duration\x12Q\n\x04memo\x18\x06 \x03(\x0b\x32\x43.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.MemoEntry\x12W\n\x07headers\x18\x07 \x03(\x0b\x32\x46.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.HeadersEntry\x12\x43\n\x11search_attributes\x18\x08 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12\x39\n\x0cretry_policy\x18\t \x01(\x0b\x32#.temporal.api.common.v1.RetryPolicy\x12;\n\x11versioning_intent\x18\n \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12[\n\x1binitial_versioning_behavior\x18\x0b \x01(\x0e\x32\x36.temporal.api.enums.v1.ContinueAsNewVersioningBehavior\x12\x39\n\x16\x62\x61\x63koff_start_interval\x18\x0c \x01(\x0b\x32\x19.google.protobuf.Duration\x1aL\n\tMemoEntry\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\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"L\n\x17\x43\x61ncelWorkflowExecution\x12\x31\n\x07\x64\x65tails\x18\x01 \x01(\x0b\x32 .temporal.api.common.v1.Payloads"6\n\x0eSetPatchMarker\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08"\x96\t\n\x1bStartChildWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x11\n\tnamespace\x18\x02 \x01(\t\x12\x13\n\x0bworkflow_id\x18\x03 \x01(\t\x12\x15\n\rworkflow_type\x18\x04 \x01(\t\x12\x12\n\ntask_queue\x18\x05 \x01(\t\x12.\n\x05input\x18\x06 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\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\x46\n\x13parent_close_policy\x18\n \x01(\x0e\x32).coresdk.child_workflow.ParentClosePolicy\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\x12T\n\x07headers\x18\x0f \x03(\x0b\x32\x43.coresdk.workflow_commands.StartChildWorkflowExecution.HeadersEntry\x12N\n\x04memo\x18\x10 \x03(\x0b\x32@.coresdk.workflow_commands.StartChildWorkflowExecution.MemoEntry\x12\x43\n\x11search_attributes\x18\x11 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes\x12P\n\x11\x63\x61ncellation_type\x18\x12 \x01(\x0e\x32\x35.coresdk.child_workflow.ChildWorkflowCancellationType\x12;\n\x11versioning_intent\x18\x13 \x01(\x0e\x32 .coresdk.common.VersioningIntent\x12\x32\n\x08priority\x18\x14 \x01(\x0b\x32 .temporal.api.common.v1.Priority\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\x1aL\n\tMemoEntry\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"J\n\x1c\x43\x61ncelChildWorkflowExecution\x12\x1a\n\x12\x63hild_workflow_seq\x18\x01 \x01(\r\x12\x0e\n\x06reason\x18\x02 \x01(\t"\x8e\x01\n&RequestCancelExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12G\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecution\x12\x0e\n\x06reason\x18\x03 \x01(\t"\x8f\x03\n\x1fSignalExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12I\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecutionH\x00\x12\x1b\n\x11\x63hild_workflow_id\x18\x03 \x01(\tH\x00\x12\x13\n\x0bsignal_name\x18\x04 \x01(\t\x12-\n\x04\x61rgs\x18\x05 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12X\n\x07headers\x18\x06 \x03(\x0b\x32G.coresdk.workflow_commands.SignalExternalWorkflowExecution.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\x42\x08\n\x06target"#\n\x14\x43\x61ncelSignalWorkflow\x12\x0b\n\x03seq\x18\x01 \x01(\r"e\n\x1eUpsertWorkflowSearchAttributes\x12\x43\n\x11search_attributes\x18\x01 \x01(\x0b\x32(.temporal.api.common.v1.SearchAttributes"O\n\x18ModifyWorkflowProperties\x12\x33\n\rupserted_memo\x18\x01 \x01(\x0b\x32\x1c.temporal.api.common.v1.Memo"\xd2\x01\n\x0eUpdateResponse\x12\x1c\n\x14protocol_instance_id\x18\x01 \x01(\t\x12*\n\x08\x61\x63\x63\x65pted\x18\x02 \x01(\x0b\x32\x16.google.protobuf.EmptyH\x00\x12\x34\n\x08rejected\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x12\x34\n\tcompleted\x18\x04 \x01(\x0b\x32\x1f.temporal.api.common.v1.PayloadH\x00\x42\n\n\x08response"\x9a\x04\n\x16ScheduleNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x10\n\x08\x65ndpoint\x18\x02 \x01(\t\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x11\n\toperation\x18\x04 \x01(\t\x12.\n\x05input\x18\x05 \x01(\x0b\x32\x1f.temporal.api.common.v1.Payload\x12<\n\x19schedule_to_close_timeout\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12X\n\x0cnexus_header\x18\x07 \x03(\x0b\x32\x42.coresdk.workflow_commands.ScheduleNexusOperation.NexusHeaderEntry\x12H\n\x11\x63\x61ncellation_type\x18\x08 \x01(\x0e\x32-.coresdk.nexus.NexusOperationCancellationType\x12<\n\x19schedule_to_start_timeout\x18\t \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x39\n\x16start_to_close_timeout\x18\n \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"*\n\x1bRequestCancelNexusOperation\x12\x0b\n\x03seq\x18\x01 \x01(\r*X\n\x18\x41\x63tivityCancellationType\x12\x0e\n\nTRY_CANCEL\x10\x00\x12\x1f\n\x1bWAIT_CANCELLATION_COMPLETED\x10\x01\x12\x0b\n\x07\x41\x42\x41NDON\x10\x02\x42\x36\xea\x02\x33Temporalio::Internal::Bridge::Api::WorkflowCommandsb\x06proto3' ) _ACTIVITYCANCELLATIONTYPE = DESCRIPTOR.enum_types_by_name["ActivityCancellationType"] @@ -62,6 +65,20 @@ _UNSUBSCRIBENOTIFICATIONCHANNEL = DESCRIPTOR.message_types_by_name[ "UnsubscribeNotificationChannel" ] +_WORKFLOWSTREAMCHANNELS = DESCRIPTOR.message_types_by_name["WorkflowStreamChannels"] +_WORKFLOWSTREAMPROGRESS = DESCRIPTOR.message_types_by_name["WorkflowStreamProgress"] +_WORKFLOWSTREAMQUIESCENT = DESCRIPTOR.message_types_by_name["WorkflowStreamQuiescent"] +_EXTERNALSTREAMWAIT = DESCRIPTOR.message_types_by_name["ExternalStreamWait"] +_EXTERNALSTREAMPARKRESULT = DESCRIPTOR.message_types_by_name["ExternalStreamParkResult"] +_PARKSETCONFIRMED = DESCRIPTOR.message_types_by_name["ParkSetConfirmed"] +_STREAMSETBECAMEREADY = DESCRIPTOR.message_types_by_name["StreamSetBecameReady"] +_EXTERNALSTREAMFINALIZED = DESCRIPTOR.message_types_by_name["ExternalStreamFinalized"] +_WORKFLOWOUTPUTSTREAMCOMMIT = DESCRIPTOR.message_types_by_name[ + "WorkflowOutputStreamCommit" +] +_WORKFLOWOUTPUTSTREAMBUFFERED = DESCRIPTOR.message_types_by_name[ + "WorkflowOutputStreamBuffered" +] _STARTTIMER = DESCRIPTOR.message_types_by_name["StartTimer"] _CANCELTIMER = DESCRIPTOR.message_types_by_name["CancelTimer"] _SCHEDULEACTIVITY = DESCRIPTOR.message_types_by_name["ScheduleActivity"] @@ -158,6 +175,116 @@ ) _sym_db.RegisterMessage(UnsubscribeNotificationChannel) +WorkflowStreamChannels = _reflection.GeneratedProtocolMessageType( + "WorkflowStreamChannels", + (_message.Message,), + { + "DESCRIPTOR": _WORKFLOWSTREAMCHANNELS, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.WorkflowStreamChannels) + }, +) +_sym_db.RegisterMessage(WorkflowStreamChannels) + +WorkflowStreamProgress = _reflection.GeneratedProtocolMessageType( + "WorkflowStreamProgress", + (_message.Message,), + { + "DESCRIPTOR": _WORKFLOWSTREAMPROGRESS, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.WorkflowStreamProgress) + }, +) +_sym_db.RegisterMessage(WorkflowStreamProgress) + +WorkflowStreamQuiescent = _reflection.GeneratedProtocolMessageType( + "WorkflowStreamQuiescent", + (_message.Message,), + { + "DESCRIPTOR": _WORKFLOWSTREAMQUIESCENT, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.WorkflowStreamQuiescent) + }, +) +_sym_db.RegisterMessage(WorkflowStreamQuiescent) + +ExternalStreamWait = _reflection.GeneratedProtocolMessageType( + "ExternalStreamWait", + (_message.Message,), + { + "DESCRIPTOR": _EXTERNALSTREAMWAIT, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.ExternalStreamWait) + }, +) +_sym_db.RegisterMessage(ExternalStreamWait) + +ExternalStreamParkResult = _reflection.GeneratedProtocolMessageType( + "ExternalStreamParkResult", + (_message.Message,), + { + "DESCRIPTOR": _EXTERNALSTREAMPARKRESULT, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.ExternalStreamParkResult) + }, +) +_sym_db.RegisterMessage(ExternalStreamParkResult) + +ParkSetConfirmed = _reflection.GeneratedProtocolMessageType( + "ParkSetConfirmed", + (_message.Message,), + { + "DESCRIPTOR": _PARKSETCONFIRMED, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.ParkSetConfirmed) + }, +) +_sym_db.RegisterMessage(ParkSetConfirmed) + +StreamSetBecameReady = _reflection.GeneratedProtocolMessageType( + "StreamSetBecameReady", + (_message.Message,), + { + "DESCRIPTOR": _STREAMSETBECAMEREADY, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.StreamSetBecameReady) + }, +) +_sym_db.RegisterMessage(StreamSetBecameReady) + +ExternalStreamFinalized = _reflection.GeneratedProtocolMessageType( + "ExternalStreamFinalized", + (_message.Message,), + { + "DESCRIPTOR": _EXTERNALSTREAMFINALIZED, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.ExternalStreamFinalized) + }, +) +_sym_db.RegisterMessage(ExternalStreamFinalized) + +WorkflowOutputStreamCommit = _reflection.GeneratedProtocolMessageType( + "WorkflowOutputStreamCommit", + (_message.Message,), + { + "DESCRIPTOR": _WORKFLOWOUTPUTSTREAMCOMMIT, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.WorkflowOutputStreamCommit) + }, +) +_sym_db.RegisterMessage(WorkflowOutputStreamCommit) + +WorkflowOutputStreamBuffered = _reflection.GeneratedProtocolMessageType( + "WorkflowOutputStreamBuffered", + (_message.Message,), + { + "DESCRIPTOR": _WORKFLOWOUTPUTSTREAMBUFFERED, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.WorkflowOutputStreamBuffered) + }, +) +_sym_db.RegisterMessage(WorkflowOutputStreamBuffered) + StartTimer = _reflection.GeneratedProtocolMessageType( "StartTimer", (_message.Message,), @@ -512,74 +639,94 @@ _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_options = b"8\001" _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._options = None _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._serialized_options = b"8\001" - _ACTIVITYCANCELLATIONTYPE._serialized_start = 8972 - _ACTIVITYCANCELLATIONTYPE._serialized_end = 9060 - _WORKFLOWCOMMAND._serialized_start = 518 - _WORKFLOWCOMMAND._serialized_end = 2809 - _SUBSCRIBENOTIFICATIONCHANNEL._serialized_start = 2811 - _SUBSCRIBENOTIFICATIONCHANNEL._serialized_end = 2858 - _UNSUBSCRIBENOTIFICATIONCHANNEL._serialized_start = 2860 - _UNSUBSCRIBENOTIFICATIONCHANNEL._serialized_end = 2909 - _STARTTIMER._serialized_start = 2911 - _STARTTIMER._serialized_end = 2994 - _CANCELTIMER._serialized_start = 2996 - _CANCELTIMER._serialized_end = 3022 - _SCHEDULEACTIVITY._serialized_start = 3025 - _SCHEDULEACTIVITY._serialized_end = 3849 - _SCHEDULEACTIVITY_HEADERSENTRY._serialized_start = 3770 - _SCHEDULEACTIVITY_HEADERSENTRY._serialized_end = 3849 - _SCHEDULELOCALACTIVITY._serialized_start = 3852 - _SCHEDULELOCALACTIVITY._serialized_end = 4639 - _SCHEDULELOCALACTIVITY_HEADERSENTRY._serialized_start = 3770 - _SCHEDULELOCALACTIVITY_HEADERSENTRY._serialized_end = 3849 - _REQUESTCANCELACTIVITY._serialized_start = 4641 - _REQUESTCANCELACTIVITY._serialized_end = 4677 - _REQUESTCANCELLOCALACTIVITY._serialized_start = 4679 - _REQUESTCANCELLOCALACTIVITY._serialized_end = 4720 - _QUERYRESULT._serialized_start = 4723 - _QUERYRESULT._serialized_end = 4879 - _QUERYSUCCESS._serialized_start = 4881 - _QUERYSUCCESS._serialized_end = 4946 - _COMPLETEWORKFLOWEXECUTION._serialized_start = 4948 - _COMPLETEWORKFLOWEXECUTION._serialized_end = 5024 - _FAILWORKFLOWEXECUTION._serialized_start = 5026 - _FAILWORKFLOWEXECUTION._serialized_end = 5100 - _CONTINUEASNEWWORKFLOWEXECUTION._serialized_start = 5103 - _CONTINUEASNEWWORKFLOWEXECUTION._serialized_end = 6017 - _CONTINUEASNEWWORKFLOWEXECUTION_MEMOENTRY._serialized_start = 5860 - _CONTINUEASNEWWORKFLOWEXECUTION_MEMOENTRY._serialized_end = 5936 - _CONTINUEASNEWWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3770 - _CONTINUEASNEWWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3849 - _CANCELWORKFLOWEXECUTION._serialized_start = 6019 - _CANCELWORKFLOWEXECUTION._serialized_end = 6095 - _SETPATCHMARKER._serialized_start = 6097 - _SETPATCHMARKER._serialized_end = 6151 - _STARTCHILDWORKFLOWEXECUTION._serialized_start = 6154 - _STARTCHILDWORKFLOWEXECUTION._serialized_end = 7328 - _STARTCHILDWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3770 - _STARTCHILDWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3849 - _STARTCHILDWORKFLOWEXECUTION_MEMOENTRY._serialized_start = 5860 - _STARTCHILDWORKFLOWEXECUTION_MEMOENTRY._serialized_end = 5936 - _CANCELCHILDWORKFLOWEXECUTION._serialized_start = 7330 - _CANCELCHILDWORKFLOWEXECUTION._serialized_end = 7404 - _REQUESTCANCELEXTERNALWORKFLOWEXECUTION._serialized_start = 7407 - _REQUESTCANCELEXTERNALWORKFLOWEXECUTION._serialized_end = 7549 - _SIGNALEXTERNALWORKFLOWEXECUTION._serialized_start = 7552 - _SIGNALEXTERNALWORKFLOWEXECUTION._serialized_end = 7951 - _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3770 - _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3849 - _CANCELSIGNALWORKFLOW._serialized_start = 7953 - _CANCELSIGNALWORKFLOW._serialized_end = 7988 - _UPSERTWORKFLOWSEARCHATTRIBUTES._serialized_start = 7990 - _UPSERTWORKFLOWSEARCHATTRIBUTES._serialized_end = 8091 - _MODIFYWORKFLOWPROPERTIES._serialized_start = 8093 - _MODIFYWORKFLOWPROPERTIES._serialized_end = 8172 - _UPDATERESPONSE._serialized_start = 8175 - _UPDATERESPONSE._serialized_end = 8385 - _SCHEDULENEXUSOPERATION._serialized_start = 8388 - _SCHEDULENEXUSOPERATION._serialized_end = 8926 - _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._serialized_start = 8876 - _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._serialized_end = 8926 - _REQUESTCANCELNEXUSOPERATION._serialized_start = 8928 - _REQUESTCANCELNEXUSOPERATION._serialized_end = 8970 + _ACTIVITYCANCELLATIONTYPE._serialized_start = 10640 + _ACTIVITYCANCELLATIONTYPE._serialized_end = 10728 + _WORKFLOWCOMMAND._serialized_start = 571 + _WORKFLOWCOMMAND._serialized_end = 3502 + _SUBSCRIBENOTIFICATIONCHANNEL._serialized_start = 3504 + _SUBSCRIBENOTIFICATIONCHANNEL._serialized_end = 3551 + _UNSUBSCRIBENOTIFICATIONCHANNEL._serialized_start = 3553 + _UNSUBSCRIBENOTIFICATIONCHANNEL._serialized_end = 3602 + _WORKFLOWSTREAMCHANNELS._serialized_start = 3604 + _WORKFLOWSTREAMCHANNELS._serialized_end = 3646 + _WORKFLOWSTREAMPROGRESS._serialized_start = 3648 + _WORKFLOWSTREAMPROGRESS._serialized_end = 3725 + _WORKFLOWSTREAMQUIESCENT._serialized_start = 3728 + _WORKFLOWSTREAMQUIESCENT._serialized_end = 3895 + _EXTERNALSTREAMWAIT._serialized_start = 3897 + _EXTERNALSTREAMWAIT._serialized_end = 3984 + _EXTERNALSTREAMPARKRESULT._serialized_start = 3987 + _EXTERNALSTREAMPARKRESULT._serialized_end = 4227 + _PARKSETCONFIRMED._serialized_start = 4229 + _PARKSETCONFIRMED._serialized_end = 4247 + _STREAMSETBECAMEREADY._serialized_start = 4249 + _STREAMSETBECAMEREADY._serialized_end = 4271 + _EXTERNALSTREAMFINALIZED._serialized_start = 4273 + _EXTERNALSTREAMFINALIZED._serialized_end = 4362 + _WORKFLOWOUTPUTSTREAMCOMMIT._serialized_start = 4364 + _WORKFLOWOUTPUTSTREAMCOMMIT._serialized_end = 4489 + _WORKFLOWOUTPUTSTREAMBUFFERED._serialized_start = 4491 + _WORKFLOWOUTPUTSTREAMBUFFERED._serialized_end = 4577 + _STARTTIMER._serialized_start = 4579 + _STARTTIMER._serialized_end = 4662 + _CANCELTIMER._serialized_start = 4664 + _CANCELTIMER._serialized_end = 4690 + _SCHEDULEACTIVITY._serialized_start = 4693 + _SCHEDULEACTIVITY._serialized_end = 5517 + _SCHEDULEACTIVITY_HEADERSENTRY._serialized_start = 5438 + _SCHEDULEACTIVITY_HEADERSENTRY._serialized_end = 5517 + _SCHEDULELOCALACTIVITY._serialized_start = 5520 + _SCHEDULELOCALACTIVITY._serialized_end = 6307 + _SCHEDULELOCALACTIVITY_HEADERSENTRY._serialized_start = 5438 + _SCHEDULELOCALACTIVITY_HEADERSENTRY._serialized_end = 5517 + _REQUESTCANCELACTIVITY._serialized_start = 6309 + _REQUESTCANCELACTIVITY._serialized_end = 6345 + _REQUESTCANCELLOCALACTIVITY._serialized_start = 6347 + _REQUESTCANCELLOCALACTIVITY._serialized_end = 6388 + _QUERYRESULT._serialized_start = 6391 + _QUERYRESULT._serialized_end = 6547 + _QUERYSUCCESS._serialized_start = 6549 + _QUERYSUCCESS._serialized_end = 6614 + _COMPLETEWORKFLOWEXECUTION._serialized_start = 6616 + _COMPLETEWORKFLOWEXECUTION._serialized_end = 6692 + _FAILWORKFLOWEXECUTION._serialized_start = 6694 + _FAILWORKFLOWEXECUTION._serialized_end = 6768 + _CONTINUEASNEWWORKFLOWEXECUTION._serialized_start = 6771 + _CONTINUEASNEWWORKFLOWEXECUTION._serialized_end = 7685 + _CONTINUEASNEWWORKFLOWEXECUTION_MEMOENTRY._serialized_start = 7528 + _CONTINUEASNEWWORKFLOWEXECUTION_MEMOENTRY._serialized_end = 7604 + _CONTINUEASNEWWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 5438 + _CONTINUEASNEWWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 5517 + _CANCELWORKFLOWEXECUTION._serialized_start = 7687 + _CANCELWORKFLOWEXECUTION._serialized_end = 7763 + _SETPATCHMARKER._serialized_start = 7765 + _SETPATCHMARKER._serialized_end = 7819 + _STARTCHILDWORKFLOWEXECUTION._serialized_start = 7822 + _STARTCHILDWORKFLOWEXECUTION._serialized_end = 8996 + _STARTCHILDWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 5438 + _STARTCHILDWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 5517 + _STARTCHILDWORKFLOWEXECUTION_MEMOENTRY._serialized_start = 7528 + _STARTCHILDWORKFLOWEXECUTION_MEMOENTRY._serialized_end = 7604 + _CANCELCHILDWORKFLOWEXECUTION._serialized_start = 8998 + _CANCELCHILDWORKFLOWEXECUTION._serialized_end = 9072 + _REQUESTCANCELEXTERNALWORKFLOWEXECUTION._serialized_start = 9075 + _REQUESTCANCELEXTERNALWORKFLOWEXECUTION._serialized_end = 9217 + _SIGNALEXTERNALWORKFLOWEXECUTION._serialized_start = 9220 + _SIGNALEXTERNALWORKFLOWEXECUTION._serialized_end = 9619 + _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 5438 + _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 5517 + _CANCELSIGNALWORKFLOW._serialized_start = 9621 + _CANCELSIGNALWORKFLOW._serialized_end = 9656 + _UPSERTWORKFLOWSEARCHATTRIBUTES._serialized_start = 9658 + _UPSERTWORKFLOWSEARCHATTRIBUTES._serialized_end = 9759 + _MODIFYWORKFLOWPROPERTIES._serialized_start = 9761 + _MODIFYWORKFLOWPROPERTIES._serialized_end = 9840 + _UPDATERESPONSE._serialized_start = 9843 + _UPDATERESPONSE._serialized_end = 10053 + _SCHEDULENEXUSOPERATION._serialized_start = 10056 + _SCHEDULENEXUSOPERATION._serialized_end = 10594 + _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._serialized_start = 10544 + _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._serialized_end = 10594 + _REQUESTCANCELNEXUSOPERATION._serialized_start = 10596 + _REQUESTCANCELNEXUSOPERATION._serialized_end = 10638 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.pyi b/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.pyi index 4f8d4fca9c..1e2f5e897c 100644 --- a/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.pyi +++ b/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.pyi @@ -27,6 +27,7 @@ import temporalio.api.sdk.v1.event_group_marker_pb2 import temporalio.api.sdk.v1.user_metadata_pb2 import temporalio.bridge.proto.child_workflow.child_workflow_pb2 import temporalio.bridge.proto.common.common_pb2 +import temporalio.bridge.proto.external_data.external_data_pb2 import temporalio.bridge.proto.nexus.nexus_pb2 if sys.version_info >= (3, 10): @@ -103,8 +104,15 @@ class WorkflowCommand(google.protobuf.message.Message): UPDATE_RESPONSE_FIELD_NUMBER: builtins.int SCHEDULE_NEXUS_OPERATION_FIELD_NUMBER: builtins.int REQUEST_CANCEL_NEXUS_OPERATION_FIELD_NUMBER: builtins.int + WORKFLOW_STREAM_PROGRESS_FIELD_NUMBER: builtins.int + WORKFLOW_STREAM_QUIESCENT_FIELD_NUMBER: builtins.int + EXTERNAL_STREAM_PARK_RESULT_FIELD_NUMBER: builtins.int + EXTERNAL_STREAM_FINALIZED_FIELD_NUMBER: builtins.int + WORKFLOW_OUTPUT_STREAM_COMMIT_FIELD_NUMBER: builtins.int + WORKFLOW_OUTPUT_STREAM_BUFFERED_FIELD_NUMBER: builtins.int SUBSCRIBE_NOTIFICATION_CHANNEL_FIELD_NUMBER: builtins.int UNSUBSCRIBE_NOTIFICATION_CHANNEL_FIELD_NUMBER: builtins.int + WORKFLOW_STREAM_CHANNELS_FIELD_NUMBER: builtins.int @property def user_metadata(self) -> temporalio.api.sdk.v1.user_metadata_pb2.UserMetadata: """User metadata that may or may not be persisted into history depending on the command type. @@ -180,15 +188,29 @@ class WorkflowCommand(google.protobuf.message.Message): self, ) -> global___RequestCancelNexusOperation: ... @property - def subscribe_notification_channel(self) -> global___SubscribeNotificationChannel: - """23 to 28 are taken by the external stream commands, which are developed - alongside these and share this message. The two numbers below are fixed - with that family and must not be reused. - """ + def workflow_stream_progress(self) -> global___WorkflowStreamProgress: ... + @property + def workflow_stream_quiescent(self) -> global___WorkflowStreamQuiescent: ... + @property + def external_stream_park_result(self) -> global___ExternalStreamParkResult: ... + @property + def external_stream_finalized(self) -> global___ExternalStreamFinalized: ... + @property + def workflow_output_stream_commit(self) -> global___WorkflowOutputStreamCommit: ... + @property + def workflow_output_stream_buffered( + self, + ) -> global___WorkflowOutputStreamBuffered: ... + @property + def subscribe_notification_channel( + self, + ) -> global___SubscribeNotificationChannel: ... @property def unsubscribe_notification_channel( self, ) -> global___UnsubscribeNotificationChannel: ... + @property + def workflow_stream_channels(self) -> global___WorkflowStreamChannels: ... def __init__( self, *, @@ -227,10 +249,18 @@ class WorkflowCommand(google.protobuf.message.Message): schedule_nexus_operation: global___ScheduleNexusOperation | None = ..., request_cancel_nexus_operation: global___RequestCancelNexusOperation | None = ..., + workflow_stream_progress: global___WorkflowStreamProgress | None = ..., + workflow_stream_quiescent: global___WorkflowStreamQuiescent | None = ..., + external_stream_park_result: global___ExternalStreamParkResult | None = ..., + external_stream_finalized: global___ExternalStreamFinalized | None = ..., + workflow_output_stream_commit: global___WorkflowOutputStreamCommit | None = ..., + workflow_output_stream_buffered: global___WorkflowOutputStreamBuffered + | None = ..., subscribe_notification_channel: global___SubscribeNotificationChannel | None = ..., unsubscribe_notification_channel: global___UnsubscribeNotificationChannel | None = ..., + workflow_stream_channels: global___WorkflowStreamChannels | None = ..., ) -> None: ... def HasField( self, @@ -247,6 +277,10 @@ class WorkflowCommand(google.protobuf.message.Message): b"complete_workflow_execution", "continue_as_new_workflow_execution", b"continue_as_new_workflow_execution", + "external_stream_finalized", + b"external_stream_finalized", + "external_stream_park_result", + b"external_stream_park_result", "fail_workflow_execution", b"fail_workflow_execution", "modify_workflow_properties", @@ -287,6 +321,16 @@ class WorkflowCommand(google.protobuf.message.Message): b"user_metadata", "variant", b"variant", + "workflow_output_stream_buffered", + b"workflow_output_stream_buffered", + "workflow_output_stream_commit", + b"workflow_output_stream_commit", + "workflow_stream_channels", + b"workflow_stream_channels", + "workflow_stream_progress", + b"workflow_stream_progress", + "workflow_stream_quiescent", + b"workflow_stream_quiescent", ], ) -> builtins.bool: ... def ClearField( @@ -306,6 +350,10 @@ class WorkflowCommand(google.protobuf.message.Message): b"continue_as_new_workflow_execution", "event_group_markers", b"event_group_markers", + "external_stream_finalized", + b"external_stream_finalized", + "external_stream_park_result", + b"external_stream_park_result", "fail_workflow_execution", b"fail_workflow_execution", "modify_workflow_properties", @@ -346,6 +394,16 @@ class WorkflowCommand(google.protobuf.message.Message): b"user_metadata", "variant", b"variant", + "workflow_output_stream_buffered", + b"workflow_output_stream_buffered", + "workflow_output_stream_commit", + b"workflow_output_stream_commit", + "workflow_stream_channels", + b"workflow_stream_channels", + "workflow_stream_progress", + b"workflow_stream_progress", + "workflow_stream_quiescent", + b"workflow_stream_quiescent", ], ) -> None: ... def WhichOneof( @@ -374,8 +432,15 @@ class WorkflowCommand(google.protobuf.message.Message): "update_response", "schedule_nexus_operation", "request_cancel_nexus_operation", + "workflow_stream_progress", + "workflow_stream_quiescent", + "external_stream_park_result", + "external_stream_finalized", + "workflow_output_stream_commit", + "workflow_output_stream_buffered", "subscribe_notification_channel", "unsubscribe_notification_channel", + "workflow_stream_channels", ] | None ): ... @@ -430,6 +495,348 @@ class UnsubscribeNotificationChannel(google.protobuf.message.Message): global___UnsubscribeNotificationChannel = UnsubscribeNotificationChannel +class WorkflowStreamChannels(google.protobuf.message.Message): + """The complete set of notification channels the run listens on, one per open external stream + reader, in a stable order replay reproduces. + + Core subscribes the run to a channel it has not yet subscribed on the completion that ends the + Workflow Task, after the progress marker and never on a run-ending completion. Issued from the + activation that opened the reader, the server-bound subscribe command would end a task that + was meant to stay retained. Reported on every completion once a reader has been opened, the + empty set included: an absent command leaves Core's view unchanged, which is what the park and + finalization answers rely on. Carries no retention request of its own. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + CHANNELS_FIELD_NUMBER: builtins.int + @property + def channels( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[ + builtins.str + ]: ... + def __init__( + self, + *, + channels: collections.abc.Iterable[builtins.str] | None = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["channels", b"channels"] + ) -> None: ... + +global___WorkflowStreamChannels = WorkflowStreamChannels + +class WorkflowStreamProgress(google.protobuf.message.Message): + """Commits an observation delta for external streams. + + Emitted on *every* completion path where replay-visible stream state changed -- which includes + an activation that observed no records at all -- and independent of whether the Workflow Task + is retained. Consuming a record and committing that consumption are separate steps, and the + second is not conditional on why the Workflow Task ended. + + Ordering is normative: this command precedes every command whose value could depend on the + consumed data. On replay that guarantees integrity validation for a record runs before the + command derived from it is matched. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + OBSERVATION_DELTA_FIELD_NUMBER: builtins.int + REQUEST_ROLLOVER_FIELD_NUMBER: builtins.int + observation_delta: builtins.bytes + """The segments produced since the previous progress report for this Workflow Task. Opaque to + Core, which appends it to the accumulated annotation and never parses it. + """ + request_rollover: builtins.bool + """Set when the encoder is approaching the annotation byte budget and the runtime wants the + Workflow Task rolled over rather than the marker grown further. Core takes the rollover + path minus the finalization round trip, because this command already carries the terminal. + """ + def __init__( + self, + *, + observation_delta: builtins.bytes = ..., + request_rollover: builtins.bool = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "observation_delta", + b"observation_delta", + "request_rollover", + b"request_rollover", + ], + ) -> None: ... + +global___WorkflowStreamProgress = WorkflowStreamProgress + +class WorkflowStreamQuiescent(google.protobuf.message.Message): + """Asks Core to retain the open Workflow Task. Carries no annotation data -- retention and + progress are separate questions, and a completion may carry either command, both, or neither. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + QUIESCENCE_GENERATION_FIELD_NUMBER: builtins.int + WAITS_FIELD_NUMBER: builtins.int + IDLE_TIMEOUT_FIELD_NUMBER: builtins.int + quiescence_generation: builtins.int + """Identifies this complete blocked snapshot.""" + @property + def waits( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ExternalStreamWait + ]: + """The *complete* set of waits the Workflow is blocked on. A partial set would let one idle + stream park a Workflow Task another stream is still driving. + """ + @property + def idle_timeout(self) -> google.protobuf.duration_pb2.Duration: + """Already reduced by `min` over the quiescent set in wait_id order. Core rejects a + non-positive value as a malformed completion rather than coercing it. + """ + def __init__( + self, + *, + quiescence_generation: builtins.int = ..., + waits: collections.abc.Iterable[global___ExternalStreamWait] | None = ..., + idle_timeout: google.protobuf.duration_pb2.Duration | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["idle_timeout", b"idle_timeout"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "idle_timeout", + b"idle_timeout", + "quiescence_generation", + b"quiescence_generation", + "waits", + b"waits", + ], + ) -> None: ... + +global___WorkflowStreamQuiescent = WorkflowStreamQuiescent + +class ExternalStreamWait(google.protobuf.message.Message): + """One external stream wait. Shared by the commands above and by the activation jobs, so it takes + no command tag of its own. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + WAIT_ID_FIELD_NUMBER: builtins.int + GENERATION_FIELD_NUMBER: builtins.int + IMMEDIATELY_PARKABLE_FIELD_NUMBER: builtins.int + wait_id: builtins.int + generation: builtins.int + """Increments each time this subscription re-enters the blocked state. Never leaves the + Core/lang boundary. + """ + immediately_parkable: builtins.bool + """Normally set after a write fence. A single fenced stream does not park the Workflow Task; + Core bypasses the idle delay only when *every* active wait in the snapshot is set. + """ + def __init__( + self, + *, + wait_id: builtins.int = ..., + generation: builtins.int = ..., + immediately_parkable: builtins.bool = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "generation", + b"generation", + "immediately_parkable", + b"immediately_parkable", + "wait_id", + b"wait_id", + ], + ) -> None: ... + +global___ExternalStreamWait = ExternalStreamWait + +class ExternalStreamParkResult(google.protobuf.message.Message): + """Lang's answer to PrepareExternalStreamPark.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + QUIESCENCE_GENERATION_FIELD_NUMBER: builtins.int + CONFIRMED_FIELD_NUMBER: builtins.int + BECAME_READY_FIELD_NUMBER: builtins.int + FINAL_OBSERVATION_DELTA_FIELD_NUMBER: builtins.int + quiescence_generation: builtins.int + @property + def confirmed(self) -> global___ParkSetConfirmed: ... + @property + def became_ready(self) -> global___StreamSetBecameReady: ... + final_observation_delta: builtins.bytes + """Terminal observation delta for the marker Core is about to write. Present on `confirmed`: + only lang can encode the boundary, and Core must not write a marker whose annotation has + no terminal. + """ + def __init__( + self, + *, + quiescence_generation: builtins.int = ..., + confirmed: global___ParkSetConfirmed | None = ..., + became_ready: global___StreamSetBecameReady | None = ..., + final_observation_delta: builtins.bytes = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "became_ready", + b"became_ready", + "confirmed", + b"confirmed", + "outcome", + b"outcome", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "became_ready", + b"became_ready", + "confirmed", + b"confirmed", + "final_observation_delta", + b"final_observation_delta", + "outcome", + b"outcome", + "quiescence_generation", + b"quiescence_generation", + ], + ) -> None: ... + def WhichOneof( + self, oneof_group: typing_extensions.Literal["outcome", b"outcome"] + ) -> typing_extensions.Literal["confirmed", "became_ready"] | None: ... + +global___ExternalStreamParkResult = ExternalStreamParkResult + +class ParkSetConfirmed(google.protobuf.message.Message): + """Every stream was still empty after intents were installed and every stream was rechecked.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___ParkSetConfirmed = ParkSetConfirmed + +class StreamSetBecameReady(google.protobuf.message.Message): + """A recheck found records, so this parking generation is aborted and Core issues a normal + resolve activation rather than running user code from inside the park path. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +global___StreamSetBecameReady = StreamSetBecameReady + +class ExternalStreamFinalized(google.protobuf.message.Message): + """Lang's answer to FinalizeExternalStreams, for the paths where Core decides the boundary and no + park handshake runs. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + QUIESCENCE_GENERATION_FIELD_NUMBER: builtins.int + FINAL_OBSERVATION_DELTA_FIELD_NUMBER: builtins.int + quiescence_generation: builtins.int + final_observation_delta: builtins.bytes + def __init__( + self, + *, + quiescence_generation: builtins.int = ..., + final_observation_delta: builtins.bytes = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "final_observation_delta", + b"final_observation_delta", + "quiescence_generation", + b"quiescence_generation", + ], + ) -> None: ... + +global___ExternalStreamFinalized = ExternalStreamFinalized + +class WorkflowOutputStreamCommit(google.protobuf.message.Message): + """Reports that the output batch for this Workflow Task has been durably staged outside History. + Core records only this compact manifest in the shared external-stream marker. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MANIFEST_FIELD_NUMBER: builtins.int + REQUEST_ROLLOVER_FIELD_NUMBER: builtins.int + @property + def manifest( + self, + ) -> temporalio.bridge.proto.external_data.external_data_pb2.ExternalOutputStreamManifest: ... + request_rollover: builtins.bool + """The deterministic output capacity was reached and this task must request a replacement.""" + def __init__( + self, + *, + manifest: temporalio.bridge.proto.external_data.external_data_pb2.ExternalOutputStreamManifest + | None = ..., + request_rollover: builtins.bool = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["manifest", b"manifest"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "manifest", b"manifest", "request_rollover", b"request_rollover" + ], + ) -> None: ... + +global___WorkflowOutputStreamCommit = WorkflowOutputStreamCommit + +class WorkflowOutputStreamBuffered(google.protobuf.message.Message): + """Reports that external output is buffered in lang but has not yet been staged. Core retains the + open Workflow Task until the earliest reported deadline and then asks lang to finalize it. + """ + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + MAX_PUBLISH_LATENCY_FIELD_NUMBER: builtins.int + @property + def max_publish_latency(self) -> google.protobuf.duration_pb2.Duration: ... + def __init__( + self, + *, + max_publish_latency: google.protobuf.duration_pb2.Duration | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "max_publish_latency", b"max_publish_latency" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "max_publish_latency", b"max_publish_latency" + ], + ) -> None: ... + +global___WorkflowOutputStreamBuffered = WorkflowOutputStreamBuffered + class StartTimer(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor diff --git a/temporalio/bridge/sdk-core b/temporalio/bridge/sdk-core index 7b9b5d97f9..f3941a831e 160000 --- a/temporalio/bridge/sdk-core +++ b/temporalio/bridge/sdk-core @@ -1 +1 @@ -Subproject commit 7b9b5d97f92fc32bcf24c41a92469a02e8f53a0c +Subproject commit f3941a831eae3b4a996b039f28cf8230b7567d7e