diff --git a/Directory.Build.props b/Directory.Build.props
index 67de6eb8..a362bb15 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -17,7 +17,7 @@
- 1.3.0
+ 1.3.1
- 1.3.0
+ 1.3.1
diff --git a/src/Temporalio/Bridge/Api/WorkflowActivation/WorkflowActivation.cs b/src/Temporalio/Bridge/Api/WorkflowActivation/WorkflowActivation.cs
index 3ffa5cc2..5c8672bb 100644
--- a/src/Temporalio/Bridge/Api/WorkflowActivation/WorkflowActivation.cs
+++ b/src/Temporalio/Bridge/Api/WorkflowActivation/WorkflowActivation.cs
@@ -96,61 +96,62 @@ static WorkflowActivationReflection() {
"ZRgXIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaTwoMSGVhZGVy",
"c0VudHJ5EgsKA2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFs",
"LmFwaS5jb21tb24udjEuUGF5bG9hZDoCOAEiGAoJRmlyZVRpbWVyEgsKA3Nl",
- "cRgBIAEoDSJbCg9SZXNvbHZlQWN0aXZpdHkSCwoDc2VxGAEgASgNEjsKBnJl",
+ "cRgBIAEoDSJtCg9SZXNvbHZlQWN0aXZpdHkSCwoDc2VxGAEgASgNEjsKBnJl",
"c3VsdBgCIAEoCzIrLmNvcmVzZGsuYWN0aXZpdHlfcmVzdWx0LkFjdGl2aXR5",
- "UmVzb2x1dGlvbiLRAgoiUmVzb2x2ZUNoaWxkV29ya2Zsb3dFeGVjdXRpb25T",
- "dGFydBILCgNzZXEYASABKA0SWwoJc3VjY2VlZGVkGAIgASgLMkYuY29yZXNk",
- "ay53b3JrZmxvd19hY3RpdmF0aW9uLlJlc29sdmVDaGlsZFdvcmtmbG93RXhl",
- "Y3V0aW9uU3RhcnRTdWNjZXNzSAASWAoGZmFpbGVkGAMgASgLMkYuY29yZXNk",
- "ay53b3JrZmxvd19hY3RpdmF0aW9uLlJlc29sdmVDaGlsZFdvcmtmbG93RXhl",
- "Y3V0aW9uU3RhcnRGYWlsdXJlSAASXQoJY2FuY2VsbGVkGAQgASgLMkguY29y",
- "ZXNkay53b3JrZmxvd19hY3RpdmF0aW9uLlJlc29sdmVDaGlsZFdvcmtmbG93",
- "RXhlY3V0aW9uU3RhcnRDYW5jZWxsZWRIAEIICgZzdGF0dXMiOwopUmVzb2x2",
- "ZUNoaWxkV29ya2Zsb3dFeGVjdXRpb25TdGFydFN1Y2Nlc3MSDgoGcnVuX2lk",
- "GAEgASgJIqYBCilSZXNvbHZlQ2hpbGRXb3JrZmxvd0V4ZWN1dGlvblN0YXJ0",
- "RmFpbHVyZRITCgt3b3JrZmxvd19pZBgBIAEoCRIVCg13b3JrZmxvd190eXBl",
- "GAIgASgJEk0KBWNhdXNlGAMgASgOMj4uY29yZXNkay5jaGlsZF93b3JrZmxv",
- "dy5TdGFydENoaWxkV29ya2Zsb3dFeGVjdXRpb25GYWlsZWRDYXVzZSJgCitS",
- "ZXNvbHZlQ2hpbGRXb3JrZmxvd0V4ZWN1dGlvblN0YXJ0Q2FuY2VsbGVkEjEK",
- "B2ZhaWx1cmUYASABKAsyIC50ZW1wb3JhbC5hcGkuZmFpbHVyZS52MS5GYWls",
- "dXJlImkKHVJlc29sdmVDaGlsZFdvcmtmbG93RXhlY3V0aW9uEgsKA3NlcRgB",
- "IAEoDRI7CgZyZXN1bHQYAiABKAsyKy5jb3Jlc2RrLmNoaWxkX3dvcmtmbG93",
- "LkNoaWxkV29ya2Zsb3dSZXN1bHQiKwoQVXBkYXRlUmFuZG9tU2VlZBIXCg9y",
- "YW5kb21uZXNzX3NlZWQYASABKAQihAIKDVF1ZXJ5V29ya2Zsb3cSEAoIcXVl",
- "cnlfaWQYASABKAkSEgoKcXVlcnlfdHlwZRgCIAEoCRIyCglhcmd1bWVudHMY",
- "AyADKAsyHy50ZW1wb3JhbC5hcGkuY29tbW9uLnYxLlBheWxvYWQSSAoHaGVh",
- "ZGVycxgFIAMoCzI3LmNvcmVzZGsud29ya2Zsb3dfYWN0aXZhdGlvbi5RdWVy",
- "eVdvcmtmbG93LkhlYWRlcnNFbnRyeRpPCgxIZWFkZXJzRW50cnkSCwoDa2V5",
- "GAEgASgJEi4KBXZhbHVlGAIgASgLMh8udGVtcG9yYWwuYXBpLmNvbW1vbi52",
- "MS5QYXlsb2FkOgI4ASJCCg5DYW5jZWxXb3JrZmxvdxIwCgdkZXRhaWxzGAEg",
- "AygLMh8udGVtcG9yYWwuYXBpLmNvbW1vbi52MS5QYXlsb2FkIoMCCg5TaWdu",
- "YWxXb3JrZmxvdxITCgtzaWduYWxfbmFtZRgBIAEoCRIuCgVpbnB1dBgCIAMo",
- "CzIfLnRlbXBvcmFsLmFwaS5jb21tb24udjEuUGF5bG9hZBIQCghpZGVudGl0",
- "eRgDIAEoCRJJCgdoZWFkZXJzGAUgAygLMjguY29yZXNkay53b3JrZmxvd19h",
- "Y3RpdmF0aW9uLlNpZ25hbFdvcmtmbG93LkhlYWRlcnNFbnRyeRpPCgxIZWFk",
- "ZXJzRW50cnkSCwoDa2V5GAEgASgJEi4KBXZhbHVlGAIgASgLMh8udGVtcG9y",
- "YWwuYXBpLmNvbW1vbi52MS5QYXlsb2FkOgI4ASIiCg5Ob3RpZnlIYXNQYXRj",
- "aBIQCghwYXRjaF9pZBgBIAEoCSJfCh1SZXNvbHZlU2lnbmFsRXh0ZXJuYWxX",
- "b3JrZmxvdxILCgNzZXEYASABKA0SMQoHZmFpbHVyZRgCIAEoCzIgLnRlbXBv",
- "cmFsLmFwaS5mYWlsdXJlLnYxLkZhaWx1cmUiZgokUmVzb2x2ZVJlcXVlc3RD",
- "YW5jZWxFeHRlcm5hbFdvcmtmbG93EgsKA3NlcRgBIAEoDRIxCgdmYWlsdXJl",
- "GAIgASgLMiAudGVtcG9yYWwuYXBpLmZhaWx1cmUudjEuRmFpbHVyZSLLAgoI",
- "RG9VcGRhdGUSCgoCaWQYASABKAkSHAoUcHJvdG9jb2xfaW5zdGFuY2VfaWQY",
- "AiABKAkSDAoEbmFtZRgDIAEoCRIuCgVpbnB1dBgEIAMoCzIfLnRlbXBvcmFs",
- "LmFwaS5jb21tb24udjEuUGF5bG9hZBJDCgdoZWFkZXJzGAUgAygLMjIuY29y",
- "ZXNkay53b3JrZmxvd19hY3RpdmF0aW9uLkRvVXBkYXRlLkhlYWRlcnNFbnRy",
- "eRIqCgRtZXRhGAYgASgLMhwudGVtcG9yYWwuYXBpLnVwZGF0ZS52MS5NZXRh",
- "EhUKDXJ1bl92YWxpZGF0b3IYByABKAgaTwoMSGVhZGVyc0VudHJ5EgsKA2tl",
- "eRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24u",
- "djEuUGF5bG9hZDoCOAEiwQIKD1JlbW92ZUZyb21DYWNoZRIPCgdtZXNzYWdl",
- "GAEgASgJEksKBnJlYXNvbhgCIAEoDjI7LmNvcmVzZGsud29ya2Zsb3dfYWN0",
- "aXZhdGlvbi5SZW1vdmVGcm9tQ2FjaGUuRXZpY3Rpb25SZWFzb24izwEKDkV2",
- "aWN0aW9uUmVhc29uEg8KC1VOU1BFQ0lGSUVEEAASDgoKQ0FDSEVfRlVMTBAB",
- "Eg4KCkNBQ0hFX01JU1MQAhISCg5OT05ERVRFUk1JTklTTRADEg0KCUxBTkdf",
- "RkFJTBAEEhIKDkxBTkdfUkVRVUVTVEVEEAUSEgoOVEFTS19OT1RfRk9VTkQQ",
- "BhIVChFVTkhBTkRMRURfQ09NTUFORBAHEgkKBUZBVEFMEAgSHwobUEFHSU5B",
- "VElPTl9PUl9ISVNUT1JZX0ZFVENIEAlCLuoCK1RlbXBvcmFsaW86OkJyaWRn",
- "ZTo6QXBpOjpXb3JrZmxvd0FjdGl2YXRpb25iBnByb3RvMw=="));
+ "UmVzb2x1dGlvbhIQCghpc19sb2NhbBgDIAEoCCLRAgoiUmVzb2x2ZUNoaWxk",
+ "V29ya2Zsb3dFeGVjdXRpb25TdGFydBILCgNzZXEYASABKA0SWwoJc3VjY2Vl",
+ "ZGVkGAIgASgLMkYuY29yZXNkay53b3JrZmxvd19hY3RpdmF0aW9uLlJlc29s",
+ "dmVDaGlsZFdvcmtmbG93RXhlY3V0aW9uU3RhcnRTdWNjZXNzSAASWAoGZmFp",
+ "bGVkGAMgASgLMkYuY29yZXNkay53b3JrZmxvd19hY3RpdmF0aW9uLlJlc29s",
+ "dmVDaGlsZFdvcmtmbG93RXhlY3V0aW9uU3RhcnRGYWlsdXJlSAASXQoJY2Fu",
+ "Y2VsbGVkGAQgASgLMkguY29yZXNkay53b3JrZmxvd19hY3RpdmF0aW9uLlJl",
+ "c29sdmVDaGlsZFdvcmtmbG93RXhlY3V0aW9uU3RhcnRDYW5jZWxsZWRIAEII",
+ "CgZzdGF0dXMiOwopUmVzb2x2ZUNoaWxkV29ya2Zsb3dFeGVjdXRpb25TdGFy",
+ "dFN1Y2Nlc3MSDgoGcnVuX2lkGAEgASgJIqYBCilSZXNvbHZlQ2hpbGRXb3Jr",
+ "Zmxvd0V4ZWN1dGlvblN0YXJ0RmFpbHVyZRITCgt3b3JrZmxvd19pZBgBIAEo",
+ "CRIVCg13b3JrZmxvd190eXBlGAIgASgJEk0KBWNhdXNlGAMgASgOMj4uY29y",
+ "ZXNkay5jaGlsZF93b3JrZmxvdy5TdGFydENoaWxkV29ya2Zsb3dFeGVjdXRp",
+ "b25GYWlsZWRDYXVzZSJgCitSZXNvbHZlQ2hpbGRXb3JrZmxvd0V4ZWN1dGlv",
+ "blN0YXJ0Q2FuY2VsbGVkEjEKB2ZhaWx1cmUYASABKAsyIC50ZW1wb3JhbC5h",
+ "cGkuZmFpbHVyZS52MS5GYWlsdXJlImkKHVJlc29sdmVDaGlsZFdvcmtmbG93",
+ "RXhlY3V0aW9uEgsKA3NlcRgBIAEoDRI7CgZyZXN1bHQYAiABKAsyKy5jb3Jl",
+ "c2RrLmNoaWxkX3dvcmtmbG93LkNoaWxkV29ya2Zsb3dSZXN1bHQiKwoQVXBk",
+ "YXRlUmFuZG9tU2VlZBIXCg9yYW5kb21uZXNzX3NlZWQYASABKAQihAIKDVF1",
+ "ZXJ5V29ya2Zsb3cSEAoIcXVlcnlfaWQYASABKAkSEgoKcXVlcnlfdHlwZRgC",
+ "IAEoCRIyCglhcmd1bWVudHMYAyADKAsyHy50ZW1wb3JhbC5hcGkuY29tbW9u",
+ "LnYxLlBheWxvYWQSSAoHaGVhZGVycxgFIAMoCzI3LmNvcmVzZGsud29ya2Zs",
+ "b3dfYWN0aXZhdGlvbi5RdWVyeVdvcmtmbG93LkhlYWRlcnNFbnRyeRpPCgxI",
+ "ZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEi4KBXZhbHVlGAIgASgLMh8udGVt",
+ "cG9yYWwuYXBpLmNvbW1vbi52MS5QYXlsb2FkOgI4ASJCCg5DYW5jZWxXb3Jr",
+ "ZmxvdxIwCgdkZXRhaWxzGAEgAygLMh8udGVtcG9yYWwuYXBpLmNvbW1vbi52",
+ "MS5QYXlsb2FkIoMCCg5TaWduYWxXb3JrZmxvdxITCgtzaWduYWxfbmFtZRgB",
+ "IAEoCRIuCgVpbnB1dBgCIAMoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24udjEu",
+ "UGF5bG9hZBIQCghpZGVudGl0eRgDIAEoCRJJCgdoZWFkZXJzGAUgAygLMjgu",
+ "Y29yZXNkay53b3JrZmxvd19hY3RpdmF0aW9uLlNpZ25hbFdvcmtmbG93Lkhl",
+ "YWRlcnNFbnRyeRpPCgxIZWFkZXJzRW50cnkSCwoDa2V5GAEgASgJEi4KBXZh",
+ "bHVlGAIgASgLMh8udGVtcG9yYWwuYXBpLmNvbW1vbi52MS5QYXlsb2FkOgI4",
+ "ASIiCg5Ob3RpZnlIYXNQYXRjaBIQCghwYXRjaF9pZBgBIAEoCSJfCh1SZXNv",
+ "bHZlU2lnbmFsRXh0ZXJuYWxXb3JrZmxvdxILCgNzZXEYASABKA0SMQoHZmFp",
+ "bHVyZRgCIAEoCzIgLnRlbXBvcmFsLmFwaS5mYWlsdXJlLnYxLkZhaWx1cmUi",
+ "ZgokUmVzb2x2ZVJlcXVlc3RDYW5jZWxFeHRlcm5hbFdvcmtmbG93EgsKA3Nl",
+ "cRgBIAEoDRIxCgdmYWlsdXJlGAIgASgLMiAudGVtcG9yYWwuYXBpLmZhaWx1",
+ "cmUudjEuRmFpbHVyZSLLAgoIRG9VcGRhdGUSCgoCaWQYASABKAkSHAoUcHJv",
+ "dG9jb2xfaW5zdGFuY2VfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRIuCgVpbnB1",
+ "dBgEIAMoCzIfLnRlbXBvcmFsLmFwaS5jb21tb24udjEuUGF5bG9hZBJDCgdo",
+ "ZWFkZXJzGAUgAygLMjIuY29yZXNkay53b3JrZmxvd19hY3RpdmF0aW9uLkRv",
+ "VXBkYXRlLkhlYWRlcnNFbnRyeRIqCgRtZXRhGAYgASgLMhwudGVtcG9yYWwu",
+ "YXBpLnVwZGF0ZS52MS5NZXRhEhUKDXJ1bl92YWxpZGF0b3IYByABKAgaTwoM",
+ "SGVhZGVyc0VudHJ5EgsKA2tleRgBIAEoCRIuCgV2YWx1ZRgCIAEoCzIfLnRl",
+ "bXBvcmFsLmFwaS5jb21tb24udjEuUGF5bG9hZDoCOAEiwQIKD1JlbW92ZUZy",
+ "b21DYWNoZRIPCgdtZXNzYWdlGAEgASgJEksKBnJlYXNvbhgCIAEoDjI7LmNv",
+ "cmVzZGsud29ya2Zsb3dfYWN0aXZhdGlvbi5SZW1vdmVGcm9tQ2FjaGUuRXZp",
+ "Y3Rpb25SZWFzb24izwEKDkV2aWN0aW9uUmVhc29uEg8KC1VOU1BFQ0lGSUVE",
+ "EAASDgoKQ0FDSEVfRlVMTBABEg4KCkNBQ0hFX01JU1MQAhISCg5OT05ERVRF",
+ "Uk1JTklTTRADEg0KCUxBTkdfRkFJTBAEEhIKDkxBTkdfUkVRVUVTVEVEEAUS",
+ "EgoOVEFTS19OT1RfRk9VTkQQBhIVChFVTkhBTkRMRURfQ09NTUFORBAHEgkK",
+ "BUZBVEFMEAgSHwobUEFHSU5BVElPTl9PUl9ISVNUT1JZX0ZFVENIEAlCLuoC",
+ "K1RlbXBvcmFsaW86OkJyaWRnZTo6QXBpOjpXb3JrZmxvd0FjdGl2YXRpb25i",
+ "BnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Temporalio.Api.Failure.V1.MessageReflection.Descriptor, global::Temporalio.Api.Update.V1.MessageReflection.Descriptor, global::Temporalio.Api.Common.V1.MessageReflection.Descriptor, global::Temporalio.Api.Enums.V1.WorkflowReflection.Descriptor, global::Temporalio.Bridge.Api.ActivityResult.ActivityResultReflection.Descriptor, global::Temporalio.Bridge.Api.ChildWorkflow.ChildWorkflowReflection.Descriptor, global::Temporalio.Bridge.Api.Common.CommonReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
@@ -158,7 +159,7 @@ static WorkflowActivationReflection() {
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Bridge.Api.WorkflowActivation.WorkflowActivationJob), global::Temporalio.Bridge.Api.WorkflowActivation.WorkflowActivationJob.Parser, new[]{ "StartWorkflow", "FireTimer", "UpdateRandomSeed", "QueryWorkflow", "CancelWorkflow", "SignalWorkflow", "ResolveActivity", "NotifyHasPatch", "ResolveChildWorkflowExecutionStart", "ResolveChildWorkflowExecution", "ResolveSignalExternalWorkflow", "ResolveRequestCancelExternalWorkflow", "DoUpdate", "RemoveFromCache" }, new[]{ "Variant" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Bridge.Api.WorkflowActivation.StartWorkflow), global::Temporalio.Bridge.Api.WorkflowActivation.StartWorkflow.Parser, new[]{ "WorkflowType", "WorkflowId", "Arguments", "RandomnessSeed", "Headers", "Identity", "ParentWorkflowInfo", "WorkflowExecutionTimeout", "WorkflowRunTimeout", "WorkflowTaskTimeout", "ContinuedFromExecutionRunId", "ContinuedInitiator", "ContinuedFailure", "LastCompletionResult", "FirstExecutionRunId", "RetryPolicy", "Attempt", "CronSchedule", "WorkflowExecutionExpirationTime", "CronScheduleToScheduleInterval", "Memo", "SearchAttributes", "StartTime" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Bridge.Api.WorkflowActivation.FireTimer), global::Temporalio.Bridge.Api.WorkflowActivation.FireTimer.Parser, new[]{ "Seq" }, null, null, null, null),
- new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Bridge.Api.WorkflowActivation.ResolveActivity), global::Temporalio.Bridge.Api.WorkflowActivation.ResolveActivity.Parser, new[]{ "Seq", "Result" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Bridge.Api.WorkflowActivation.ResolveActivity), global::Temporalio.Bridge.Api.WorkflowActivation.ResolveActivity.Parser, new[]{ "Seq", "Result", "IsLocal" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Bridge.Api.WorkflowActivation.ResolveChildWorkflowExecutionStart), global::Temporalio.Bridge.Api.WorkflowActivation.ResolveChildWorkflowExecutionStart.Parser, new[]{ "Seq", "Succeeded", "Failed", "Cancelled" }, new[]{ "Status" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Bridge.Api.WorkflowActivation.ResolveChildWorkflowExecutionStartSuccess), global::Temporalio.Bridge.Api.WorkflowActivation.ResolveChildWorkflowExecutionStartSuccess.Parser, new[]{ "RunId" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Temporalio.Bridge.Api.WorkflowActivation.ResolveChildWorkflowExecutionStartFailure), global::Temporalio.Bridge.Api.WorkflowActivation.ResolveChildWorkflowExecutionStartFailure.Parser, new[]{ "WorkflowId", "WorkflowType", "Cause" }, null, null, null, null),
@@ -186,22 +187,37 @@ static WorkflowActivationReflection() {
/// ## Job ordering guarantees and semantics
///
/// Core will, by default, order jobs within the activation as follows:
- /// `patches -> signals/updates -> other -> queries -> evictions`
+ /// 1. patches
+ /// 2. random-seed-updates
+ /// 3. signals/updates
+ /// 4. all others
+ /// 5. local activity resolutions
+ /// 6. queries
+ /// 7. evictions
///
/// This is because:
/// * Patches are expected to apply to the entire activation
/// * Signal and update handlers should be invoked before workflow routines are iterated. That is to
/// say before the users' main workflow function and anything spawned by it is allowed to continue.
+ /// * Local activities resolutions go after other normal jobs because while *not* replaying, they
+ /// will always take longer than anything else that produces an immediate job (which is
+ /// effectively instant). When *replaying* we need to scan ahead for LA markers so that we can
+ /// resolve them in the same activation that they completed in when not replaying. However, doing
+ /// so would, by default, put those resolutions *before* any other immediate jobs that happened
+ /// in that same activation (prime example: cancelling not-wait-for-cancel activities). So, we do
+ /// this to ensure the LA resolution happens after that cancel (or whatever else it may be) as it
+ /// normally would have when executing.
/// * Queries always go last (and, in fact, always come in their own activation)
/// * Evictions also always come in their own activation
///
- /// The downside of this reordering is that a signal or update handler may not observe that some
- /// other event had already happened (ex: an activity completed) when it is first invoked, though it
- /// will subsequently when workflow routines are driven. Core only does this reordering to make life
- /// easier for languages that cannot explicitly control when workflow routines are iterated.
- /// Languages that can explicitly control such iteration should prefer to apply all the jobs to state
- /// (by resolving promises/futures, invoking handlers, etc as they iterate over the jobs) and then
- /// only *after* that is done, drive the workflow routines.
+ /// Core does this reordering to ensure that langs observe jobs in the same order during replay as
+ /// they would have during execution. However, in principle, this ordering is not necessary
+ /// (excepting queries/evictions, which definitely must come last) if lang layers apply all jobs to
+ /// state *first* (by resolving promises/futures, marking handlers to be invoked, etc as they iterate
+ /// over the jobs) and then only *after* that is done, drive coroutines/threads/whatever. If
+ /// execution works this way, then determinism is only impacted by the order routines are driven in
+ /// (which must be stable based on lang implementation or convention), rather than the order jobs are
+ /// processed.
///
/// ## Evictions
///
@@ -3083,6 +3099,7 @@ public ResolveActivity() {
public ResolveActivity(ResolveActivity other) : this() {
seq_ = other.seq_;
result_ = other.result_ != null ? other.result_.Clone() : null;
+ isLocal_ = other.isLocal_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@@ -3119,6 +3136,22 @@ public uint Seq {
}
}
+ /// Field number for the "is_local" field.
+ public const int IsLocalFieldNumber = 3;
+ private bool isLocal_;
+ ///
+ /// Set to true if the resolution is for a local activity. This is used internally by Core and
+ /// lang does not need to care about it.
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool IsLocal {
+ get { return isLocal_; }
+ set {
+ isLocal_ = value;
+ }
+ }
+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) {
@@ -3136,6 +3169,7 @@ public bool Equals(ResolveActivity other) {
}
if (Seq != other.Seq) return false;
if (!object.Equals(Result, other.Result)) return false;
+ if (IsLocal != other.IsLocal) return false;
return Equals(_unknownFields, other._unknownFields);
}
@@ -3145,6 +3179,7 @@ public override int GetHashCode() {
int hash = 1;
if (Seq != 0) hash ^= Seq.GetHashCode();
if (result_ != null) hash ^= Result.GetHashCode();
+ if (IsLocal != false) hash ^= IsLocal.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@@ -3171,6 +3206,10 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(18);
output.WriteMessage(Result);
}
+ if (IsLocal != false) {
+ output.WriteRawTag(24);
+ output.WriteBool(IsLocal);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@@ -3189,6 +3228,10 @@ public void WriteTo(pb::CodedOutputStream output) {
output.WriteRawTag(18);
output.WriteMessage(Result);
}
+ if (IsLocal != false) {
+ output.WriteRawTag(24);
+ output.WriteBool(IsLocal);
+ }
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@@ -3205,6 +3248,9 @@ public int CalculateSize() {
if (result_ != null) {
size += 1 + pb::CodedOutputStream.ComputeMessageSize(Result);
}
+ if (IsLocal != false) {
+ size += 1 + 1;
+ }
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@@ -3226,6 +3272,9 @@ public void MergeFrom(ResolveActivity other) {
}
Result.MergeFrom(other.Result);
}
+ if (other.IsLocal != false) {
+ IsLocal = other.IsLocal;
+ }
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@@ -3252,6 +3301,10 @@ public void MergeFrom(pb::CodedInputStream input) {
input.ReadMessage(Result);
break;
}
+ case 24: {
+ IsLocal = input.ReadBool();
+ break;
+ }
}
}
#endif
@@ -3278,6 +3331,10 @@ public void MergeFrom(pb::CodedInputStream input) {
input.ReadMessage(Result);
break;
}
+ case 24: {
+ IsLocal = input.ReadBool();
+ break;
+ }
}
}
}
diff --git a/src/Temporalio/Bridge/Cargo.lock b/src/Temporalio/Bridge/Cargo.lock
index 67a3c3d5..8a263946 100644
--- a/src/Temporalio/Bridge/Cargo.lock
+++ b/src/Temporalio/Bridge/Cargo.lock
@@ -154,7 +154,7 @@ dependencies = [
"rustversion",
"serde",
"sync_wrapper 1.0.1",
- "tower",
+ "tower 0.4.13",
"tower-layer",
"tower-service",
]
@@ -356,12 +356,6 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
-[[package]]
-name = "convert_case"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
-
[[package]]
name = "core-foundation"
version = "0.9.4"
@@ -420,25 +414,6 @@ dependencies = [
"crossbeam-utils",
]
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
-dependencies = [
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
-dependencies = [
- "crossbeam-utils",
-]
-
[[package]]
name = "crossbeam-queue"
version = "0.3.11"
@@ -585,15 +560,23 @@ dependencies = [
[[package]]
name = "derive_more"
-version = "0.99.18"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05"
+dependencies = [
+ "derive_more-impl",
+]
+
+[[package]]
+name = "derive_more-impl"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
+checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22"
dependencies = [
- "convert_case",
"proc-macro2",
"quote",
- "rustc_version",
"syn 2.0.72",
+ "unicode-xid",
]
[[package]]
@@ -1086,7 +1069,7 @@ dependencies = [
"pin-project-lite",
"socket2",
"tokio",
- "tower",
+ "tower 0.4.13",
"tower-service",
"tracing",
]
@@ -1299,14 +1282,13 @@ dependencies = [
[[package]]
name = "mockall"
-version = "0.12.1"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43766c2b5203b10de348ffe19f7e54564b64f3d6018ff7648d1e2d6d3a0f0a48"
+checksum = "d4c28b3fb6d753d28c20e826cd46ee611fda1cf3cde03a443a974043247c065a"
dependencies = [
"cfg-if",
"downcast",
"fragile",
- "lazy_static",
"mockall_derive",
"predicates",
"predicates-tree",
@@ -1314,9 +1296,9 @@ dependencies = [
[[package]]
name = "mockall_derive"
-version = "0.12.1"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af7cbce79ec385a1d4f54baa90a76401eb15d9cab93685f62e7e9f942aa00ae2"
+checksum = "341014e7f530314e9a1fdbc7400b244efea7122662c96bfa248c31da5bfb2020"
dependencies = [
"cfg-if",
"proc-macro2",
@@ -1889,26 +1871,6 @@ dependencies = [
"bitflags 2.6.0",
]
-[[package]]
-name = "rayon"
-version = "1.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
-dependencies = [
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
-dependencies = [
- "crossbeam-deque",
- "crossbeam-utils",
-]
-
[[package]]
name = "redox_syscall"
version = "0.4.1"
@@ -2051,15 +2013,6 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
-[[package]]
-name = "rustc_version"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
-dependencies = [
- "semver",
-]
-
[[package]]
name = "rustfsm"
version = "0.1.0"
@@ -2201,12 +2154,6 @@ dependencies = [
"libc",
]
-[[package]]
-name = "semver"
-version = "1.0.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
-
[[package]]
name = "serde"
version = "1.0.204"
@@ -2395,16 +2342,14 @@ checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
[[package]]
name = "sysinfo"
-version = "0.30.13"
+version = "0.31.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3"
+checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be"
dependencies = [
- "cfg-if",
"core-foundation-sys",
"libc",
+ "memchr",
"ntapi",
- "once_cell",
- "rayon",
"windows",
]
@@ -2457,7 +2402,7 @@ dependencies = [
"thiserror",
"tokio",
"tonic",
- "tower",
+ "tower 0.5.1",
"tracing",
"url",
"uuid",
@@ -2772,7 +2717,7 @@ dependencies = [
"tokio",
"tokio-rustls",
"tokio-stream",
- "tower",
+ "tower 0.4.13",
"tower-layer",
"tower-service",
"tracing",
@@ -2811,17 +2756,31 @@ dependencies = [
"tracing",
]
+[[package]]
+name = "tower"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper 0.1.2",
+ "tower-layer",
+ "tower-service",
+]
+
[[package]]
name = "tower-layer"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
[[package]]
name = "tower-service"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
[[package]]
name = "tracing"
@@ -2829,7 +2788,6 @@ version = "0.1.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [
- "log",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
@@ -2949,6 +2907,12 @@ dependencies = [
"tinyvec",
]
+[[package]]
+name = "unicode-xid"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a"
+
[[package]]
name = "untrusted"
version = "0.9.0"
@@ -3133,9 +3097,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows"
-version = "0.52.0"
+version = "0.57.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143"
dependencies = [
"windows-core",
"windows-targets 0.52.6",
@@ -3143,9 +3107,43 @@ dependencies = [
[[package]]
name = "windows-core"
-version = "0.52.0"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-result",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.57.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
dependencies = [
"windows-targets 0.52.6",
]
diff --git a/src/Temporalio/Bridge/sdk-core b/src/Temporalio/Bridge/sdk-core
index 631b40a6..9690510f 160000
--- a/src/Temporalio/Bridge/sdk-core
+++ b/src/Temporalio/Bridge/sdk-core
@@ -1 +1 @@
-Subproject commit 631b40a68ef9961abcc9a1bb23d9763a06f6a8f5
+Subproject commit 9690510f46b95f226b100871708e3212304f04d1