diff --git a/go.mod b/go.mod index 52a675cb6..0f00dc264 100644 --- a/go.mod +++ b/go.mod @@ -37,8 +37,8 @@ require ( github.com/shopspring/decimal v1.4.0 github.com/smartcontractkit/chain-selectors v1.0.62 github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 - github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250717142627-ae07002b923d - github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/v2/pb v0.0.0-20250715132921-fbb00f834ac8 + github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250717171326-3713a263eb89 + github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/v2/pb v0.0.0-20250717190838-612a8b4eb22f github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20250701181457-37bd0d618b58 github.com/smartcontractkit/freeport v0.1.1 github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 diff --git a/go.sum b/go.sum index b071dba41..2c0e3f331 100644 --- a/go.sum +++ b/go.sum @@ -306,8 +306,12 @@ github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgn github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250717142627-ae07002b923d h1:wQK8b6D04/uAO0gOLAPgqKSc9Y2uGBv3mizhjbpyuzU= github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250717142627-ae07002b923d/go.mod h1:U1UAbPhy6D7Qz0wHKGPoQO+dpR0hsYjgUz8xwRrmKwI= +github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250717171326-3713a263eb89 h1:6ZTpkl368bTeECC57Wis8hQitpZLNw/am0mN/VoPEQU= +github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250717171326-3713a263eb89/go.mod h1:U1UAbPhy6D7Qz0wHKGPoQO+dpR0hsYjgUz8xwRrmKwI= github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/v2/pb v0.0.0-20250715132921-fbb00f834ac8 h1:/AUP/7d2ILZyYeb/Zs70WllVzjuyzUjQGDJCaF50hww= github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/v2/pb v0.0.0-20250715132921-fbb00f834ac8/go.mod h1:ay4g8WruGFr512i+0IWDPmc1ZGpsw2ivfqfk0ED9vqY= +github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/v2/pb v0.0.0-20250717190838-612a8b4eb22f h1:kFSSJGqoaqQbaoQqURUXeo0HfkxnoY59sfDT3fox+Jo= +github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/v2/pb v0.0.0-20250717190838-612a8b4eb22f/go.mod h1:dzrYYwfmS+lgzjS3ulfO5YfQDsqBt/PrtYYik8ImxUk= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20250701181457-37bd0d618b58 h1:yXbKWplUgoC+PoOoPXseKunxElXrnCKnKBGxkmUVR2I= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20250701181457-37bd0d618b58/go.mod h1:HHGeDUpAsPa0pmOx7wrByCitjQ0mbUxf0R9v+g67uCA= github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20250430163438-97d324ef9061 h1:5BKk6j2QWmb5TFoWYVLuL8U2XUIzTUUo5HBkCHTX2kM= diff --git a/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go b/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go index 0a0cbb97c..6b888b48e 100644 --- a/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go +++ b/pkg/capabilities/v2/chain-capabilities/evm/client.pb.go @@ -2018,7 +2018,7 @@ const file_capabilities_blockchain_evm_v1alpha_client_proto_rawDesc = "" + "\n" + "LogTrigger\x12<.capabilities.blockchain.evm.v1alpha.FilterLogTriggerRequest\x1a(.capabilities.blockchain.evm.v1alpha.Log0\x01\x12}\n" + "\vWriteReport\x127.capabilities.blockchain.evm.v1alpha.WriteReportRequest\x1a5.capabilities.blockchain.evm.v1alpha.WriteReportReply\x1a\xb8\x04\x82\xb5\x18\xb3\x04\b\x01\x12\tevm@1.0.0\x1a\xa3\x04\n" + - "\rChainSelector\x12\x91\x04\x12\x8e\x04\n" + + "\rchainselector\x12\x91\x04\x12\x8e\x04\n" + "\x1d\n" + "\x11avalanche-mainnet\x10\xd5\xe7\x8a\xc0\xe1\u0558\xa4Y\n" + "#\n" + diff --git a/pkg/capabilities/v2/chain-capabilities/evm/server/client_server_gen.go b/pkg/capabilities/v2/chain-capabilities/evm/server/client_server_gen.go index e9d207601..f0c3efe30 100644 --- a/pkg/capabilities/v2/chain-capabilities/evm/server/client_server_gen.go +++ b/pkg/capabilities/v2/chain-capabilities/evm/server/client_server_gen.go @@ -42,7 +42,7 @@ type ClientCapability interface { WriteReport(ctx context.Context, metadata capabilities.RequestMetadata, input *evm.WriteReportRequest) (*evm.WriteReportReply, error) - ChainSelector() uint64 + chainselector() uint64 Start(ctx context.Context) error Close() error @@ -88,7 +88,7 @@ func (c *ClientServer) Close() error { defer cancel() if c.capabilityRegistry != nil { - if err := c.capabilityRegistry.Remove(ctx, "evm"+":ChainSelector:"+strconv.FormatUint(c.ChainSelector(), 10)+"@1.0.0"); err != nil { + if err := c.capabilityRegistry.Remove(ctx, "evm"+":chainselector:"+strconv.FormatUint(c.Chainselector(), 10)+"@1.0.0"); err != nil { return err } } @@ -115,7 +115,7 @@ type clientCapability struct { func (c *clientCapability) Info(ctx context.Context) (capabilities.CapabilityInfo, error) { // Maybe we do need to split it out, even if the user doesn't see it - return capabilities.NewCapabilityInfo("evm"+":ChainSelector:"+strconv.FormatUint(c.ChainSelector(), 10)+"@1.0.0", capabilities.CapabilityTypeCombined, c.ClientCapability.Description()) + return capabilities.NewCapabilityInfo("evm"+":chainselector:"+strconv.FormatUint(c.Chainselector(), 10)+"@1.0.0", capabilities.CapabilityTypeCombined, c.ClientCapability.Description()) } var _ capabilities.ExecutableAndTriggerCapability = (*clientCapability)(nil) @@ -126,7 +126,7 @@ func (c *clientCapability) RegisterTrigger(ctx context.Context, request capabili switch request.Method { case "LogTrigger": input := &evm.FilterLogTriggerRequest{} - return capabilities.RegisterTrigger(ctx, c.stopCh, "evm"+":ChainSelector:"+strconv.FormatUint(c.ChainSelector(), 10)+"@1.0.0", request, input, c.ClientCapability.RegisterLogTrigger) + return capabilities.RegisterTrigger(ctx, c.stopCh, "evm"+":chainselector:"+strconv.FormatUint(c.Chainselector(), 10)+"@1.0.0", request, input, c.ClientCapability.RegisterLogTrigger) default: return nil, fmt.Errorf("trigger %s not found", request.Method) } diff --git a/pkg/capabilities/v2/protoc/pkg/utils.go b/pkg/capabilities/v2/protoc/pkg/utils.go index bc252c143..6d2b6d756 100644 --- a/pkg/capabilities/v2/protoc/pkg/utils.go +++ b/pkg/capabilities/v2/protoc/pkg/utils.go @@ -3,28 +3,45 @@ package pkg import ( "fmt" "strings" + "unicode" "golang.org/x/exp/slices" "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/v2/pb" ) +// toPascalCase converts a string to PascalCase +func toPascalCase(s string) string { + words := strings.FieldsFunc(s, func(r rune) bool { + return r == '_' || r == '-' || unicode.IsSpace(r) + }) + + result := "" + for _, word := range words { + if len(word) > 0 { + result += strings.ToUpper(string(word[0])) + strings.ToLower(word[1:]) + } + } + return result +} + func StringLblValue(method bool) func(string, *pb.Label) (string, error) { return func(name string, label *pb.Label) (string, error) { + pascalName := toPascalCase(name) if method { - name += "()" + pascalName += "()" } switch pbLbl := label.Kind.(type) { case *pb.Label_StringLabel: - return fmt.Sprintf("+ c.%s", name), nil + return fmt.Sprintf("+ c.%s", pascalName), nil case *pb.Label_Uint32Label: - return fmt.Sprintf("strconv.FormatUint(uint64(c.%s), 10)", name), nil + return fmt.Sprintf("strconv.FormatUint(uint64(c.%s), 10)", pascalName), nil case *pb.Label_Int32Label: - return fmt.Sprintf("strconv.FormatInt(int64(c.%s), 10)", name), nil + return fmt.Sprintf("strconv.FormatInt(int64(c.%s), 10)", pascalName), nil case *pb.Label_Uint64Label: - return fmt.Sprintf("strconv.FormatUint(c.%s, 10)", name), nil + return fmt.Sprintf("strconv.FormatUint(c.%s, 10)", pascalName), nil case *pb.Label_Int64Label: - return fmt.Sprintf("strconv.FormatInt(c.%s, 10)", name), nil + return fmt.Sprintf("strconv.FormatInt(c.%s, 10)", pascalName), nil default: return "", fmt.Errorf("unsupported label type: %T", pbLbl) }