diff --git a/temporalio/bridge/Cargo.lock b/temporalio/bridge/Cargo.lock index 2cd727c4e..638673e6a 100644 --- a/temporalio/bridge/Cargo.lock +++ b/temporalio/bridge/Cargo.lock @@ -2660,7 +2660,6 @@ dependencies = [ "tokio-stream", "tokio-util", "tonic", - "tonic-build", "tracing", "tracing-subscriber", "url", diff --git a/temporalio/bridge/proto/__init__.py b/temporalio/bridge/proto/__init__.py index c55944734..d4e90a2fc 100644 --- a/temporalio/bridge/proto/__init__.py +++ b/temporalio/bridge/proto/__init__.py @@ -3,6 +3,7 @@ ActivitySlotInfo, ActivityTaskCompletion, LocalActivitySlotInfo, + NexusSlotInfo, WorkflowSlotInfo, ) @@ -11,5 +12,6 @@ "ActivitySlotInfo", "ActivityTaskCompletion", "LocalActivitySlotInfo", + "NexusSlotInfo", "WorkflowSlotInfo", ] diff --git a/temporalio/bridge/proto/core_interface_pb2.py b/temporalio/bridge/proto/core_interface_pb2.py index cbc07797d..7531a37a5 100644 --- a/temporalio/bridge/proto/core_interface_pb2.py +++ b/temporalio/bridge/proto/core_interface_pb2.py @@ -44,7 +44,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(\tB3\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?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(\tB3\xea\x02\x30Temporalio::Internal::Bridge::Api::CoreInterfaceb\x06proto3' ) @@ -53,6 +53,7 @@ _WORKFLOWSLOTINFO = DESCRIPTOR.message_types_by_name["WorkflowSlotInfo"] _ACTIVITYSLOTINFO = DESCRIPTOR.message_types_by_name["ActivitySlotInfo"] _LOCALACTIVITYSLOTINFO = DESCRIPTOR.message_types_by_name["LocalActivitySlotInfo"] +_NEXUSSLOTINFO = DESCRIPTOR.message_types_by_name["NexusSlotInfo"] ActivityHeartbeat = _reflection.GeneratedProtocolMessageType( "ActivityHeartbeat", (_message.Message,), @@ -108,6 +109,17 @@ ) _sym_db.RegisterMessage(LocalActivitySlotInfo) +NexusSlotInfo = _reflection.GeneratedProtocolMessageType( + "NexusSlotInfo", + (_message.Message,), + { + "DESCRIPTOR": _NEXUSSLOTINFO, + "__module__": "temporal.sdk.core.core_interface_pb2", + # @@protoc_insertion_point(class_scope:coresdk.NexusSlotInfo) + }, +) +_sym_db.RegisterMessage(NexusSlotInfo) + if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = ( @@ -123,4 +135,6 @@ _ACTIVITYSLOTINFO._serialized_end = 882 _LOCALACTIVITYSLOTINFO._serialized_start = 884 _LOCALACTIVITYSLOTINFO._serialized_end = 930 + _NEXUSSLOTINFO._serialized_start = 932 + _NEXUSSLOTINFO._serialized_end = 983 # @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/core_interface_pb2.pyi b/temporalio/bridge/proto/core_interface_pb2.pyi index 1368292d1..020359cf0 100644 --- a/temporalio/bridge/proto/core_interface_pb2.pyi +++ b/temporalio/bridge/proto/core_interface_pb2.pyi @@ -141,3 +141,27 @@ class LocalActivitySlotInfo(google.protobuf.message.Message): ) -> None: ... global___LocalActivitySlotInfo = LocalActivitySlotInfo + +class NexusSlotInfo(google.protobuf.message.Message): + """Info about nexus task slot usage""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SERVICE_FIELD_NUMBER: builtins.int + OPERATION_FIELD_NUMBER: builtins.int + service: builtins.str + operation: builtins.str + def __init__( + self, + *, + service: builtins.str = ..., + operation: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "operation", b"operation", "service", b"service" + ], + ) -> None: ... + +global___NexusSlotInfo = NexusSlotInfo diff --git a/temporalio/bridge/proto/nexus/__init__.py b/temporalio/bridge/proto/nexus/__init__.py new file mode 100644 index 000000000..84d0d7558 --- /dev/null +++ b/temporalio/bridge/proto/nexus/__init__.py @@ -0,0 +1,15 @@ +from .nexus_pb2 import ( + CancelNexusTask, + NexusOperationResult, + NexusTask, + NexusTaskCancelReason, + NexusTaskCompletion, +) + +__all__ = [ + "CancelNexusTask", + "NexusOperationResult", + "NexusTask", + "NexusTaskCancelReason", + "NexusTaskCompletion", +] diff --git a/temporalio/bridge/proto/nexus/nexus_pb2.py b/temporalio/bridge/proto/nexus/nexus_pb2.py new file mode 100644 index 000000000..874b74345 --- /dev/null +++ b/temporalio/bridge/proto/nexus/nexus_pb2.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: temporal/sdk/core/nexus/nexus.proto +"""Generated protocol buffer code.""" + +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import enum_type_wrapper + +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from temporalio.api.common.v1 import ( + message_pb2 as temporal_dot_api_dot_common_dot_v1_dot_message__pb2, +) +from temporalio.api.failure.v1 import ( + message_pb2 as temporal_dot_api_dot_failure_dot_v1_dot_message__pb2, +) +from temporalio.api.nexus.v1 import ( + message_pb2 as temporal_dot_api_dot_nexus_dot_v1_dot_message__pb2, +) +from temporalio.api.workflowservice.v1 import ( + request_response_pb2 as temporal_dot_api_dot_workflowservice_dot_v1_dot_request__response__pb2, +) +from temporalio.bridge.proto.common import ( + common_pb2 as temporal_dot_sdk_dot_core_dot_common_dot_common__pb2, +) + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( + b'\n#temporal/sdk/core/nexus/nexus.proto\x12\rcoresdk.nexus\x1a$temporal/api/common/v1/message.proto\x1a%temporal/api/failure/v1/message.proto\x1a#temporal/api/nexus/v1/message.proto\x1a\x36temporal/api/workflowservice/v1/request_response.proto\x1a%temporal/sdk/core/common/common.proto"\xf8\x01\n\x14NexusOperationResult\x12\x34\n\tcompleted\x18\x01 \x01(\x0b\x32\x1f.temporal.api.common.v1.PayloadH\x00\x12\x32\n\x06\x66\x61iled\x18\x02 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x12\x35\n\tcancelled\x18\x03 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x12\x35\n\ttimed_out\x18\x04 \x01(\x0b\x32 .temporal.api.failure.v1.FailureH\x00\x42\x08\n\x06status"\xb5\x01\n\x13NexusTaskCompletion\x12\x12\n\ntask_token\x18\x01 \x01(\x0c\x12\x34\n\tcompleted\x18\x02 \x01(\x0b\x32\x1f.temporal.api.nexus.v1.ResponseH\x00\x12\x34\n\x05\x65rror\x18\x03 \x01(\x0b\x32#.temporal.api.nexus.v1.HandlerErrorH\x00\x12\x14\n\nack_cancel\x18\x04 \x01(\x08H\x00\x42\x08\n\x06status"\x9a\x01\n\tNexusTask\x12K\n\x04task\x18\x01 \x01(\x0b\x32;.temporal.api.workflowservice.v1.PollNexusTaskQueueResponseH\x00\x12\x35\n\x0b\x63\x61ncel_task\x18\x02 \x01(\x0b\x32\x1e.coresdk.nexus.CancelNexusTaskH\x00\x42\t\n\x07variant"[\n\x0f\x43\x61ncelNexusTask\x12\x12\n\ntask_token\x18\x01 \x01(\x0c\x12\x34\n\x06reason\x18\x02 \x01(\x0e\x32$.coresdk.nexus.NexusTaskCancelReason*;\n\x15NexusTaskCancelReason\x12\r\n\tTIMED_OUT\x10\x00\x12\x13\n\x0fWORKER_SHUTDOWN\x10\x01\x42+\xea\x02(Temporalio::Internal::Bridge::Api::Nexusb\x06proto3' +) + +_NEXUSTASKCANCELREASON = DESCRIPTOR.enum_types_by_name["NexusTaskCancelReason"] +NexusTaskCancelReason = enum_type_wrapper.EnumTypeWrapper(_NEXUSTASKCANCELREASON) +TIMED_OUT = 0 +WORKER_SHUTDOWN = 1 + + +_NEXUSOPERATIONRESULT = DESCRIPTOR.message_types_by_name["NexusOperationResult"] +_NEXUSTASKCOMPLETION = DESCRIPTOR.message_types_by_name["NexusTaskCompletion"] +_NEXUSTASK = DESCRIPTOR.message_types_by_name["NexusTask"] +_CANCELNEXUSTASK = DESCRIPTOR.message_types_by_name["CancelNexusTask"] +NexusOperationResult = _reflection.GeneratedProtocolMessageType( + "NexusOperationResult", + (_message.Message,), + { + "DESCRIPTOR": _NEXUSOPERATIONRESULT, + "__module__": "temporal.sdk.core.nexus.nexus_pb2", + # @@protoc_insertion_point(class_scope:coresdk.nexus.NexusOperationResult) + }, +) +_sym_db.RegisterMessage(NexusOperationResult) + +NexusTaskCompletion = _reflection.GeneratedProtocolMessageType( + "NexusTaskCompletion", + (_message.Message,), + { + "DESCRIPTOR": _NEXUSTASKCOMPLETION, + "__module__": "temporal.sdk.core.nexus.nexus_pb2", + # @@protoc_insertion_point(class_scope:coresdk.nexus.NexusTaskCompletion) + }, +) +_sym_db.RegisterMessage(NexusTaskCompletion) + +NexusTask = _reflection.GeneratedProtocolMessageType( + "NexusTask", + (_message.Message,), + { + "DESCRIPTOR": _NEXUSTASK, + "__module__": "temporal.sdk.core.nexus.nexus_pb2", + # @@protoc_insertion_point(class_scope:coresdk.nexus.NexusTask) + }, +) +_sym_db.RegisterMessage(NexusTask) + +CancelNexusTask = _reflection.GeneratedProtocolMessageType( + "CancelNexusTask", + (_message.Message,), + { + "DESCRIPTOR": _CANCELNEXUSTASK, + "__module__": "temporal.sdk.core.nexus.nexus_pb2", + # @@protoc_insertion_point(class_scope:coresdk.nexus.CancelNexusTask) + }, +) +_sym_db.RegisterMessage(CancelNexusTask) + +if _descriptor._USE_C_DESCRIPTORS == False: + DESCRIPTOR._options = None + DESCRIPTOR._serialized_options = ( + b"\352\002(Temporalio::Internal::Bridge::Api::Nexus" + ) + _NEXUSTASKCANCELREASON._serialized_start = 948 + _NEXUSTASKCANCELREASON._serialized_end = 1007 + _NEXUSOPERATIONRESULT._serialized_start = 264 + _NEXUSOPERATIONRESULT._serialized_end = 512 + _NEXUSTASKCOMPLETION._serialized_start = 515 + _NEXUSTASKCOMPLETION._serialized_end = 696 + _NEXUSTASK._serialized_start = 699 + _NEXUSTASK._serialized_end = 853 + _CANCELNEXUSTASK._serialized_start = 855 + _CANCELNEXUSTASK._serialized_end = 946 +# @@protoc_insertion_point(module_scope) diff --git a/temporalio/bridge/proto/nexus/nexus_pb2.pyi b/temporalio/bridge/proto/nexus/nexus_pb2.pyi new file mode 100644 index 000000000..3fb57cc64 --- /dev/null +++ b/temporalio/bridge/proto/nexus/nexus_pb2.pyi @@ -0,0 +1,254 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +import builtins +import sys +import typing + +import google.protobuf.descriptor +import google.protobuf.internal.enum_type_wrapper +import google.protobuf.message + +import temporalio.api.common.v1.message_pb2 +import temporalio.api.failure.v1.message_pb2 +import temporalio.api.nexus.v1.message_pb2 +import temporalio.api.workflowservice.v1.request_response_pb2 + +if sys.version_info >= (3, 10): + import typing as typing_extensions +else: + import typing_extensions + +DESCRIPTOR: google.protobuf.descriptor.FileDescriptor + +class _NexusTaskCancelReason: + ValueType = typing.NewType("ValueType", builtins.int) + V: typing_extensions.TypeAlias = ValueType + +class _NexusTaskCancelReasonEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ + _NexusTaskCancelReason.ValueType + ], + builtins.type, +): # noqa: F821 + DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor + TIMED_OUT: _NexusTaskCancelReason.ValueType # 0 + """The nexus task is known to have timed out""" + WORKER_SHUTDOWN: _NexusTaskCancelReason.ValueType # 1 + """The worker is shutting down""" + +class NexusTaskCancelReason( + _NexusTaskCancelReason, metaclass=_NexusTaskCancelReasonEnumTypeWrapper +): ... + +TIMED_OUT: NexusTaskCancelReason.ValueType # 0 +"""The nexus task is known to have timed out""" +WORKER_SHUTDOWN: NexusTaskCancelReason.ValueType # 1 +"""The worker is shutting down""" +global___NexusTaskCancelReason = NexusTaskCancelReason + +class NexusOperationResult(google.protobuf.message.Message): + """Used by core to resolve nexus operations.""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + COMPLETED_FIELD_NUMBER: builtins.int + FAILED_FIELD_NUMBER: builtins.int + CANCELLED_FIELD_NUMBER: builtins.int + TIMED_OUT_FIELD_NUMBER: builtins.int + @property + def completed(self) -> temporalio.api.common.v1.message_pb2.Payload: ... + @property + def failed(self) -> temporalio.api.failure.v1.message_pb2.Failure: ... + @property + def cancelled(self) -> temporalio.api.failure.v1.message_pb2.Failure: ... + @property + def timed_out(self) -> temporalio.api.failure.v1.message_pb2.Failure: ... + def __init__( + self, + *, + completed: temporalio.api.common.v1.message_pb2.Payload | None = ..., + failed: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + cancelled: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + timed_out: temporalio.api.failure.v1.message_pb2.Failure | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "cancelled", + b"cancelled", + "completed", + b"completed", + "failed", + b"failed", + "status", + b"status", + "timed_out", + b"timed_out", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "cancelled", + b"cancelled", + "completed", + b"completed", + "failed", + b"failed", + "status", + b"status", + "timed_out", + b"timed_out", + ], + ) -> None: ... + def WhichOneof( + self, oneof_group: typing_extensions.Literal["status", b"status"] + ) -> ( + typing_extensions.Literal["completed", "failed", "cancelled", "timed_out"] + | None + ): ... + +global___NexusOperationResult = NexusOperationResult + +class NexusTaskCompletion(google.protobuf.message.Message): + """A response to a Nexus task""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TASK_TOKEN_FIELD_NUMBER: builtins.int + COMPLETED_FIELD_NUMBER: builtins.int + ERROR_FIELD_NUMBER: builtins.int + ACK_CANCEL_FIELD_NUMBER: builtins.int + task_token: builtins.bytes + """The unique identifier for this task provided in the poll response""" + @property + def completed(self) -> temporalio.api.nexus.v1.message_pb2.Response: + """The handler completed (successfully or not). Note that the response kind must match the + request kind (start or cancel). + """ + @property + def error(self) -> temporalio.api.nexus.v1.message_pb2.HandlerError: + """The handler could not complete the request for some reason.""" + ack_cancel: builtins.bool + """The lang SDK acknowledges that it is responding to a `CancelNexusTask` and thus the + response is irrelevant. This is not the only way to respond to a cancel, the other + variants can still be used, but this variant should be used when the handler was aborted + by cancellation. + """ + def __init__( + self, + *, + task_token: builtins.bytes = ..., + completed: temporalio.api.nexus.v1.message_pb2.Response | None = ..., + error: temporalio.api.nexus.v1.message_pb2.HandlerError | None = ..., + ack_cancel: builtins.bool = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "ack_cancel", + b"ack_cancel", + "completed", + b"completed", + "error", + b"error", + "status", + b"status", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "ack_cancel", + b"ack_cancel", + "completed", + b"completed", + "error", + b"error", + "status", + b"status", + "task_token", + b"task_token", + ], + ) -> None: ... + def WhichOneof( + self, oneof_group: typing_extensions.Literal["status", b"status"] + ) -> typing_extensions.Literal["completed", "error", "ack_cancel"] | None: ... + +global___NexusTaskCompletion = NexusTaskCompletion + +class NexusTask(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TASK_FIELD_NUMBER: builtins.int + CANCEL_TASK_FIELD_NUMBER: builtins.int + @property + def task( + self, + ) -> temporalio.api.workflowservice.v1.request_response_pb2.PollNexusTaskQueueResponse: + """A nexus task from server""" + @property + def cancel_task(self) -> global___CancelNexusTask: + """A request by Core to notify an in-progress operation handler that it should cancel. This + is distinct from a `CancelOperationRequest` from the server, which results from the user + requesting the cancellation of an operation. Handling this variant should result in + something like cancelling a cancellation token given to the user's operation handler. + + These do not count as a separate task for the purposes of completing all issued tasks, + but rather count as a sort of modification to the already-issued task which is being + cancelled. + + EX: Core knows the nexus operation has timed out, and it does not make sense for the + user's operation handler to continue doing work. + """ + def __init__( + self, + *, + task: temporalio.api.workflowservice.v1.request_response_pb2.PollNexusTaskQueueResponse + | None = ..., + cancel_task: global___CancelNexusTask | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "cancel_task", b"cancel_task", "task", b"task", "variant", b"variant" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "cancel_task", b"cancel_task", "task", b"task", "variant", b"variant" + ], + ) -> None: ... + def WhichOneof( + self, oneof_group: typing_extensions.Literal["variant", b"variant"] + ) -> typing_extensions.Literal["task", "cancel_task"] | None: ... + +global___NexusTask = NexusTask + +class CancelNexusTask(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + TASK_TOKEN_FIELD_NUMBER: builtins.int + REASON_FIELD_NUMBER: builtins.int + task_token: builtins.bytes + """The task token from the PollNexusTaskQueueResponse""" + reason: global___NexusTaskCancelReason.ValueType + """Why Core is asking for this operation to be cancelled""" + def __init__( + self, + *, + task_token: builtins.bytes = ..., + reason: global___NexusTaskCancelReason.ValueType = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "reason", b"reason", "task_token", b"task_token" + ], + ) -> None: ... + +global___CancelNexusTask = CancelNexusTask diff --git a/temporalio/bridge/proto/workflow_activation/__init__.py b/temporalio/bridge/proto/workflow_activation/__init__.py index 3d01a2cd6..5c178e218 100644 --- a/temporalio/bridge/proto/workflow_activation/__init__.py +++ b/temporalio/bridge/proto/workflow_activation/__init__.py @@ -12,6 +12,8 @@ ResolveChildWorkflowExecutionStartCancelled, ResolveChildWorkflowExecutionStartFailure, ResolveChildWorkflowExecutionStartSuccess, + ResolveNexusOperation, + ResolveNexusOperationStart, ResolveRequestCancelExternalWorkflow, ResolveSignalExternalWorkflow, SignalWorkflow, @@ -34,6 +36,8 @@ "ResolveChildWorkflowExecutionStartCancelled", "ResolveChildWorkflowExecutionStartFailure", "ResolveChildWorkflowExecutionStartSuccess", + "ResolveNexusOperation", + "ResolveNexusOperationStart", "ResolveRequestCancelExternalWorkflow", "ResolveSignalExternalWorkflow", "SignalWorkflow", diff --git a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py index 0ac544a2f..6262030fe 100644 --- a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py +++ b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.py @@ -15,6 +15,7 @@ from google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from temporalio.api.common.v1 import ( @@ -38,9 +39,12 @@ from temporalio.bridge.proto.common import ( common_pb2 as temporal_dot_sdk_dot_core_dot_common_dot_common__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_activation/workflow_activation.proto\x12\x1b\x63oresdk.workflow_activation\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1egoogle/protobuf/duration.proto\x1a%temporal/api/failure/v1/message.proto\x1a$temporal/api/update/v1/message.proto\x1a$temporal/api/common/v1/message.proto\x1a$temporal/api/enums/v1/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"\xc7\x02\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\x12!\n\x19\x62uild_id_for_current_task\x18\t \x01(\t"\xa7\t\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\x12I\n\x11remove_from_cache\x18\x32 \x01(\x0b\x32,.coresdk.workflow_activation.RemoveFromCacheH\x00\x42\t\n\x07variant"\xe3\t\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\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"B\n\x0e\x43\x61ncelWorkflow\x12\x30\n\x07\x64\x65tails\x18\x01 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload"\x83\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\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"_\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"f\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"\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"\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/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"\xc7\x02\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\x12!\n\x19\x62uild_id_for_current_task\x18\t \x01(\t"\xe0\n\n\x15WorkflowActivationJob\x12N\n\x13initialize_workflow\x18\x01 \x01(\x0b\x32/.coresdk.workflow_activation.InitializeWorkflowH\x00\x12<\n\nfire_timer\x18\x02 \x01(\x0b\x32&.coresdk.workflow_activation.FireTimerH\x00\x12K\n\x12update_random_seed\x18\x04 \x01(\x0b\x32-.coresdk.workflow_activation.UpdateRandomSeedH\x00\x12\x44\n\x0equery_workflow\x18\x05 \x01(\x0b\x32*.coresdk.workflow_activation.QueryWorkflowH\x00\x12\x46\n\x0f\x63\x61ncel_workflow\x18\x06 \x01(\x0b\x32+.coresdk.workflow_activation.CancelWorkflowH\x00\x12\x46\n\x0fsignal_workflow\x18\x07 \x01(\x0b\x32+.coresdk.workflow_activation.SignalWorkflowH\x00\x12H\n\x10resolve_activity\x18\x08 \x01(\x0b\x32,.coresdk.workflow_activation.ResolveActivityH\x00\x12G\n\x10notify_has_patch\x18\t \x01(\x0b\x32+.coresdk.workflow_activation.NotifyHasPatchH\x00\x12q\n&resolve_child_workflow_execution_start\x18\n \x01(\x0b\x32?.coresdk.workflow_activation.ResolveChildWorkflowExecutionStartH\x00\x12\x66\n resolve_child_workflow_execution\x18\x0b \x01(\x0b\x32:.coresdk.workflow_activation.ResolveChildWorkflowExecutionH\x00\x12\x66\n resolve_signal_external_workflow\x18\x0c \x01(\x0b\x32:.coresdk.workflow_activation.ResolveSignalExternalWorkflowH\x00\x12u\n(resolve_request_cancel_external_workflow\x18\r \x01(\x0b\x32\x41.coresdk.workflow_activation.ResolveRequestCancelExternalWorkflowH\x00\x12:\n\tdo_update\x18\x0e \x01(\x0b\x32%.coresdk.workflow_activation.DoUpdateH\x00\x12`\n\x1dresolve_nexus_operation_start\x18\x0f \x01(\x0b\x32\x37.coresdk.workflow_activation.ResolveNexusOperationStartH\x00\x12U\n\x17resolve_nexus_operation\x18\x10 \x01(\x0b\x32\x32.coresdk.workflow_activation.ResolveNexusOperationH\x00\x12I\n\x11remove_from_cache\x18\x32 \x01(\x0b\x32,.coresdk.workflow_activation.RemoveFromCacheH\x00\x42\t\n\x07variant"\xe3\t\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\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"B\n\x0e\x43\x61ncelWorkflow\x12\x30\n\x07\x64\x65tails\x18\x01 \x03(\x0b\x32\x1f.temporal.api.common.v1.Payload"\x83\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\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"_\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"f\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"\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"\xa7\x01\n\x1aResolveNexusOperationStart\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12\x16\n\x0coperation_id\x18\x02 \x01(\tH\x00\x12\x16\n\x0cstarted_sync\x18\x03 \x01(\x08H\x00\x12\x42\n\x16\x63\x61ncelled_before_start\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' ) @@ -82,6 +86,10 @@ ] _DOUPDATE = DESCRIPTOR.message_types_by_name["DoUpdate"] _DOUPDATE_HEADERSENTRY = _DOUPDATE.nested_types_by_name["HeadersEntry"] +_RESOLVENEXUSOPERATIONSTART = DESCRIPTOR.message_types_by_name[ + "ResolveNexusOperationStart" +] +_RESOLVENEXUSOPERATION = DESCRIPTOR.message_types_by_name["ResolveNexusOperation"] _REMOVEFROMCACHE = DESCRIPTOR.message_types_by_name["RemoveFromCache"] _REMOVEFROMCACHE_EVICTIONREASON = _REMOVEFROMCACHE.enum_types_by_name["EvictionReason"] WorkflowActivation = _reflection.GeneratedProtocolMessageType( @@ -322,6 +330,28 @@ _sym_db.RegisterMessage(DoUpdate) _sym_db.RegisterMessage(DoUpdate.HeadersEntry) +ResolveNexusOperationStart = _reflection.GeneratedProtocolMessageType( + "ResolveNexusOperationStart", + (_message.Message,), + { + "DESCRIPTOR": _RESOLVENEXUSOPERATIONSTART, + "__module__": "temporal.sdk.core.workflow_activation.workflow_activation_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_activation.ResolveNexusOperationStart) + }, +) +_sym_db.RegisterMessage(ResolveNexusOperationStart) + +ResolveNexusOperation = _reflection.GeneratedProtocolMessageType( + "ResolveNexusOperation", + (_message.Message,), + { + "DESCRIPTOR": _RESOLVENEXUSOPERATION, + "__module__": "temporal.sdk.core.workflow_activation.workflow_activation_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_activation.ResolveNexusOperation) + }, +) +_sym_db.RegisterMessage(ResolveNexusOperation) + RemoveFromCache = _reflection.GeneratedProtocolMessageType( "RemoveFromCache", (_message.Message,), @@ -346,52 +376,56 @@ _SIGNALWORKFLOW_HEADERSENTRY._serialized_options = b"8\001" _DOUPDATE_HEADERSENTRY._options = None _DOUPDATE_HEADERSENTRY._serialized_options = b"8\001" - _WORKFLOWACTIVATION._serialized_start = 466 - _WORKFLOWACTIVATION._serialized_end = 793 - _WORKFLOWACTIVATIONJOB._serialized_start = 796 - _WORKFLOWACTIVATIONJOB._serialized_end = 1987 - _INITIALIZEWORKFLOW._serialized_start = 1990 - _INITIALIZEWORKFLOW._serialized_end = 3241 - _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_start = 3162 - _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_end = 3241 - _FIRETIMER._serialized_start = 3243 - _FIRETIMER._serialized_end = 3267 - _RESOLVEACTIVITY._serialized_start = 3269 - _RESOLVEACTIVITY._serialized_end = 3378 - _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_start = 3381 - _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_end = 3718 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_start = 3720 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_end = 3779 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_start = 3782 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_end = 3948 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_start = 3950 - _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_end = 4046 - _RESOLVECHILDWORKFLOWEXECUTION._serialized_start = 4048 - _RESOLVECHILDWORKFLOWEXECUTION._serialized_end = 4153 - _UPDATERANDOMSEED._serialized_start = 4155 - _UPDATERANDOMSEED._serialized_end = 4198 - _QUERYWORKFLOW._serialized_start = 4201 - _QUERYWORKFLOW._serialized_end = 4461 - _QUERYWORKFLOW_HEADERSENTRY._serialized_start = 3162 - _QUERYWORKFLOW_HEADERSENTRY._serialized_end = 3241 - _CANCELWORKFLOW._serialized_start = 4463 - _CANCELWORKFLOW._serialized_end = 4529 - _SIGNALWORKFLOW._serialized_start = 4532 - _SIGNALWORKFLOW._serialized_end = 4791 - _SIGNALWORKFLOW_HEADERSENTRY._serialized_start = 3162 - _SIGNALWORKFLOW_HEADERSENTRY._serialized_end = 3241 - _NOTIFYHASPATCH._serialized_start = 4793 - _NOTIFYHASPATCH._serialized_end = 4827 - _RESOLVESIGNALEXTERNALWORKFLOW._serialized_start = 4829 - _RESOLVESIGNALEXTERNALWORKFLOW._serialized_end = 4924 - _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_start = 4926 - _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_end = 5028 - _DOUPDATE._serialized_start = 5031 - _DOUPDATE._serialized_end = 5362 - _DOUPDATE_HEADERSENTRY._serialized_start = 3162 - _DOUPDATE_HEADERSENTRY._serialized_end = 3241 - _REMOVEFROMCACHE._serialized_start = 5365 - _REMOVEFROMCACHE._serialized_end = 5717 - _REMOVEFROMCACHE_EVICTIONREASON._serialized_start = 5479 - _REMOVEFROMCACHE_EVICTIONREASON._serialized_end = 5717 + _WORKFLOWACTIVATION._serialized_start = 532 + _WORKFLOWACTIVATION._serialized_end = 859 + _WORKFLOWACTIVATIONJOB._serialized_start = 862 + _WORKFLOWACTIVATIONJOB._serialized_end = 2238 + _INITIALIZEWORKFLOW._serialized_start = 2241 + _INITIALIZEWORKFLOW._serialized_end = 3492 + _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_start = 3413 + _INITIALIZEWORKFLOW_HEADERSENTRY._serialized_end = 3492 + _FIRETIMER._serialized_start = 3494 + _FIRETIMER._serialized_end = 3518 + _RESOLVEACTIVITY._serialized_start = 3520 + _RESOLVEACTIVITY._serialized_end = 3629 + _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_start = 3632 + _RESOLVECHILDWORKFLOWEXECUTIONSTART._serialized_end = 3969 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_start = 3971 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTSUCCESS._serialized_end = 4030 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_start = 4033 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTFAILURE._serialized_end = 4199 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_start = 4201 + _RESOLVECHILDWORKFLOWEXECUTIONSTARTCANCELLED._serialized_end = 4297 + _RESOLVECHILDWORKFLOWEXECUTION._serialized_start = 4299 + _RESOLVECHILDWORKFLOWEXECUTION._serialized_end = 4404 + _UPDATERANDOMSEED._serialized_start = 4406 + _UPDATERANDOMSEED._serialized_end = 4449 + _QUERYWORKFLOW._serialized_start = 4452 + _QUERYWORKFLOW._serialized_end = 4712 + _QUERYWORKFLOW_HEADERSENTRY._serialized_start = 3413 + _QUERYWORKFLOW_HEADERSENTRY._serialized_end = 3492 + _CANCELWORKFLOW._serialized_start = 4714 + _CANCELWORKFLOW._serialized_end = 4780 + _SIGNALWORKFLOW._serialized_start = 4783 + _SIGNALWORKFLOW._serialized_end = 5042 + _SIGNALWORKFLOW_HEADERSENTRY._serialized_start = 3413 + _SIGNALWORKFLOW_HEADERSENTRY._serialized_end = 3492 + _NOTIFYHASPATCH._serialized_start = 5044 + _NOTIFYHASPATCH._serialized_end = 5078 + _RESOLVESIGNALEXTERNALWORKFLOW._serialized_start = 5080 + _RESOLVESIGNALEXTERNALWORKFLOW._serialized_end = 5175 + _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_start = 5177 + _RESOLVEREQUESTCANCELEXTERNALWORKFLOW._serialized_end = 5279 + _DOUPDATE._serialized_start = 5282 + _DOUPDATE._serialized_end = 5613 + _DOUPDATE_HEADERSENTRY._serialized_start = 3413 + _DOUPDATE_HEADERSENTRY._serialized_end = 3492 + _RESOLVENEXUSOPERATIONSTART._serialized_start = 5616 + _RESOLVENEXUSOPERATIONSTART._serialized_end = 5783 + _RESOLVENEXUSOPERATION._serialized_start = 5785 + _RESOLVENEXUSOPERATION._serialized_end = 5874 + _REMOVEFROMCACHE._serialized_start = 5877 + _REMOVEFROMCACHE._serialized_end = 6229 + _REMOVEFROMCACHE_EVICTIONREASON._serialized_start = 5991 + _REMOVEFROMCACHE_EVICTIONREASON._serialized_end = 6229 # @@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 db52a5024..c9a2ceb7a 100644 --- a/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.pyi +++ b/temporalio/bridge/proto/workflow_activation/workflow_activation_pb2.pyi @@ -25,6 +25,7 @@ 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.nexus.nexus_pb2 if sys.version_info >= (3, 10): import typing as typing_extensions @@ -186,6 +187,8 @@ class WorkflowActivationJob(google.protobuf.message.Message): RESOLVE_SIGNAL_EXTERNAL_WORKFLOW_FIELD_NUMBER: builtins.int RESOLVE_REQUEST_CANCEL_EXTERNAL_WORKFLOW_FIELD_NUMBER: builtins.int DO_UPDATE_FIELD_NUMBER: builtins.int + RESOLVE_NEXUS_OPERATION_START_FIELD_NUMBER: builtins.int + RESOLVE_NEXUS_OPERATION_FIELD_NUMBER: builtins.int REMOVE_FROM_CACHE_FIELD_NUMBER: builtins.int @property def initialize_workflow(self) -> global___InitializeWorkflow: @@ -240,6 +243,12 @@ class WorkflowActivationJob(google.protobuf.message.Message): def do_update(self) -> global___DoUpdate: """A request to handle a workflow update.""" @property + def resolve_nexus_operation_start(self) -> global___ResolveNexusOperationStart: + """A nexus operation started.""" + @property + def resolve_nexus_operation(self) -> global___ResolveNexusOperation: + """A nexus operation resolved.""" + @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 @@ -265,6 +274,8 @@ class WorkflowActivationJob(google.protobuf.message.Message): resolve_request_cancel_external_workflow: global___ResolveRequestCancelExternalWorkflow | None = ..., do_update: global___DoUpdate | None = ..., + resolve_nexus_operation_start: global___ResolveNexusOperationStart | None = ..., + resolve_nexus_operation: global___ResolveNexusOperation | None = ..., remove_from_cache: global___RemoveFromCache | None = ..., ) -> None: ... def HasField( @@ -290,6 +301,10 @@ class WorkflowActivationJob(google.protobuf.message.Message): b"resolve_child_workflow_execution", "resolve_child_workflow_execution_start", b"resolve_child_workflow_execution_start", + "resolve_nexus_operation", + b"resolve_nexus_operation", + "resolve_nexus_operation_start", + b"resolve_nexus_operation_start", "resolve_request_cancel_external_workflow", b"resolve_request_cancel_external_workflow", "resolve_signal_external_workflow", @@ -325,6 +340,10 @@ class WorkflowActivationJob(google.protobuf.message.Message): b"resolve_child_workflow_execution", "resolve_child_workflow_execution_start", b"resolve_child_workflow_execution_start", + "resolve_nexus_operation", + b"resolve_nexus_operation", + "resolve_nexus_operation_start", + b"resolve_nexus_operation_start", "resolve_request_cancel_external_workflow", b"resolve_request_cancel_external_workflow", "resolve_signal_external_workflow", @@ -354,6 +373,8 @@ class WorkflowActivationJob(google.protobuf.message.Message): "resolve_signal_external_workflow", "resolve_request_cancel_external_workflow", "do_update", + "resolve_nexus_operation_start", + "resolve_nexus_operation", "remove_from_cache", ] | None @@ -1240,6 +1261,105 @@ class DoUpdate(google.protobuf.message.Message): global___DoUpdate = DoUpdate +class ResolveNexusOperationStart(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SEQ_FIELD_NUMBER: builtins.int + OPERATION_ID_FIELD_NUMBER: builtins.int + STARTED_SYNC_FIELD_NUMBER: builtins.int + CANCELLED_BEFORE_START_FIELD_NUMBER: builtins.int + seq: builtins.int + """Sequence number as provided by lang in the corresponding ScheduleNexusOperation command""" + operation_id: builtins.str + """The operation started asynchronously. Contains an ID that can be used to perform + operations on the started operation by, ex, clients. A `ResolveNexusOperation` job will + follow at some point. + """ + started_sync: builtins.bool + """If true the operation "started" but only because it's also already resolved. A + `ResolveNexusOperation` job will be in the same activation. + """ + @property + def cancelled_before_start(self) -> temporalio.api.failure.v1.message_pb2.Failure: + """The operation was cancelled before it was ever sent to server (same WFT). + Note that core will still send a `ResolveNexusOperation` job in the same activation, so + there does not need to be an exceptional case for this in lang. + """ + def __init__( + self, + *, + seq: builtins.int = ..., + operation_id: builtins.str = ..., + started_sync: builtins.bool = ..., + cancelled_before_start: temporalio.api.failure.v1.message_pb2.Failure + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "cancelled_before_start", + b"cancelled_before_start", + "operation_id", + b"operation_id", + "started_sync", + b"started_sync", + "status", + b"status", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "cancelled_before_start", + b"cancelled_before_start", + "operation_id", + b"operation_id", + "seq", + b"seq", + "started_sync", + b"started_sync", + "status", + b"status", + ], + ) -> None: ... + def WhichOneof( + self, oneof_group: typing_extensions.Literal["status", b"status"] + ) -> ( + typing_extensions.Literal[ + "operation_id", "started_sync", "cancelled_before_start" + ] + | None + ): ... + +global___ResolveNexusOperationStart = ResolveNexusOperationStart + +class ResolveNexusOperation(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SEQ_FIELD_NUMBER: builtins.int + RESULT_FIELD_NUMBER: builtins.int + seq: builtins.int + """Sequence number as provided by lang in the corresponding ScheduleNexusOperation command""" + @property + def result( + self, + ) -> temporalio.bridge.proto.nexus.nexus_pb2.NexusOperationResult: ... + def __init__( + self, + *, + seq: builtins.int = ..., + result: temporalio.bridge.proto.nexus.nexus_pb2.NexusOperationResult + | None = ..., + ) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["result", b"result"] + ) -> builtins.bool: ... + def ClearField( + self, field_name: typing_extensions.Literal["result", b"result", "seq", b"seq"] + ) -> None: ... + +global___ResolveNexusOperation = ResolveNexusOperation + class RemoveFromCache(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor diff --git a/temporalio/bridge/proto/workflow_commands/__init__.py b/temporalio/bridge/proto/workflow_commands/__init__.py index 00008983d..f599917af 100644 --- a/temporalio/bridge/proto/workflow_commands/__init__.py +++ b/temporalio/bridge/proto/workflow_commands/__init__.py @@ -13,8 +13,10 @@ RequestCancelActivity, RequestCancelExternalWorkflowExecution, RequestCancelLocalActivity, + RequestCancelNexusOperation, ScheduleActivity, ScheduleLocalActivity, + ScheduleNexusOperation, SetPatchMarker, SignalExternalWorkflowExecution, StartChildWorkflowExecution, @@ -39,8 +41,10 @@ "RequestCancelActivity", "RequestCancelExternalWorkflowExecution", "RequestCancelLocalActivity", + "RequestCancelNexusOperation", "ScheduleActivity", "ScheduleLocalActivity", + "ScheduleNexusOperation", "SetPatchMarker", "SignalExternalWorkflowExecution", "StartChildWorkflowExecution", diff --git a/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.py b/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.py index 5c2cf25b8..e239d9833 100644 --- a/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.py +++ b/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.py @@ -39,7 +39,7 @@ ) 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\x35temporal/sdk/core/child_workflow/child_workflow.proto\x1a%temporal/sdk/core/common/common.proto"\xac\x0e\n\x0fWorkflowCommand\x12\x38\n\ruser_metadata\x18\x64 \x01(\x0b\x32!.temporal.api.sdk.v1.UserMetadata\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\x42\t\n\x07variant"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"\x84\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\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"\xee\x05\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\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"\xfb\x06\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\x12j\n\x11search_attributes\x18\x08 \x03(\x0b\x32O.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.SearchAttributesEntry\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\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\x1aX\n\x15SearchAttributesEntry\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"\x19\n\x17\x43\x61ncelWorkflowExecution"6\n\x0eSetPatchMarker\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08"\xe0\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\x12g\n\x11search_attributes\x18\x11 \x03(\x0b\x32L.coresdk.workflow_commands.StartChildWorkflowExecution.SearchAttributesEntry\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\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\x1aX\n\x15SearchAttributesEntry\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\x1c\x43\x61ncelChildWorkflowExecution\x12\x1a\n\x12\x63hild_workflow_seq\x18\x01 \x01(\r"~\n&RequestCancelExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12G\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecution"\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"\xe6\x01\n\x1eUpsertWorkflowSearchAttributes\x12j\n\x11search_attributes\x18\x01 \x03(\x0b\x32O.coresdk.workflow_commands.UpsertWorkflowSearchAttributes.SearchAttributesEntry\x1aX\n\x15SearchAttributesEntry\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"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*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\x35temporal/sdk/core/child_workflow/child_workflow.proto\x1a%temporal/sdk/core/common/common.proto"\xe5\x0f\n\x0fWorkflowCommand\x12\x38\n\ruser_metadata\x18\x64 \x01(\x0b\x32!.temporal.api.sdk.v1.UserMetadata\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\x42\t\n\x07variant"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"\x84\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\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"\xee\x05\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\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"\xfb\x06\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\x12j\n\x11search_attributes\x18\x08 \x03(\x0b\x32O.coresdk.workflow_commands.ContinueAsNewWorkflowExecution.SearchAttributesEntry\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\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\x1aX\n\x15SearchAttributesEntry\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"\x19\n\x17\x43\x61ncelWorkflowExecution"6\n\x0eSetPatchMarker\x12\x10\n\x08patch_id\x18\x01 \x01(\t\x12\x12\n\ndeprecated\x18\x02 \x01(\x08"\xe0\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\x12g\n\x11search_attributes\x18\x11 \x03(\x0b\x32L.coresdk.workflow_commands.StartChildWorkflowExecution.SearchAttributesEntry\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\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\x1aX\n\x15SearchAttributesEntry\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\x1c\x43\x61ncelChildWorkflowExecution\x12\x1a\n\x12\x63hild_workflow_seq\x18\x01 \x01(\r"~\n&RequestCancelExternalWorkflowExecution\x12\x0b\n\x03seq\x18\x01 \x01(\r\x12G\n\x12workflow_execution\x18\x02 \x01(\x0b\x32+.coresdk.common.NamespacedWorkflowExecution"\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"\xe6\x01\n\x1eUpsertWorkflowSearchAttributes\x12j\n\x11search_attributes\x18\x01 \x03(\x0b\x32O.coresdk.workflow_commands.UpsertWorkflowSearchAttributes.SearchAttributesEntry\x1aX\n\x15SearchAttributesEntry\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"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"\xd7\x02\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\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"] @@ -115,6 +115,13 @@ ) _MODIFYWORKFLOWPROPERTIES = DESCRIPTOR.message_types_by_name["ModifyWorkflowProperties"] _UPDATERESPONSE = DESCRIPTOR.message_types_by_name["UpdateResponse"] +_SCHEDULENEXUSOPERATION = DESCRIPTOR.message_types_by_name["ScheduleNexusOperation"] +_SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY = _SCHEDULENEXUSOPERATION.nested_types_by_name[ + "NexusHeaderEntry" +] +_REQUESTCANCELNEXUSOPERATION = DESCRIPTOR.message_types_by_name[ + "RequestCancelNexusOperation" +] WorkflowCommand = _reflection.GeneratedProtocolMessageType( "WorkflowCommand", (_message.Message,), @@ -457,6 +464,38 @@ ) _sym_db.RegisterMessage(UpdateResponse) +ScheduleNexusOperation = _reflection.GeneratedProtocolMessageType( + "ScheduleNexusOperation", + (_message.Message,), + { + "NexusHeaderEntry": _reflection.GeneratedProtocolMessageType( + "NexusHeaderEntry", + (_message.Message,), + { + "DESCRIPTOR": _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.ScheduleNexusOperation.NexusHeaderEntry) + }, + ), + "DESCRIPTOR": _SCHEDULENEXUSOPERATION, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.ScheduleNexusOperation) + }, +) +_sym_db.RegisterMessage(ScheduleNexusOperation) +_sym_db.RegisterMessage(ScheduleNexusOperation.NexusHeaderEntry) + +RequestCancelNexusOperation = _reflection.GeneratedProtocolMessageType( + "RequestCancelNexusOperation", + (_message.Message,), + { + "DESCRIPTOR": _REQUESTCANCELNEXUSOPERATION, + "__module__": "temporal.sdk.core.workflow_commands.workflow_commands_pb2", + # @@protoc_insertion_point(class_scope:coresdk.workflow_commands.RequestCancelNexusOperation) + }, +) +_sym_db.RegisterMessage(RequestCancelNexusOperation) + if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = ( @@ -482,70 +521,78 @@ _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_options = b"8\001" _UPSERTWORKFLOWSEARCHATTRIBUTES_SEARCHATTRIBUTESENTRY._options = None _UPSERTWORKFLOWSEARCHATTRIBUTES_SEARCHATTRIBUTESENTRY._serialized_options = b"8\001" - _ACTIVITYCANCELLATIONTYPE._serialized_start = 7757 - _ACTIVITYCANCELLATIONTYPE._serialized_end = 7845 + _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._options = None + _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._serialized_options = b"8\001" + _ACTIVITYCANCELLATIONTYPE._serialized_start = 8332 + _ACTIVITYCANCELLATIONTYPE._serialized_end = 8420 _WORKFLOWCOMMAND._serialized_start = 435 - _WORKFLOWCOMMAND._serialized_end = 2271 - _STARTTIMER._serialized_start = 2273 - _STARTTIMER._serialized_end = 2356 - _CANCELTIMER._serialized_start = 2358 - _CANCELTIMER._serialized_end = 2384 - _SCHEDULEACTIVITY._serialized_start = 2387 - _SCHEDULEACTIVITY._serialized_end = 3159 - _SCHEDULEACTIVITY_HEADERSENTRY._serialized_start = 3080 - _SCHEDULEACTIVITY_HEADERSENTRY._serialized_end = 3159 - _SCHEDULELOCALACTIVITY._serialized_start = 3162 - _SCHEDULELOCALACTIVITY._serialized_end = 3912 - _SCHEDULELOCALACTIVITY_HEADERSENTRY._serialized_start = 3080 - _SCHEDULELOCALACTIVITY_HEADERSENTRY._serialized_end = 3159 - _REQUESTCANCELACTIVITY._serialized_start = 3914 - _REQUESTCANCELACTIVITY._serialized_end = 3950 - _REQUESTCANCELLOCALACTIVITY._serialized_start = 3952 - _REQUESTCANCELLOCALACTIVITY._serialized_end = 3993 - _QUERYRESULT._serialized_start = 3996 - _QUERYRESULT._serialized_end = 4152 - _QUERYSUCCESS._serialized_start = 4154 - _QUERYSUCCESS._serialized_end = 4219 - _COMPLETEWORKFLOWEXECUTION._serialized_start = 4221 - _COMPLETEWORKFLOWEXECUTION._serialized_end = 4297 - _FAILWORKFLOWEXECUTION._serialized_start = 4299 - _FAILWORKFLOWEXECUTION._serialized_end = 4373 - _CONTINUEASNEWWORKFLOWEXECUTION._serialized_start = 4376 - _CONTINUEASNEWWORKFLOWEXECUTION._serialized_end = 5267 - _CONTINUEASNEWWORKFLOWEXECUTION_MEMOENTRY._serialized_start = 5020 - _CONTINUEASNEWWORKFLOWEXECUTION_MEMOENTRY._serialized_end = 5096 - _CONTINUEASNEWWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3080 - _CONTINUEASNEWWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3159 - _CONTINUEASNEWWORKFLOWEXECUTION_SEARCHATTRIBUTESENTRY._serialized_start = 5179 - _CONTINUEASNEWWORKFLOWEXECUTION_SEARCHATTRIBUTESENTRY._serialized_end = 5267 - _CANCELWORKFLOWEXECUTION._serialized_start = 5269 - _CANCELWORKFLOWEXECUTION._serialized_end = 5294 - _SETPATCHMARKER._serialized_start = 5296 - _SETPATCHMARKER._serialized_end = 5350 - _STARTCHILDWORKFLOWEXECUTION._serialized_start = 5353 - _STARTCHILDWORKFLOWEXECUTION._serialized_end = 6601 - _STARTCHILDWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3080 - _STARTCHILDWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3159 - _STARTCHILDWORKFLOWEXECUTION_MEMOENTRY._serialized_start = 5020 - _STARTCHILDWORKFLOWEXECUTION_MEMOENTRY._serialized_end = 5096 - _STARTCHILDWORKFLOWEXECUTION_SEARCHATTRIBUTESENTRY._serialized_start = 5179 - _STARTCHILDWORKFLOWEXECUTION_SEARCHATTRIBUTESENTRY._serialized_end = 5267 - _CANCELCHILDWORKFLOWEXECUTION._serialized_start = 6603 - _CANCELCHILDWORKFLOWEXECUTION._serialized_end = 6661 - _REQUESTCANCELEXTERNALWORKFLOWEXECUTION._serialized_start = 6663 - _REQUESTCANCELEXTERNALWORKFLOWEXECUTION._serialized_end = 6789 - _SIGNALEXTERNALWORKFLOWEXECUTION._serialized_start = 6792 - _SIGNALEXTERNALWORKFLOWEXECUTION._serialized_end = 7191 - _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3080 - _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3159 - _CANCELSIGNALWORKFLOW._serialized_start = 7193 - _CANCELSIGNALWORKFLOW._serialized_end = 7228 - _UPSERTWORKFLOWSEARCHATTRIBUTES._serialized_start = 7231 - _UPSERTWORKFLOWSEARCHATTRIBUTES._serialized_end = 7461 - _UPSERTWORKFLOWSEARCHATTRIBUTES_SEARCHATTRIBUTESENTRY._serialized_start = 5179 - _UPSERTWORKFLOWSEARCHATTRIBUTES_SEARCHATTRIBUTESENTRY._serialized_end = 5267 - _MODIFYWORKFLOWPROPERTIES._serialized_start = 7463 - _MODIFYWORKFLOWPROPERTIES._serialized_end = 7542 - _UPDATERESPONSE._serialized_start = 7545 - _UPDATERESPONSE._serialized_end = 7755 + _WORKFLOWCOMMAND._serialized_end = 2456 + _STARTTIMER._serialized_start = 2458 + _STARTTIMER._serialized_end = 2541 + _CANCELTIMER._serialized_start = 2543 + _CANCELTIMER._serialized_end = 2569 + _SCHEDULEACTIVITY._serialized_start = 2572 + _SCHEDULEACTIVITY._serialized_end = 3344 + _SCHEDULEACTIVITY_HEADERSENTRY._serialized_start = 3265 + _SCHEDULEACTIVITY_HEADERSENTRY._serialized_end = 3344 + _SCHEDULELOCALACTIVITY._serialized_start = 3347 + _SCHEDULELOCALACTIVITY._serialized_end = 4097 + _SCHEDULELOCALACTIVITY_HEADERSENTRY._serialized_start = 3265 + _SCHEDULELOCALACTIVITY_HEADERSENTRY._serialized_end = 3344 + _REQUESTCANCELACTIVITY._serialized_start = 4099 + _REQUESTCANCELACTIVITY._serialized_end = 4135 + _REQUESTCANCELLOCALACTIVITY._serialized_start = 4137 + _REQUESTCANCELLOCALACTIVITY._serialized_end = 4178 + _QUERYRESULT._serialized_start = 4181 + _QUERYRESULT._serialized_end = 4337 + _QUERYSUCCESS._serialized_start = 4339 + _QUERYSUCCESS._serialized_end = 4404 + _COMPLETEWORKFLOWEXECUTION._serialized_start = 4406 + _COMPLETEWORKFLOWEXECUTION._serialized_end = 4482 + _FAILWORKFLOWEXECUTION._serialized_start = 4484 + _FAILWORKFLOWEXECUTION._serialized_end = 4558 + _CONTINUEASNEWWORKFLOWEXECUTION._serialized_start = 4561 + _CONTINUEASNEWWORKFLOWEXECUTION._serialized_end = 5452 + _CONTINUEASNEWWORKFLOWEXECUTION_MEMOENTRY._serialized_start = 5205 + _CONTINUEASNEWWORKFLOWEXECUTION_MEMOENTRY._serialized_end = 5281 + _CONTINUEASNEWWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3265 + _CONTINUEASNEWWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3344 + _CONTINUEASNEWWORKFLOWEXECUTION_SEARCHATTRIBUTESENTRY._serialized_start = 5364 + _CONTINUEASNEWWORKFLOWEXECUTION_SEARCHATTRIBUTESENTRY._serialized_end = 5452 + _CANCELWORKFLOWEXECUTION._serialized_start = 5454 + _CANCELWORKFLOWEXECUTION._serialized_end = 5479 + _SETPATCHMARKER._serialized_start = 5481 + _SETPATCHMARKER._serialized_end = 5535 + _STARTCHILDWORKFLOWEXECUTION._serialized_start = 5538 + _STARTCHILDWORKFLOWEXECUTION._serialized_end = 6786 + _STARTCHILDWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3265 + _STARTCHILDWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3344 + _STARTCHILDWORKFLOWEXECUTION_MEMOENTRY._serialized_start = 5205 + _STARTCHILDWORKFLOWEXECUTION_MEMOENTRY._serialized_end = 5281 + _STARTCHILDWORKFLOWEXECUTION_SEARCHATTRIBUTESENTRY._serialized_start = 5364 + _STARTCHILDWORKFLOWEXECUTION_SEARCHATTRIBUTESENTRY._serialized_end = 5452 + _CANCELCHILDWORKFLOWEXECUTION._serialized_start = 6788 + _CANCELCHILDWORKFLOWEXECUTION._serialized_end = 6846 + _REQUESTCANCELEXTERNALWORKFLOWEXECUTION._serialized_start = 6848 + _REQUESTCANCELEXTERNALWORKFLOWEXECUTION._serialized_end = 6974 + _SIGNALEXTERNALWORKFLOWEXECUTION._serialized_start = 6977 + _SIGNALEXTERNALWORKFLOWEXECUTION._serialized_end = 7376 + _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_start = 3265 + _SIGNALEXTERNALWORKFLOWEXECUTION_HEADERSENTRY._serialized_end = 3344 + _CANCELSIGNALWORKFLOW._serialized_start = 7378 + _CANCELSIGNALWORKFLOW._serialized_end = 7413 + _UPSERTWORKFLOWSEARCHATTRIBUTES._serialized_start = 7416 + _UPSERTWORKFLOWSEARCHATTRIBUTES._serialized_end = 7646 + _UPSERTWORKFLOWSEARCHATTRIBUTES_SEARCHATTRIBUTESENTRY._serialized_start = 5364 + _UPSERTWORKFLOWSEARCHATTRIBUTES_SEARCHATTRIBUTESENTRY._serialized_end = 5452 + _MODIFYWORKFLOWPROPERTIES._serialized_start = 7648 + _MODIFYWORKFLOWPROPERTIES._serialized_end = 7727 + _UPDATERESPONSE._serialized_start = 7730 + _UPDATERESPONSE._serialized_end = 7940 + _SCHEDULENEXUSOPERATION._serialized_start = 7943 + _SCHEDULENEXUSOPERATION._serialized_end = 8286 + _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._serialized_start = 8236 + _SCHEDULENEXUSOPERATION_NEXUSHEADERENTRY._serialized_end = 8286 + _REQUESTCANCELNEXUSOPERATION._serialized_start = 8288 + _REQUESTCANCELNEXUSOPERATION._serialized_end = 8330 # @@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 ca2959159..a6ed34399 100644 --- a/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.pyi +++ b/temporalio/bridge/proto/workflow_commands/workflow_commands_pb2.pyi @@ -98,6 +98,8 @@ class WorkflowCommand(google.protobuf.message.Message): UPSERT_WORKFLOW_SEARCH_ATTRIBUTES_FIELD_NUMBER: builtins.int MODIFY_WORKFLOW_PROPERTIES_FIELD_NUMBER: builtins.int UPDATE_RESPONSE_FIELD_NUMBER: builtins.int + SCHEDULE_NEXUS_OPERATION_FIELD_NUMBER: builtins.int + REQUEST_CANCEL_NEXUS_OPERATION_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. @@ -156,6 +158,12 @@ class WorkflowCommand(google.protobuf.message.Message): def modify_workflow_properties(self) -> global___ModifyWorkflowProperties: ... @property def update_response(self) -> global___UpdateResponse: ... + @property + def schedule_nexus_operation(self) -> global___ScheduleNexusOperation: ... + @property + def request_cancel_nexus_operation( + self, + ) -> global___RequestCancelNexusOperation: ... def __init__( self, *, @@ -187,6 +195,9 @@ class WorkflowCommand(google.protobuf.message.Message): | None = ..., modify_workflow_properties: global___ModifyWorkflowProperties | None = ..., update_response: global___UpdateResponse | None = ..., + schedule_nexus_operation: global___ScheduleNexusOperation | None = ..., + request_cancel_nexus_operation: global___RequestCancelNexusOperation + | None = ..., ) -> None: ... def HasField( self, @@ -213,12 +224,16 @@ class WorkflowCommand(google.protobuf.message.Message): b"request_cancel_external_workflow_execution", "request_cancel_local_activity", b"request_cancel_local_activity", + "request_cancel_nexus_operation", + b"request_cancel_nexus_operation", "respond_to_query", b"respond_to_query", "schedule_activity", b"schedule_activity", "schedule_local_activity", b"schedule_local_activity", + "schedule_nexus_operation", + b"schedule_nexus_operation", "set_patch_marker", b"set_patch_marker", "signal_external_workflow_execution", @@ -262,12 +277,16 @@ class WorkflowCommand(google.protobuf.message.Message): b"request_cancel_external_workflow_execution", "request_cancel_local_activity", b"request_cancel_local_activity", + "request_cancel_nexus_operation", + b"request_cancel_nexus_operation", "respond_to_query", b"respond_to_query", "schedule_activity", b"schedule_activity", "schedule_local_activity", b"schedule_local_activity", + "schedule_nexus_operation", + b"schedule_nexus_operation", "set_patch_marker", b"set_patch_marker", "signal_external_workflow_execution", @@ -310,6 +329,8 @@ class WorkflowCommand(google.protobuf.message.Message): "upsert_workflow_search_attributes", "modify_workflow_properties", "update_response", + "schedule_nexus_operation", + "request_cancel_nexus_operation", ] | None ): ... @@ -1672,3 +1693,123 @@ class UpdateResponse(google.protobuf.message.Message): ) -> typing_extensions.Literal["accepted", "rejected", "completed"] | None: ... global___UpdateResponse = UpdateResponse + +class ScheduleNexusOperation(google.protobuf.message.Message): + """A request to begin a Nexus operation""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + class NexusHeaderEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["key", b"key", "value", b"value"], + ) -> None: ... + + SEQ_FIELD_NUMBER: builtins.int + ENDPOINT_FIELD_NUMBER: builtins.int + SERVICE_FIELD_NUMBER: builtins.int + OPERATION_FIELD_NUMBER: builtins.int + INPUT_FIELD_NUMBER: builtins.int + SCHEDULE_TO_CLOSE_TIMEOUT_FIELD_NUMBER: builtins.int + NEXUS_HEADER_FIELD_NUMBER: builtins.int + seq: builtins.int + """Lang's incremental sequence number, used as the operation identifier""" + endpoint: builtins.str + """Endpoint name, must exist in the endpoint registry or this command will fail.""" + service: builtins.str + """Service name.""" + operation: builtins.str + """Operation name.""" + @property + def input(self) -> temporalio.api.common.v1.message_pb2.Payload: + """Input for the operation. The server converts this into Nexus request content and the + appropriate content headers internally when sending the StartOperation request. On the + handler side, if it is also backed by Temporal, the content is transformed back to the + original Payload sent in this command. + """ + @property + def schedule_to_close_timeout(self) -> google.protobuf.duration_pb2.Duration: + """Schedule-to-close timeout for this operation. + Indicates how long the caller is willing to wait for operation completion. + Calls are retried internally by the server. + """ + @property + def nexus_header( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """Header to attach to the Nexus request. + Users are responsible for encrypting sensitive data in this header as it is stored in + workflow history and transmitted to external services as-is. This is useful for propagating + tracing information. Note these headers are not the same as Temporal headers on internal + activities and child workflows, these are transmitted to Nexus operations that may be + external and are not traditional payloads. + """ + def __init__( + self, + *, + seq: builtins.int = ..., + endpoint: builtins.str = ..., + service: builtins.str = ..., + operation: builtins.str = ..., + input: temporalio.api.common.v1.message_pb2.Payload | None = ..., + schedule_to_close_timeout: google.protobuf.duration_pb2.Duration | None = ..., + nexus_header: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "input", b"input", "schedule_to_close_timeout", b"schedule_to_close_timeout" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "endpoint", + b"endpoint", + "input", + b"input", + "nexus_header", + b"nexus_header", + "operation", + b"operation", + "schedule_to_close_timeout", + b"schedule_to_close_timeout", + "seq", + b"seq", + "service", + b"service", + ], + ) -> None: ... + +global___ScheduleNexusOperation = ScheduleNexusOperation + +class RequestCancelNexusOperation(google.protobuf.message.Message): + """Request cancellation of a nexus operation started via `ScheduleNexusOperation`""" + + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + SEQ_FIELD_NUMBER: builtins.int + seq: builtins.int + """Lang's incremental sequence number as passed to `ScheduleNexusOperation`""" + def __init__( + self, + *, + seq: builtins.int = ..., + ) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["seq", b"seq"] + ) -> None: ... + +global___RequestCancelNexusOperation = RequestCancelNexusOperation diff --git a/temporalio/bridge/sdk-core b/temporalio/bridge/sdk-core index bba9fe149..f0418936c 160000 --- a/temporalio/bridge/sdk-core +++ b/temporalio/bridge/sdk-core @@ -1 +1 @@ -Subproject commit bba9fe14958f66dab4412015cdf46d3c1c28897d +Subproject commit f0418936c4eec664faab931d0b174b9e57c65668 diff --git a/temporalio/bridge/src/worker.rs b/temporalio/bridge/src/worker.rs index b57cb2962..3f8baa5e7 100644 --- a/temporalio/bridge/src/worker.rs +++ b/temporalio/bridge/src/worker.rs @@ -11,7 +11,7 @@ use std::collections::HashSet; use std::marker::PhantomData; use std::sync::{Arc, OnceLock}; use std::time::Duration; -use temporal_sdk_core::api::errors::{PollActivityError, PollWfError}; +use temporal_sdk_core::api::errors::PollError; use temporal_sdk_core::replay::{HistoryForReplay, ReplayWorkerInput}; use temporal_sdk_core_api::errors::WorkflowErrorType; use temporal_sdk_core_api::worker::{ @@ -112,6 +112,7 @@ impl SlotReserveCtx { SlotKindType::Workflow => "workflow".to_string(), SlotKindType::Activity => "activity".to_string(), SlotKindType::LocalActivity => "local-activity".to_string(), + SlotKindType::Nexus => "nexus".to_string(), }, task_queue: ctx.task_queue().to_string(), worker_identity: ctx.worker_identity().to_string(), @@ -150,6 +151,13 @@ pub struct LocalActivitySlotInfo { #[pyo3(get)] pub activity_type: String, } +#[pyclass] +pub struct NexusSlotInfo { + #[pyo3(get)] + pub service: String, + #[pyo3(get)] + pub operation: String, +} #[pyclass] pub struct SlotReleaseCtx { @@ -174,6 +182,11 @@ fn slot_info_to_py_obj(py: Python<'_>, info: SlotInfo) -> PyObject { activity_type: a.activity_type.clone(), } .into_py(py), + SlotInfo::Nexus(n) => NexusSlotInfo { + service: n.service.clone(), + operation: n.operation.clone(), + } + .into_py(py), } } @@ -441,7 +454,7 @@ impl WorkerRef { self.runtime.future_into_py(py, async move { let bytes = match worker.poll_workflow_activation().await { Ok(act) => act.encode_to_vec(), - Err(PollWfError::ShutDown) => return Err(PollShutdownError::new_err(())), + Err(PollError::ShutDown) => return Err(PollShutdownError::new_err(())), Err(err) => return Err(PyRuntimeError::new_err(format!("Poll failure: {}", err))), }; let bytes: &[u8] = &bytes; @@ -454,7 +467,7 @@ impl WorkerRef { self.runtime.future_into_py(py, async move { let bytes = match worker.poll_activity_task().await { Ok(task) => task.encode_to_vec(), - Err(PollActivityError::ShutDown) => return Err(PollShutdownError::new_err(())), + Err(PollError::ShutDown) => return Err(PollShutdownError::new_err(())), Err(err) => return Err(PyRuntimeError::new_err(format!("Poll failure: {}", err))), }; let bytes: &[u8] = &bytes; diff --git a/temporalio/client.py b/temporalio/client.py index 8f9e5095d..464f8a572 100644 --- a/temporalio/client.py +++ b/temporalio/client.py @@ -4499,6 +4499,9 @@ class ScheduleUpdate: schedule: Schedule """Schedule to update.""" + search_attributes: Optional[temporalio.common.TypedSearchAttributes] = None + """Search attributes to update.""" + @dataclass class ScheduleListDescription: @@ -6520,14 +6523,19 @@ async def update_schedule(self, input: UpdateScheduleInput) -> None: if not update: return assert isinstance(update, ScheduleUpdate) + request = temporalio.api.workflowservice.v1.UpdateScheduleRequest( + namespace=self._client.namespace, + schedule_id=input.id, + schedule=await update.schedule._to_proto(self._client), + identity=self._client.identity, + request_id=str(uuid.uuid4()), + ) + if update.search_attributes: + temporalio.converter.encode_search_attributes( + update.search_attributes, request.search_attributes + ) await self._client.workflow_service.update_schedule( - temporalio.api.workflowservice.v1.UpdateScheduleRequest( - namespace=self._client.namespace, - schedule_id=input.id, - schedule=await update.schedule._to_proto(self._client), - identity=self._client.identity, - request_id=str(uuid.uuid4()), - ), + request, retry=True, metadata=input.rpc_metadata, timeout=input.rpc_timeout, diff --git a/tests/test_client.py b/tests/test_client.py index dc0128f38..8d16fe95d 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -1188,7 +1188,7 @@ async def test_schedule_create_limited_actions_validation( assert "are remaining actions set" in str(err.value) -async def test_schedule_search_attribute_update( +async def test_schedule_workflow_search_attribute_update( client: Client, env: WorkflowEnvironment ): if env.supports_time_skipping: @@ -1196,10 +1196,8 @@ async def test_schedule_search_attribute_update( await assert_no_schedules(client) # Put search attribute on server - text_attr_key = SearchAttributeKey.for_text(f"python-test-schedule-text") - untyped_keyword_key = SearchAttributeKey.for_keyword( - f"python-test-schedule-keyword" - ) + text_attr_key = SearchAttributeKey.for_text("python-test-schedule-text") + untyped_keyword_key = SearchAttributeKey.for_keyword("python-test-schedule-keyword") await ensure_search_attributes_present(client, text_attr_key, untyped_keyword_key) # Create a schedule with search attributes on the schedule and on the @@ -1273,6 +1271,7 @@ def update_schedule_typed_attrs( # Check that it changed desc = await handle.describe() assert isinstance(desc.schedule.action, ScheduleActionStartWorkflow) + # Check that the workflow search attributes were changed # This assertion has changed since server 1.24. Now, even untyped search # attributes are given a type server side assert ( @@ -1283,6 +1282,64 @@ def update_schedule_typed_attrs( and desc.schedule.action.typed_search_attributes[untyped_keyword_key] == "some-untyped-attr1" ) + # Check that the schedule search attributes were not changed + assert desc.search_attributes[text_attr_key.name] == ["some-schedule-attr1"] + assert desc.typed_search_attributes[text_attr_key] == "some-schedule-attr1" + + +async def test_schedule_search_attribute_update( + client: Client, env: WorkflowEnvironment +): + if env.supports_time_skipping: + pytest.skip("Java test server doesn't support schedules") + await assert_no_schedules(client) + + # Put search attribute on server + text_attr_key = SearchAttributeKey.for_text("python-test-schedule-text") + untyped_keyword_key = SearchAttributeKey.for_keyword("python-test-schedule-keyword") + await ensure_search_attributes_present(client, text_attr_key, untyped_keyword_key) + + # Create a schedule with search attributes + create_action = ScheduleActionStartWorkflow( + "some workflow", + [], + id=f"workflow-{uuid.uuid4()}", + task_queue=f"tq-{uuid.uuid4()}", + ) + handle = await client.create_schedule( + f"schedule-{uuid.uuid4()}", + Schedule(action=create_action, spec=ScheduleSpec()), + search_attributes=TypedSearchAttributes( + [SearchAttributePair(text_attr_key, "some-schedule-attr1")] + ), + ) + + # Do update of search attributes + def update_schedule_search_attributes( + input: ScheduleUpdateInput, + ) -> Optional[ScheduleUpdate]: + # Make sure the search attributes are present in all forms + assert input.description.search_attributes[text_attr_key.name] == [ + "some-schedule-attr1" + ] + assert ( + input.description.typed_search_attributes[text_attr_key] + == "some-schedule-attr1" + ) + + return ScheduleUpdate( + input.description.schedule, + search_attributes=input.description.typed_search_attributes.updated( + SearchAttributePair(text_attr_key, "some-schedule-attr2") + ), + ) + + await handle.update(update_schedule_search_attributes) + + # Check the changes + desc = await handle.describe() + assert desc.typed_search_attributes[text_attr_key] == "some-schedule-attr2" + assert desc.search_attributes[text_attr_key.name] == ["some-schedule-attr2"] async def assert_no_schedules(client: Client) -> None: