From 3a5dd3960ece590a17698f0d4319f29ca0a83269 Mon Sep 17 00:00:00 2001 From: Patrick Huie Date: Tue, 7 Oct 2025 15:24:35 -0400 Subject: [PATCH 1/2] updating standard capabilities interface --- core/capabilities/fakes/consensus_nodag.go | 10 +---- core/capabilities/fakes/evm_chain.go | 9 +--- core/capabilities/fakes/http_action.go | 9 +--- .../capabilities/fakes/manual_cron_trigger.go | 15 ++----- .../capabilities/fakes/manual_http_trigger.go | 10 +---- .../services/standardcapabilities/delegate.go | 15 ++++++- .../standard_capabilities.go | 43 ++++++++++--------- .../standard_capabilities_test.go | 14 +++++- .../cmd/cre/utils/standard_capabilities.go | 16 +++++-- go.mod | 2 +- go.sum | 4 +- .../capabilities/log-event-trigger/main.go | 19 +++----- 12 files changed, 78 insertions(+), 88 deletions(-) diff --git a/core/capabilities/fakes/consensus_nodag.go b/core/capabilities/fakes/consensus_nodag.go index 5fe0cb39aab..87116bb277a 100644 --- a/core/capabilities/fakes/consensus_nodag.go +++ b/core/capabilities/fakes/consensus_nodag.go @@ -154,15 +154,7 @@ func (fc *fakeConsensusNoDAG) Description() string { func (fc *fakeConsensusNoDAG) Initialise( _ context.Context, - _ string, - _ core.TelemetryService, - _ core.KeyValueStore, - _ core.ErrorLog, - _ core.PipelineRunnerService, - _ core.RelayerSet, - _ core.OracleFactory, - _ core.GatewayConnector, - _ core.Keystore, + _ core.StandardCapabilitiesDependencies, ) error { return nil } diff --git a/core/capabilities/fakes/evm_chain.go b/core/capabilities/fakes/evm_chain.go index 99a5acf3a46..2b71780b3b7 100644 --- a/core/capabilities/fakes/evm_chain.go +++ b/core/capabilities/fakes/evm_chain.go @@ -85,14 +85,7 @@ func NewFakeEvmChain( return fc } -func (fc *FakeEVMChain) Initialise(ctx context.Context, config string, _ core.TelemetryService, - _ core.KeyValueStore, - _ core.ErrorLog, - _ core.PipelineRunnerService, - _ core.RelayerSet, - _ core.OracleFactory, - _ core.GatewayConnector, - _ core.Keystore) error { +func (fc *FakeEVMChain) Initialise(ctx context.Context, dependencies core.StandardCapabilitiesDependencies) error { // TODO: do validation of config here err := fc.Start(ctx) diff --git a/core/capabilities/fakes/http_action.go b/core/capabilities/fakes/http_action.go index 0df2d7ab07b..3876cdc5d6d 100644 --- a/core/capabilities/fakes/http_action.go +++ b/core/capabilities/fakes/http_action.go @@ -147,14 +147,7 @@ func (fh *DirectHTTPAction) Description() string { return directHTTPActionInfo.Description } -func (fh *DirectHTTPAction) Initialise(ctx context.Context, config string, _ core.TelemetryService, - _ core.KeyValueStore, - _ core.ErrorLog, - _ core.PipelineRunnerService, - _ core.RelayerSet, - _ core.OracleFactory, - _ core.GatewayConnector, - _ core.Keystore) error { +func (fh *DirectHTTPAction) Initialise(ctx context.Context, dependencies core.StandardCapabilitiesDependencies) error { // TODO: do validation of config here err := fh.Start(ctx) diff --git a/core/capabilities/fakes/manual_cron_trigger.go b/core/capabilities/fakes/manual_cron_trigger.go index ed703c6bedc..179cb112df7 100644 --- a/core/capabilities/fakes/manual_cron_trigger.go +++ b/core/capabilities/fakes/manual_cron_trigger.go @@ -57,21 +57,14 @@ func NewManualCronTriggerService(parentLggr logger.Logger) *ManualCronTriggerSer } } -func (f *ManualCronTriggerService) Initialise(ctx context.Context, config string, _ core.TelemetryService, - _ core.KeyValueStore, - _ core.ErrorLog, - _ core.PipelineRunnerService, - _ core.RelayerSet, - _ core.OracleFactory, - _ core.GatewayConnector, - _ core.Keystore) error { +func (f *ManualCronTriggerService) Initialise(ctx context.Context, dependencies core.StandardCapabilitiesDependencies) error { f.lggr.Debugf("Initialising %s", ServiceName) var cronConfig ManualCronConfig - if len(config) > 0 { - err := json.Unmarshal([]byte(config), &cronConfig) + if len(dependencies.Config) > 0 { + err := json.Unmarshal([]byte(dependencies.Config), &cronConfig) if err != nil { - return fmt.Errorf("failed to unmarshal config: %s %w", config, err) + return fmt.Errorf("failed to unmarshal config: %s %w", dependencies.Config, err) } } diff --git a/core/capabilities/fakes/manual_http_trigger.go b/core/capabilities/fakes/manual_http_trigger.go index e34c73fc47c..69148d19d0a 100644 --- a/core/capabilities/fakes/manual_http_trigger.go +++ b/core/capabilities/fakes/manual_http_trigger.go @@ -54,15 +54,7 @@ func (f *ManualHTTPTriggerService) UnregisterTrigger(ctx context.Context, trigge return nil } -func (f *ManualHTTPTriggerService) Initialise(ctx context.Context, config string, - _ core.TelemetryService, - _ core.KeyValueStore, - _ core.ErrorLog, - _ core.PipelineRunnerService, - _ core.RelayerSet, - _ core.OracleFactory, - _ core.GatewayConnector, - _ core.Keystore) error { +func (f *ManualHTTPTriggerService) Initialise(ctx context.Context, dependencies core.StandardCapabilitiesDependencies) error { f.lggr.Debugf("Initialising %s", HTTPTriggerServiceName) return f.Start(ctx) } diff --git a/core/services/standardcapabilities/delegate.go b/core/services/standardcapabilities/delegate.go index f5b0580170f..6cfaeb510f2 100644 --- a/core/services/standardcapabilities/delegate.go +++ b/core/services/standardcapabilities/delegate.go @@ -304,8 +304,19 @@ func (d *Delegate) ServicesForSpec(ctx context.Context, spec job.Job) ([]job.Ser return services, nil } - standardCapability := NewStandardCapabilities(log, spec.StandardCapabilitiesSpec, d.cfg, telemetryService, kvStore, d.registry, errorLog, - pr, relayerSet, oracleFactory, connector, ks) + dependencies := core.StandardCapabilitiesDependencies{ + Config: spec.StandardCapabilitiesSpec.Config, + TelemetryService: telemetryService, + Store: kvStore, + CapabilityRegistry: d.registry, + ErrorLog: errorLog, + PipelineRunner: pr, + RelayerSet: relayerSet, + OracleFactory: oracleFactory, + GatewayConnector: connector, + P2PKeystore: ks, + } + standardCapability := NewStandardCapabilities(log, spec.StandardCapabilitiesSpec, d.cfg, dependencies) return []job.ServiceCtx{standardCapability}, nil } diff --git a/core/services/standardcapabilities/standard_capabilities.go b/core/services/standardcapabilities/standard_capabilities.go index d5933270cb6..344ca4e2ec1 100644 --- a/core/services/standardcapabilities/standard_capabilities.go +++ b/core/services/standardcapabilities/standard_capabilities.go @@ -49,29 +49,21 @@ func NewStandardCapabilities( log logger.Logger, spec *job.StandardCapabilitiesSpec, pluginRegistrar plugins.RegistrarConfig, - telemetryService core.TelemetryService, - store core.KeyValueStore, - CapabilitiesRegistry core.CapabilitiesRegistry, - errorLog core.ErrorLog, - pipelineRunner core.PipelineRunnerService, - relayerSet core.RelayerSet, - oracleFactory core.OracleFactory, - gatewayConnector core.GatewayConnector, - keystore core.Keystore, + dependencies core.StandardCapabilitiesDependencies, ) *StandardCapabilities { return &StandardCapabilities{ log: log, spec: spec, pluginRegistrar: pluginRegistrar, - telemetryService: telemetryService, - store: store, - CapabilitiesRegistry: CapabilitiesRegistry, - errorLog: errorLog, - pipelineRunner: pipelineRunner, - relayerSet: relayerSet, - oracleFactory: oracleFactory, - gatewayConnector: gatewayConnector, - keystore: keystore, + telemetryService: dependencies.TelemetryService, + store: dependencies.Store, + CapabilitiesRegistry: dependencies.CapabilityRegistry, + errorLog: dependencies.ErrorLog, + pipelineRunner: dependencies.PipelineRunner, + relayerSet: dependencies.RelayerSet, + oracleFactory: dependencies.OracleFactory, + gatewayConnector: dependencies.GatewayConnector, + keystore: dependencies.P2PKeystore, stopChan: make(chan struct{}), readyChan: make(chan struct{}), } @@ -112,8 +104,19 @@ func (s *StandardCapabilities) Start(ctx context.Context) error { return } - if err = s.capabilitiesLoop.Service.Initialise(cctx, s.spec.Config, s.telemetryService, s.store, s.CapabilitiesRegistry, s.errorLog, - s.pipelineRunner, s.relayerSet, s.oracleFactory, s.gatewayConnector, s.keystore); err != nil { + dependencies := core.StandardCapabilitiesDependencies{ + Config: s.spec.Config, + TelemetryService: s.telemetryService, + Store: s.store, + CapabilityRegistry: s.CapabilitiesRegistry, + ErrorLog: s.errorLog, + PipelineRunner: s.pipelineRunner, + RelayerSet: s.relayerSet, + OracleFactory: s.oracleFactory, + GatewayConnector: s.gatewayConnector, + P2PKeystore: s.keystore, + } + if err = s.capabilitiesLoop.Service.Initialise(cctx, dependencies); err != nil { s.log.Errorf("error initialising standard capabilities service: %v", err) return } diff --git a/core/services/standardcapabilities/standard_capabilities_test.go b/core/services/standardcapabilities/standard_capabilities_test.go index 8afb297e2ed..5ea431b2f72 100644 --- a/core/services/standardcapabilities/standard_capabilities_test.go +++ b/core/services/standardcapabilities/standard_capabilities_test.go @@ -39,7 +39,19 @@ func TestStandardCapabilityStart(t *testing.T) { ChainID: "31337", }} - standardCapability := NewStandardCapabilities(lggr, spec, pluginRegistrar, &telemetryServiceMock{}, &kvstoreMock{}, registry, &errorLogMock{}, &pipelineRunnerServiceMock{}, &relayerSetMock{}, &oracleFactoryMock{}, &gatewayConnectorMock{}, &keystoreMock{}) + dependencies := core.StandardCapabilitiesDependencies{ + Config: spec.Config, + TelemetryService: &telemetryServiceMock{}, + Store: &kvstoreMock{}, + CapabilityRegistry: registry, + ErrorLog: &errorLogMock{}, + PipelineRunner: &pipelineRunnerServiceMock{}, + RelayerSet: &relayerSetMock{}, + OracleFactory: &oracleFactoryMock{}, + GatewayConnector: &gatewayConnectorMock{}, + P2PKeystore: &keystoreMock{}, + } + standardCapability := NewStandardCapabilities(lggr, spec, pluginRegistrar, dependencies) standardCapability.startTimeout = 1 * time.Second err := standardCapability.Start(ctx) require.NoError(t, err) diff --git a/core/services/workflows/cmd/cre/utils/standard_capabilities.go b/core/services/workflows/cmd/cre/utils/standard_capabilities.go index 9b0ed0030c7..2c01ed28ec8 100644 --- a/core/services/workflows/cmd/cre/utils/standard_capabilities.go +++ b/core/services/workflows/cmd/cre/utils/standard_capabilities.go @@ -7,6 +7,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink-common/pkg/loop" "github.com/smartcontractkit/chainlink-common/pkg/services" + "github.com/smartcontractkit/chainlink-common/pkg/types/core" "github.com/smartcontractkit/chainlink/v2/core/capabilities" "github.com/smartcontractkit/chainlink/v2/core/capabilities/fakes" "github.com/smartcontractkit/chainlink/v2/core/services/job" @@ -69,9 +70,18 @@ func newStandardCapabilities( } loop := standardcapabilities.NewStandardCapabilities(lggr, spec, - pluginRegistrar, &fakes.TelemetryServiceMock{}, &fakes.KVStoreMock{}, - registry, &fakes.ErrorLogMock{}, &fakes.PipelineRunnerServiceMock{}, - &fakes.RelayerSetMock{}, &fakes.OracleFactoryMock{}, &fakes.GatewayConnectorMock{}, &fakes.KeystoreMock{}) + pluginRegistrar, core.StandardCapabilitiesDependencies{ + Config: spec.Config, + TelemetryService: &fakes.TelemetryServiceMock{}, + Store: &fakes.KVStoreMock{}, + CapabilityRegistry: registry, + ErrorLog: &fakes.ErrorLogMock{}, + PipelineRunner: &fakes.PipelineRunnerServiceMock{}, + RelayerSet: &fakes.RelayerSetMock{}, + OracleFactory: &fakes.OracleFactoryMock{}, + GatewayConnector: &fakes.GatewayConnectorMock{}, + P2PKeystore: &fakes.KeystoreMock{}, + }) service := &standaloneLoopWrapper{ StandardCapabilities: loop, diff --git a/go.mod b/go.mod index b20e3522738..bde44a2150c 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20251006185749-5bbcd3de2ec8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.6-0.20251003215432-a8795d634f42 + github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007172033-a76cb023759b github.com/smartcontractkit/chainlink-data-streams v0.1.5 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20251006145521-1bb51044b147 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251003185510-17234095940f diff --git a/go.sum b/go.sum index 7c09ee10835..4b727dcb26e 100644 --- a/go.sum +++ b/go.sum @@ -1113,8 +1113,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.6-0.20251003215432-a8795d634f42 h1:wq5axTY1g0EY/xHsdmpDqJrfCqf6dmoxoNBjVxhBl1c= -github.com/smartcontractkit/chainlink-common v0.9.6-0.20251003215432-a8795d634f42/go.mod h1:37kbNkl7i8GIVDX7ScdzxQCMGFYkaL6cX+P1wRG4D4U= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007172033-a76cb023759b h1:0wwL6b6s0iRO4PHqoVnjj0KvaS014Sab+pQ/HZYuneU= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007172033-a76cb023759b/go.mod h1:37kbNkl7i8GIVDX7ScdzxQCMGFYkaL6cX+P1wRG4D4U= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/plugins/cmd/capabilities/log-event-trigger/main.go b/plugins/cmd/capabilities/log-event-trigger/main.go index b523e8da846..ca8ec429860 100644 --- a/plugins/cmd/capabilities/log-event-trigger/main.go +++ b/plugins/cmd/capabilities/log-event-trigger/main.go @@ -85,27 +85,18 @@ func (cs *LogEventTriggerGRPCService) Infos(ctx context.Context) ([]capabilities func (cs *LogEventTriggerGRPCService) Initialise( ctx context.Context, - config string, - telemetryService core.TelemetryService, - store core.KeyValueStore, - capabilityRegistry core.CapabilitiesRegistry, - errorLog core.ErrorLog, - pipelineRunner core.PipelineRunnerService, - relayerSet core.RelayerSet, - oracleFactory core.OracleFactory, - gatewayConnector core.GatewayConnector, - keystore core.Keystore, + dependencies core.StandardCapabilitiesDependencies, ) error { cs.s.Logger.Debugf("Initialising %s", serviceName) var logEventConfig logevent.Config - err := json.Unmarshal([]byte(config), &logEventConfig) + err := json.Unmarshal([]byte(dependencies.Config), &logEventConfig) if err != nil { return fmt.Errorf("error decoding log_event_trigger config: %w", err) } relayID := types.NewRelayID(logEventConfig.Network, logEventConfig.ChainID) - relayer, err := relayerSet.Get(ctx, relayID) + relayer, err := dependencies.RelayerSet.Get(ctx, relayID) if err != nil { return fmt.Errorf("error fetching relayer for chainID %s from relayerSet: %w", logEventConfig.ChainID, err) } @@ -122,8 +113,8 @@ func (cs *LogEventTriggerGRPCService) Initialise( } cs.triggerService = triggerService - if err := capabilityRegistry.Add(ctx, cs.triggerService); err != nil { - return fmt.Errorf("error when adding cron trigger to the registry: %w", err) + if err := dependencies.CapabilityRegistry.Add(ctx, cs.triggerService); err != nil { + return fmt.Errorf("error when adding log event trigger to the registry: %w", err) } return nil From 2842ddb2372b63d9638bd0e68ca3622a10ac6f4a Mon Sep 17 00:00:00 2001 From: Patrick Huie Date: Tue, 7 Oct 2025 16:08:48 -0400 Subject: [PATCH 2/2] bumping go mod --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bde44a2150c..02a84dd3a2f 100644 --- a/go.mod +++ b/go.mod @@ -85,7 +85,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20251006185749-5bbcd3de2ec8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007172033-a76cb023759b + github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007200533-32ee550b9b37 github.com/smartcontractkit/chainlink-data-streams v0.1.5 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20251006145521-1bb51044b147 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251003185510-17234095940f diff --git a/go.sum b/go.sum index 4b727dcb26e..58f4e990aba 100644 --- a/go.sum +++ b/go.sum @@ -1113,8 +1113,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007172033-a76cb023759b h1:0wwL6b6s0iRO4PHqoVnjj0KvaS014Sab+pQ/HZYuneU= -github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007172033-a76cb023759b/go.mod h1:37kbNkl7i8GIVDX7ScdzxQCMGFYkaL6cX+P1wRG4D4U= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007200533-32ee550b9b37 h1:20has9qym6hsGIXY/LnfiulB1ABv9wpsZwkpuZoevPk= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20251007200533-32ee550b9b37/go.mod h1:37kbNkl7i8GIVDX7ScdzxQCMGFYkaL6cX+P1wRG4D4U= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw=