diff --git a/pkg/capabilities/pb/capabilities.pb.go b/pkg/capabilities/pb/capabilities.pb.go index bdea7ef5cc..9542030328 100644 --- a/pkg/capabilities/pb/capabilities.pb.go +++ b/pkg/capabilities/pb/capabilities.pb.go @@ -1247,6 +1247,7 @@ type InitialiseRequest struct { OrgResolverId uint32 `protobuf:"varint,11,opt,name=org_resolver_id,json=orgResolverId,proto3" json:"org_resolver_id,omitempty"` CreSettingsId uint32 `protobuf:"varint,12,opt,name=cre_settings_id,json=creSettingsId,proto3" json:"cre_settings_id,omitempty"` TriggerEventStoreId uint32 `protobuf:"varint,13,opt,name=trigger_event_store_id,json=triggerEventStoreId,proto3" json:"trigger_event_store_id,omitempty"` + CapabilityDonId uint32 `protobuf:"varint,14,opt,name=capability_don_id,json=capabilityDonId,proto3" json:"capability_don_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1372,6 +1373,13 @@ func (x *InitialiseRequest) GetTriggerEventStoreId() uint32 { return 0 } +func (x *InitialiseRequest) GetCapabilityDonId() uint32 { + if x != nil { + return x.CapabilityDonId + } + return 0 +} + type CapabilityInfosReply struct { state protoimpl.MessageState `protogen:"open.v1"` Infos []*CapabilityInfoReply `protobuf:"bytes,1,rep,name=infos,proto3" json:"infos,omitempty"` @@ -1564,7 +1572,7 @@ const file_capabilities_proto_rawDesc = "" + "\x06config\x18\x02 \x01(\v2\x0e.values.v1.MapR\x06config\"\x87\x01\n" + "\x1dUnregisterFromWorkflowRequest\x12>\n" + "\bmetadata\x18\x01 \x01(\v2\".capabilities.RegistrationMetadataR\bmetadata\x12&\n" + - "\x06config\x18\x02 \x01(\v2\x0e.values.v1.MapR\x06config\"\x9a\x04\n" + + "\x06config\x18\x02 \x01(\v2\x0e.values.v1.MapR\x06config\"\xc6\x04\n" + "\x11InitialiseRequest\x12\x16\n" + "\x06config\x18\x01 \x01(\tR\x06config\x12 \n" + "\ferror_log_id\x18\x02 \x01(\rR\n" + @@ -1581,7 +1589,8 @@ const file_capabilities_proto_rawDesc = "" + "keystoreId\x12&\n" + "\x0forg_resolver_id\x18\v \x01(\rR\rorgResolverId\x12&\n" + "\x0fcre_settings_id\x18\f \x01(\rR\rcreSettingsId\x123\n" + - "\x16trigger_event_store_id\x18\r \x01(\rR\x13triggerEventStoreId\"O\n" + + "\x16trigger_event_store_id\x18\r \x01(\rR\x13triggerEventStoreId\x12*\n" + + "\x11capability_don_id\x18\x0e \x01(\rR\x0fcapabilityDonId\"O\n" + "\x14CapabilityInfosReply\x127\n" + "\x05infos\x18\x01 \x03(\v2!.capabilities.CapabilityInfoReplyR\x05infos\"@\n" + "\x0eSettingsUpdate\x12\x1a\n" + diff --git a/pkg/capabilities/pb/capabilities.proto b/pkg/capabilities/pb/capabilities.proto index b14897247e..cc0ccf5fc9 100644 --- a/pkg/capabilities/pb/capabilities.proto +++ b/pkg/capabilities/pb/capabilities.proto @@ -198,6 +198,7 @@ message InitialiseRequest { uint32 org_resolver_id = 11; uint32 cre_settings_id = 12; uint32 trigger_event_store_id = 13; + uint32 capability_don_id = 14; } message CapabilityInfosReply { diff --git a/pkg/loop/internal/core/services/capability/standard/standard_capabilities.go b/pkg/loop/internal/core/services/capability/standard/standard_capabilities.go index 51f4b54a81..62b8add105 100644 --- a/pkg/loop/internal/core/services/capability/standard/standard_capabilities.go +++ b/pkg/loop/internal/core/services/capability/standard/standard_capabilities.go @@ -225,6 +225,7 @@ func (c *StandardCapabilitiesClient) Initialise(ctx context.Context, dependencie OrgResolverId: orgResolverID, CreSettingsId: creSettingsID, TriggerEventStoreId: triggerEventStoreID, + CapabilityDonId: dependencies.CapabilityDonID, }) if err != nil { @@ -416,6 +417,7 @@ func (s *standardCapabilitiesServer) Initialise(ctx context.Context, request *ca OrgResolver: orgResolver, CRESettings: creSettings, TriggerEventStore: triggerEventStoreClient, + CapabilityDonID: request.CapabilityDonId, } if err = s.impl.Initialise(ctx, dependencies); err != nil { diff --git a/pkg/types/core/standard_capabilities_dependencies.go b/pkg/types/core/standard_capabilities_dependencies.go index 3cf7ac2898..25add8e6f9 100644 --- a/pkg/types/core/standard_capabilities_dependencies.go +++ b/pkg/types/core/standard_capabilities_dependencies.go @@ -22,4 +22,16 @@ type StandardCapabilitiesDependencies struct { OrgResolver orgresolver.OrgResolver CRESettings SettingsBroadcaster TriggerEventStore capabilities.EventStore + // CapabilityDonID is the on-chain DON ID of the capability DON this plugin + // process was spawned for, resolved authoritatively by the host before + // Initialise is called. Plugins should use this as the source of truth for + // their own DON identity (e.g. when emitting events that need to carry the + // *sending* DON ID, distinct from the consumer workflow's DON ID). + // + // Zero means the host did not provide one — either a legacy core node that + // pre-dates this field, or a boot path that has not yet been updated to + // populate it. Plugins SHOULD fall back to resolving via the capability + // registry in that case, but the fallback path cannot disambiguate when + // the local node belongs to multiple DONs running the same capability. + CapabilityDonID uint32 }