diff --git a/backend/protos/xyz/block/ftl/v1/language/language.pb.go b/backend/protos/xyz/block/ftl/v1/language/language.pb.go index fd06a4e8c9..0f89c2a668 100644 --- a/backend/protos/xyz/block/ftl/v1/language/language.pb.go +++ b/backend/protos/xyz/block/ftl/v1/language/language.pb.go @@ -121,58 +121,6 @@ func (Error_ErrorType) EnumDescriptor() ([]byte, []int) { return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{13, 1} } -type LogMessage_LogLevel int32 - -const ( - LogMessage_DEBUG LogMessage_LogLevel = 0 - LogMessage_INFO LogMessage_LogLevel = 1 - LogMessage_WARN LogMessage_LogLevel = 2 - LogMessage_ERROR LogMessage_LogLevel = 3 -) - -// Enum value maps for LogMessage_LogLevel. -var ( - LogMessage_LogLevel_name = map[int32]string{ - 0: "DEBUG", - 1: "INFO", - 2: "WARN", - 3: "ERROR", - } - LogMessage_LogLevel_value = map[string]int32{ - "DEBUG": 0, - "INFO": 1, - "WARN": 2, - "ERROR": 3, - } -) - -func (x LogMessage_LogLevel) Enum() *LogMessage_LogLevel { - p := new(LogMessage_LogLevel) - *p = x - return p -} - -func (x LogMessage_LogLevel) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (LogMessage_LogLevel) Descriptor() protoreflect.EnumDescriptor { - return file_xyz_block_ftl_v1_language_language_proto_enumTypes[2].Descriptor() -} - -func (LogMessage_LogLevel) Type() protoreflect.EnumType { - return &file_xyz_block_ftl_v1_language_language_proto_enumTypes[2] -} - -func (x LogMessage_LogLevel) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use LogMessage_LogLevel.Descriptor instead. -func (LogMessage_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{20, 0} -} - // ModuleConfig contains the configuration for a module, found in the module's ftl.toml file. type ModuleConfig struct { state protoimpl.MessageState @@ -1438,60 +1386,6 @@ func (x *BuildFailure) GetInvalidateDependencies() bool { return false } -// Log message from the language service. -type LogMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` - Level LogMessage_LogLevel `protobuf:"varint,2,opt,name=level,proto3,enum=xyz.block.ftl.v1.language.LogMessage_LogLevel" json:"level,omitempty"` -} - -func (x *LogMessage) Reset() { - *x = LogMessage{} - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *LogMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LogMessage) ProtoMessage() {} - -func (x *LogMessage) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LogMessage.ProtoReflect.Descriptor instead. -func (*LogMessage) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{20} -} - -func (x *LogMessage) GetMessage() string { - if x != nil { - return x.Message - } - return "" -} - -func (x *LogMessage) GetLevel() LogMessage_LogLevel { - if x != nil { - return x.Level - } - return LogMessage_DEBUG -} - // Every type of message that can be streamed from the language plugin for a build. type BuildEvent struct { state protoimpl.MessageState @@ -1503,13 +1397,12 @@ type BuildEvent struct { // *BuildEvent_AutoRebuildStarted // *BuildEvent_BuildSuccess // *BuildEvent_BuildFailure - // *BuildEvent_LogMessage Event isBuildEvent_Event `protobuf_oneof:"event"` } func (x *BuildEvent) Reset() { *x = BuildEvent{} - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[21] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1521,7 +1414,7 @@ func (x *BuildEvent) String() string { func (*BuildEvent) ProtoMessage() {} func (x *BuildEvent) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[21] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1534,7 +1427,7 @@ func (x *BuildEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildEvent.ProtoReflect.Descriptor instead. func (*BuildEvent) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{21} + return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{20} } func (m *BuildEvent) GetEvent() isBuildEvent_Event { @@ -1565,13 +1458,6 @@ func (x *BuildEvent) GetBuildFailure() *BuildFailure { return nil } -func (x *BuildEvent) GetLogMessage() *LogMessage { - if x, ok := x.GetEvent().(*BuildEvent_LogMessage); ok { - return x.LogMessage - } - return nil -} - type isBuildEvent_Event interface { isBuildEvent_Event() } @@ -1588,18 +1474,12 @@ type BuildEvent_BuildFailure struct { BuildFailure *BuildFailure `protobuf:"bytes,4,opt,name=build_failure,json=buildFailure,proto3,oneof"` } -type BuildEvent_LogMessage struct { - LogMessage *LogMessage `protobuf:"bytes,5,opt,name=log_message,json=logMessage,proto3,oneof"` -} - func (*BuildEvent_AutoRebuildStarted) isBuildEvent_Event() {} func (*BuildEvent_BuildSuccess) isBuildEvent_Event() {} func (*BuildEvent_BuildFailure) isBuildEvent_Event() {} -func (*BuildEvent_LogMessage) isBuildEvent_Event() {} - type GenerateStubsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1619,7 +1499,7 @@ type GenerateStubsRequest struct { func (x *GenerateStubsRequest) Reset() { *x = GenerateStubsRequest{} - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[22] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1631,7 +1511,7 @@ func (x *GenerateStubsRequest) String() string { func (*GenerateStubsRequest) ProtoMessage() {} func (x *GenerateStubsRequest) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[22] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1644,7 +1524,7 @@ func (x *GenerateStubsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateStubsRequest.ProtoReflect.Descriptor instead. func (*GenerateStubsRequest) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{22} + return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{21} } func (x *GenerateStubsRequest) GetDir() string { @@ -1683,7 +1563,7 @@ type GenerateStubsResponse struct { func (x *GenerateStubsResponse) Reset() { *x = GenerateStubsResponse{} - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[23] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1695,7 +1575,7 @@ func (x *GenerateStubsResponse) String() string { func (*GenerateStubsResponse) ProtoMessage() {} func (x *GenerateStubsResponse) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[23] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1708,7 +1588,7 @@ func (x *GenerateStubsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateStubsResponse.ProtoReflect.Descriptor instead. func (*GenerateStubsResponse) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{23} + return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{22} } type SyncStubReferencesRequest struct { @@ -1725,7 +1605,7 @@ type SyncStubReferencesRequest struct { func (x *SyncStubReferencesRequest) Reset() { *x = SyncStubReferencesRequest{} - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[24] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1737,7 +1617,7 @@ func (x *SyncStubReferencesRequest) String() string { func (*SyncStubReferencesRequest) ProtoMessage() {} func (x *SyncStubReferencesRequest) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[24] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1750,7 +1630,7 @@ func (x *SyncStubReferencesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncStubReferencesRequest.ProtoReflect.Descriptor instead. func (*SyncStubReferencesRequest) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{24} + return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{23} } func (x *SyncStubReferencesRequest) GetModuleConfig() *ModuleConfig { @@ -1782,7 +1662,7 @@ type SyncStubReferencesResponse struct { func (x *SyncStubReferencesResponse) Reset() { *x = SyncStubReferencesResponse{} - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[25] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1794,7 +1674,7 @@ func (x *SyncStubReferencesResponse) String() string { func (*SyncStubReferencesResponse) ProtoMessage() {} func (x *SyncStubReferencesResponse) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[25] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1807,7 +1687,7 @@ func (x *SyncStubReferencesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncStubReferencesResponse.ProtoReflect.Descriptor instead. func (*SyncStubReferencesResponse) Descriptor() ([]byte, []int) { - return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{25} + return file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP(), []int{24} } type GetCreateModuleFlagsResponse_Flag struct { @@ -1826,7 +1706,7 @@ type GetCreateModuleFlagsResponse_Flag struct { func (x *GetCreateModuleFlagsResponse_Flag) Reset() { *x = GetCreateModuleFlagsResponse_Flag{} - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[26] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1838,7 +1718,7 @@ func (x *GetCreateModuleFlagsResponse_Flag) String() string { func (*GetCreateModuleFlagsResponse_Flag) ProtoMessage() {} func (x *GetCreateModuleFlagsResponse_Flag) ProtoReflect() protoreflect.Message { - mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[26] + mi := &file_xyz_block_ftl_v1_language_language_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2108,145 +1988,130 @@ var file_xyz_block_ftl_v1_language_language_proto_rawDesc = []byte{ 0x12, 0x37, 0x0a, 0x17, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, - 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x0a, 0x4c, 0x6f, - 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x44, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, - 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x6f, - 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x34, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x41, 0x52, - 0x4e, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x22, 0xe2, - 0x02, 0x0a, 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x61, 0x0a, - 0x14, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x79, - 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x61, 0x75, - 0x74, 0x6f, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, - 0x12, 0x4e, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x48, 0x00, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x12, 0x4e, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x48, 0x00, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x12, 0x48, 0x0a, 0x0b, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, - 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0a, - 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, - 0x65, 0x6e, 0x74, 0x22, 0xa8, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x75, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x64, 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x72, 0x12, 0x37, - 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, - 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x14, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, - 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x12, - 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x17, - 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x19, 0x53, 0x79, 0x6e, 0x63, - 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, - 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x75, 0x62, 0x73, 0x5f, 0x72, 0x6f, 0x6f, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x75, 0x62, 0x73, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x1c, 0x0a, 0x1a, - 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xb0, 0x08, 0x0a, 0x0f, 0x4c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4a, - 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, + 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x22, 0x98, 0x02, 0x0a, 0x0a, 0x42, 0x75, + 0x69, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x61, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, + 0x5f, 0x72, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x52, 0x65, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x0d, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, + 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4e, 0x0a, 0x0d, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, + 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x65, + 0x76, 0x65, 0x6e, 0x74, 0x22, 0xa8, 0x02, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x75, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x64, 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x72, 0x12, + 0x37, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x14, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, + 0x12, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6e, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x17, 0x0a, 0x15, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x19, 0x53, 0x79, 0x6e, + 0x63, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, + 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x75, 0x62, 0x73, 0x5f, 0x72, 0x6f, + 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x75, 0x62, 0x73, 0x52, + 0x6f, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x1c, 0x0a, + 0x1a, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xb0, 0x08, 0x0a, 0x0f, + 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x4a, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x6c, - 0x61, 0x67, 0x73, 0x12, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x87, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, - 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x78, 0x79, - 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, - 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x12, 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x6c, 0x61, 0x67, 0x73, 0x12, 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x14, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x36, - 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, - 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, - 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x44, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, - 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x44, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x27, 0x2e, 0x78, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, - 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6f, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, - 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x84, - 0x01, 0x0a, 0x13, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, + 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, + 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x14, 0x4d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x12, + 0x36, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, + 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, + 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, + 0x69, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, + 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, + 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x27, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, - 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x75, 0x62, 0x73, 0x12, 0x2f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, + 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, + 0x84, 0x01, 0x0a, 0x13, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, + 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, + 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x72, 0x0a, 0x0d, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, 0x73, 0x12, 0x2f, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, 0x62, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x53, 0x79, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x53, 0x74, 0x75, + 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x12, 0x53, + 0x79, 0x6e, 0x63, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, + 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, - 0x12, 0x34, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, - 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x2e, 0x53, 0x79, 0x6e, - 0x63, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x52, 0x50, - 0x01, 0x5a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x42, - 0x44, 0x35, 0x34, 0x35, 0x36, 0x36, 0x39, 0x37, 0x35, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x62, 0x61, - 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x78, 0x79, 0x7a, - 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x61, - 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3b, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x70, - 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x78, 0x79, 0x7a, 0x2e, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x66, 0x74, 0x6c, 0x2e, 0x76, 0x31, 0x2e, 0x6c, 0x61, 0x6e, 0x67, 0x75, + 0x61, 0x67, 0x65, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x53, 0x74, 0x75, 0x62, 0x52, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x52, + 0x50, 0x01, 0x5a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, + 0x42, 0x44, 0x35, 0x34, 0x35, 0x36, 0x36, 0x39, 0x37, 0x35, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x62, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x78, 0x79, + 0x7a, 0x2f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2f, 0x66, 0x74, 0x6c, 0x2f, 0x76, 0x31, 0x2f, 0x6c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x3b, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2261,95 +2126,91 @@ func file_xyz_block_ftl_v1_language_language_proto_rawDescGZIP() []byte { return file_xyz_block_ftl_v1_language_language_proto_rawDescData } -var file_xyz_block_ftl_v1_language_language_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_xyz_block_ftl_v1_language_language_proto_msgTypes = make([]protoimpl.MessageInfo, 27) +var file_xyz_block_ftl_v1_language_language_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_xyz_block_ftl_v1_language_language_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_xyz_block_ftl_v1_language_language_proto_goTypes = []any{ (Error_ErrorLevel)(0), // 0: xyz.block.ftl.v1.language.Error.ErrorLevel (Error_ErrorType)(0), // 1: xyz.block.ftl.v1.language.Error.ErrorType - (LogMessage_LogLevel)(0), // 2: xyz.block.ftl.v1.language.LogMessage.LogLevel - (*ModuleConfig)(nil), // 3: xyz.block.ftl.v1.language.ModuleConfig - (*ProjectConfig)(nil), // 4: xyz.block.ftl.v1.language.ProjectConfig - (*GetCreateModuleFlagsRequest)(nil), // 5: xyz.block.ftl.v1.language.GetCreateModuleFlagsRequest - (*GetCreateModuleFlagsResponse)(nil), // 6: xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse - (*CreateModuleRequest)(nil), // 7: xyz.block.ftl.v1.language.CreateModuleRequest - (*CreateModuleResponse)(nil), // 8: xyz.block.ftl.v1.language.CreateModuleResponse - (*ModuleConfigDefaultsRequest)(nil), // 9: xyz.block.ftl.v1.language.ModuleConfigDefaultsRequest - (*ModuleConfigDefaultsResponse)(nil), // 10: xyz.block.ftl.v1.language.ModuleConfigDefaultsResponse - (*DependenciesRequest)(nil), // 11: xyz.block.ftl.v1.language.DependenciesRequest - (*DependenciesResponse)(nil), // 12: xyz.block.ftl.v1.language.DependenciesResponse - (*BuildContext)(nil), // 13: xyz.block.ftl.v1.language.BuildContext - (*BuildContextUpdatedRequest)(nil), // 14: xyz.block.ftl.v1.language.BuildContextUpdatedRequest - (*BuildContextUpdatedResponse)(nil), // 15: xyz.block.ftl.v1.language.BuildContextUpdatedResponse - (*Error)(nil), // 16: xyz.block.ftl.v1.language.Error - (*Position)(nil), // 17: xyz.block.ftl.v1.language.Position - (*ErrorList)(nil), // 18: xyz.block.ftl.v1.language.ErrorList - (*BuildRequest)(nil), // 19: xyz.block.ftl.v1.language.BuildRequest - (*AutoRebuildStarted)(nil), // 20: xyz.block.ftl.v1.language.AutoRebuildStarted - (*BuildSuccess)(nil), // 21: xyz.block.ftl.v1.language.BuildSuccess - (*BuildFailure)(nil), // 22: xyz.block.ftl.v1.language.BuildFailure - (*LogMessage)(nil), // 23: xyz.block.ftl.v1.language.LogMessage - (*BuildEvent)(nil), // 24: xyz.block.ftl.v1.language.BuildEvent - (*GenerateStubsRequest)(nil), // 25: xyz.block.ftl.v1.language.GenerateStubsRequest - (*GenerateStubsResponse)(nil), // 26: xyz.block.ftl.v1.language.GenerateStubsResponse - (*SyncStubReferencesRequest)(nil), // 27: xyz.block.ftl.v1.language.SyncStubReferencesRequest - (*SyncStubReferencesResponse)(nil), // 28: xyz.block.ftl.v1.language.SyncStubReferencesResponse - (*GetCreateModuleFlagsResponse_Flag)(nil), // 29: xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse.Flag - (*structpb.Struct)(nil), // 30: google.protobuf.Struct - (*schema.Schema)(nil), // 31: xyz.block.ftl.v1.schema.Schema - (*schema.Module)(nil), // 32: xyz.block.ftl.v1.schema.Module - (*v1.PingRequest)(nil), // 33: xyz.block.ftl.v1.PingRequest - (*v1.PingResponse)(nil), // 34: xyz.block.ftl.v1.PingResponse + (*ModuleConfig)(nil), // 2: xyz.block.ftl.v1.language.ModuleConfig + (*ProjectConfig)(nil), // 3: xyz.block.ftl.v1.language.ProjectConfig + (*GetCreateModuleFlagsRequest)(nil), // 4: xyz.block.ftl.v1.language.GetCreateModuleFlagsRequest + (*GetCreateModuleFlagsResponse)(nil), // 5: xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse + (*CreateModuleRequest)(nil), // 6: xyz.block.ftl.v1.language.CreateModuleRequest + (*CreateModuleResponse)(nil), // 7: xyz.block.ftl.v1.language.CreateModuleResponse + (*ModuleConfigDefaultsRequest)(nil), // 8: xyz.block.ftl.v1.language.ModuleConfigDefaultsRequest + (*ModuleConfigDefaultsResponse)(nil), // 9: xyz.block.ftl.v1.language.ModuleConfigDefaultsResponse + (*DependenciesRequest)(nil), // 10: xyz.block.ftl.v1.language.DependenciesRequest + (*DependenciesResponse)(nil), // 11: xyz.block.ftl.v1.language.DependenciesResponse + (*BuildContext)(nil), // 12: xyz.block.ftl.v1.language.BuildContext + (*BuildContextUpdatedRequest)(nil), // 13: xyz.block.ftl.v1.language.BuildContextUpdatedRequest + (*BuildContextUpdatedResponse)(nil), // 14: xyz.block.ftl.v1.language.BuildContextUpdatedResponse + (*Error)(nil), // 15: xyz.block.ftl.v1.language.Error + (*Position)(nil), // 16: xyz.block.ftl.v1.language.Position + (*ErrorList)(nil), // 17: xyz.block.ftl.v1.language.ErrorList + (*BuildRequest)(nil), // 18: xyz.block.ftl.v1.language.BuildRequest + (*AutoRebuildStarted)(nil), // 19: xyz.block.ftl.v1.language.AutoRebuildStarted + (*BuildSuccess)(nil), // 20: xyz.block.ftl.v1.language.BuildSuccess + (*BuildFailure)(nil), // 21: xyz.block.ftl.v1.language.BuildFailure + (*BuildEvent)(nil), // 22: xyz.block.ftl.v1.language.BuildEvent + (*GenerateStubsRequest)(nil), // 23: xyz.block.ftl.v1.language.GenerateStubsRequest + (*GenerateStubsResponse)(nil), // 24: xyz.block.ftl.v1.language.GenerateStubsResponse + (*SyncStubReferencesRequest)(nil), // 25: xyz.block.ftl.v1.language.SyncStubReferencesRequest + (*SyncStubReferencesResponse)(nil), // 26: xyz.block.ftl.v1.language.SyncStubReferencesResponse + (*GetCreateModuleFlagsResponse_Flag)(nil), // 27: xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse.Flag + (*structpb.Struct)(nil), // 28: google.protobuf.Struct + (*schema.Schema)(nil), // 29: xyz.block.ftl.v1.schema.Schema + (*schema.Module)(nil), // 30: xyz.block.ftl.v1.schema.Module + (*v1.PingRequest)(nil), // 31: xyz.block.ftl.v1.PingRequest + (*v1.PingResponse)(nil), // 32: xyz.block.ftl.v1.PingResponse } var file_xyz_block_ftl_v1_language_language_proto_depIdxs = []int32{ - 30, // 0: xyz.block.ftl.v1.language.ModuleConfig.language_config:type_name -> google.protobuf.Struct - 29, // 1: xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse.flags:type_name -> xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse.Flag - 4, // 2: xyz.block.ftl.v1.language.CreateModuleRequest.project_config:type_name -> xyz.block.ftl.v1.language.ProjectConfig - 30, // 3: xyz.block.ftl.v1.language.CreateModuleRequest.Flags:type_name -> google.protobuf.Struct - 30, // 4: xyz.block.ftl.v1.language.ModuleConfigDefaultsResponse.language_config:type_name -> google.protobuf.Struct - 3, // 5: xyz.block.ftl.v1.language.DependenciesRequest.module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig - 3, // 6: xyz.block.ftl.v1.language.BuildContext.module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig - 31, // 7: xyz.block.ftl.v1.language.BuildContext.schema:type_name -> xyz.block.ftl.v1.schema.Schema - 13, // 8: xyz.block.ftl.v1.language.BuildContextUpdatedRequest.buildContext:type_name -> xyz.block.ftl.v1.language.BuildContext + 28, // 0: xyz.block.ftl.v1.language.ModuleConfig.language_config:type_name -> google.protobuf.Struct + 27, // 1: xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse.flags:type_name -> xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse.Flag + 3, // 2: xyz.block.ftl.v1.language.CreateModuleRequest.project_config:type_name -> xyz.block.ftl.v1.language.ProjectConfig + 28, // 3: xyz.block.ftl.v1.language.CreateModuleRequest.Flags:type_name -> google.protobuf.Struct + 28, // 4: xyz.block.ftl.v1.language.ModuleConfigDefaultsResponse.language_config:type_name -> google.protobuf.Struct + 2, // 5: xyz.block.ftl.v1.language.DependenciesRequest.module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig + 2, // 6: xyz.block.ftl.v1.language.BuildContext.module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig + 29, // 7: xyz.block.ftl.v1.language.BuildContext.schema:type_name -> xyz.block.ftl.v1.schema.Schema + 12, // 8: xyz.block.ftl.v1.language.BuildContextUpdatedRequest.buildContext:type_name -> xyz.block.ftl.v1.language.BuildContext 0, // 9: xyz.block.ftl.v1.language.Error.level:type_name -> xyz.block.ftl.v1.language.Error.ErrorLevel - 17, // 10: xyz.block.ftl.v1.language.Error.pos:type_name -> xyz.block.ftl.v1.language.Position + 16, // 10: xyz.block.ftl.v1.language.Error.pos:type_name -> xyz.block.ftl.v1.language.Position 1, // 11: xyz.block.ftl.v1.language.Error.type:type_name -> xyz.block.ftl.v1.language.Error.ErrorType - 16, // 12: xyz.block.ftl.v1.language.ErrorList.errors:type_name -> xyz.block.ftl.v1.language.Error - 13, // 13: xyz.block.ftl.v1.language.BuildRequest.build_context:type_name -> xyz.block.ftl.v1.language.BuildContext - 32, // 14: xyz.block.ftl.v1.language.BuildSuccess.module:type_name -> xyz.block.ftl.v1.schema.Module - 18, // 15: xyz.block.ftl.v1.language.BuildSuccess.errors:type_name -> xyz.block.ftl.v1.language.ErrorList - 18, // 16: xyz.block.ftl.v1.language.BuildFailure.errors:type_name -> xyz.block.ftl.v1.language.ErrorList - 2, // 17: xyz.block.ftl.v1.language.LogMessage.level:type_name -> xyz.block.ftl.v1.language.LogMessage.LogLevel - 20, // 18: xyz.block.ftl.v1.language.BuildEvent.auto_rebuild_started:type_name -> xyz.block.ftl.v1.language.AutoRebuildStarted - 21, // 19: xyz.block.ftl.v1.language.BuildEvent.build_success:type_name -> xyz.block.ftl.v1.language.BuildSuccess - 22, // 20: xyz.block.ftl.v1.language.BuildEvent.build_failure:type_name -> xyz.block.ftl.v1.language.BuildFailure - 23, // 21: xyz.block.ftl.v1.language.BuildEvent.log_message:type_name -> xyz.block.ftl.v1.language.LogMessage - 32, // 22: xyz.block.ftl.v1.language.GenerateStubsRequest.module:type_name -> xyz.block.ftl.v1.schema.Module - 3, // 23: xyz.block.ftl.v1.language.GenerateStubsRequest.module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig - 3, // 24: xyz.block.ftl.v1.language.GenerateStubsRequest.native_module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig - 3, // 25: xyz.block.ftl.v1.language.SyncStubReferencesRequest.module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig - 33, // 26: xyz.block.ftl.v1.language.LanguageService.Ping:input_type -> xyz.block.ftl.v1.PingRequest - 5, // 27: xyz.block.ftl.v1.language.LanguageService.GetCreateModuleFlags:input_type -> xyz.block.ftl.v1.language.GetCreateModuleFlagsRequest - 7, // 28: xyz.block.ftl.v1.language.LanguageService.CreateModule:input_type -> xyz.block.ftl.v1.language.CreateModuleRequest - 9, // 29: xyz.block.ftl.v1.language.LanguageService.ModuleConfigDefaults:input_type -> xyz.block.ftl.v1.language.ModuleConfigDefaultsRequest - 11, // 30: xyz.block.ftl.v1.language.LanguageService.GetDependencies:input_type -> xyz.block.ftl.v1.language.DependenciesRequest - 19, // 31: xyz.block.ftl.v1.language.LanguageService.Build:input_type -> xyz.block.ftl.v1.language.BuildRequest - 14, // 32: xyz.block.ftl.v1.language.LanguageService.BuildContextUpdated:input_type -> xyz.block.ftl.v1.language.BuildContextUpdatedRequest - 25, // 33: xyz.block.ftl.v1.language.LanguageService.GenerateStubs:input_type -> xyz.block.ftl.v1.language.GenerateStubsRequest - 27, // 34: xyz.block.ftl.v1.language.LanguageService.SyncStubReferences:input_type -> xyz.block.ftl.v1.language.SyncStubReferencesRequest - 34, // 35: xyz.block.ftl.v1.language.LanguageService.Ping:output_type -> xyz.block.ftl.v1.PingResponse - 6, // 36: xyz.block.ftl.v1.language.LanguageService.GetCreateModuleFlags:output_type -> xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse - 8, // 37: xyz.block.ftl.v1.language.LanguageService.CreateModule:output_type -> xyz.block.ftl.v1.language.CreateModuleResponse - 10, // 38: xyz.block.ftl.v1.language.LanguageService.ModuleConfigDefaults:output_type -> xyz.block.ftl.v1.language.ModuleConfigDefaultsResponse - 12, // 39: xyz.block.ftl.v1.language.LanguageService.GetDependencies:output_type -> xyz.block.ftl.v1.language.DependenciesResponse - 24, // 40: xyz.block.ftl.v1.language.LanguageService.Build:output_type -> xyz.block.ftl.v1.language.BuildEvent - 15, // 41: xyz.block.ftl.v1.language.LanguageService.BuildContextUpdated:output_type -> xyz.block.ftl.v1.language.BuildContextUpdatedResponse - 26, // 42: xyz.block.ftl.v1.language.LanguageService.GenerateStubs:output_type -> xyz.block.ftl.v1.language.GenerateStubsResponse - 28, // 43: xyz.block.ftl.v1.language.LanguageService.SyncStubReferences:output_type -> xyz.block.ftl.v1.language.SyncStubReferencesResponse - 35, // [35:44] is the sub-list for method output_type - 26, // [26:35] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name + 15, // 12: xyz.block.ftl.v1.language.ErrorList.errors:type_name -> xyz.block.ftl.v1.language.Error + 12, // 13: xyz.block.ftl.v1.language.BuildRequest.build_context:type_name -> xyz.block.ftl.v1.language.BuildContext + 30, // 14: xyz.block.ftl.v1.language.BuildSuccess.module:type_name -> xyz.block.ftl.v1.schema.Module + 17, // 15: xyz.block.ftl.v1.language.BuildSuccess.errors:type_name -> xyz.block.ftl.v1.language.ErrorList + 17, // 16: xyz.block.ftl.v1.language.BuildFailure.errors:type_name -> xyz.block.ftl.v1.language.ErrorList + 19, // 17: xyz.block.ftl.v1.language.BuildEvent.auto_rebuild_started:type_name -> xyz.block.ftl.v1.language.AutoRebuildStarted + 20, // 18: xyz.block.ftl.v1.language.BuildEvent.build_success:type_name -> xyz.block.ftl.v1.language.BuildSuccess + 21, // 19: xyz.block.ftl.v1.language.BuildEvent.build_failure:type_name -> xyz.block.ftl.v1.language.BuildFailure + 30, // 20: xyz.block.ftl.v1.language.GenerateStubsRequest.module:type_name -> xyz.block.ftl.v1.schema.Module + 2, // 21: xyz.block.ftl.v1.language.GenerateStubsRequest.module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig + 2, // 22: xyz.block.ftl.v1.language.GenerateStubsRequest.native_module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig + 2, // 23: xyz.block.ftl.v1.language.SyncStubReferencesRequest.module_config:type_name -> xyz.block.ftl.v1.language.ModuleConfig + 31, // 24: xyz.block.ftl.v1.language.LanguageService.Ping:input_type -> xyz.block.ftl.v1.PingRequest + 4, // 25: xyz.block.ftl.v1.language.LanguageService.GetCreateModuleFlags:input_type -> xyz.block.ftl.v1.language.GetCreateModuleFlagsRequest + 6, // 26: xyz.block.ftl.v1.language.LanguageService.CreateModule:input_type -> xyz.block.ftl.v1.language.CreateModuleRequest + 8, // 27: xyz.block.ftl.v1.language.LanguageService.ModuleConfigDefaults:input_type -> xyz.block.ftl.v1.language.ModuleConfigDefaultsRequest + 10, // 28: xyz.block.ftl.v1.language.LanguageService.GetDependencies:input_type -> xyz.block.ftl.v1.language.DependenciesRequest + 18, // 29: xyz.block.ftl.v1.language.LanguageService.Build:input_type -> xyz.block.ftl.v1.language.BuildRequest + 13, // 30: xyz.block.ftl.v1.language.LanguageService.BuildContextUpdated:input_type -> xyz.block.ftl.v1.language.BuildContextUpdatedRequest + 23, // 31: xyz.block.ftl.v1.language.LanguageService.GenerateStubs:input_type -> xyz.block.ftl.v1.language.GenerateStubsRequest + 25, // 32: xyz.block.ftl.v1.language.LanguageService.SyncStubReferences:input_type -> xyz.block.ftl.v1.language.SyncStubReferencesRequest + 32, // 33: xyz.block.ftl.v1.language.LanguageService.Ping:output_type -> xyz.block.ftl.v1.PingResponse + 5, // 34: xyz.block.ftl.v1.language.LanguageService.GetCreateModuleFlags:output_type -> xyz.block.ftl.v1.language.GetCreateModuleFlagsResponse + 7, // 35: xyz.block.ftl.v1.language.LanguageService.CreateModule:output_type -> xyz.block.ftl.v1.language.CreateModuleResponse + 9, // 36: xyz.block.ftl.v1.language.LanguageService.ModuleConfigDefaults:output_type -> xyz.block.ftl.v1.language.ModuleConfigDefaultsResponse + 11, // 37: xyz.block.ftl.v1.language.LanguageService.GetDependencies:output_type -> xyz.block.ftl.v1.language.DependenciesResponse + 22, // 38: xyz.block.ftl.v1.language.LanguageService.Build:output_type -> xyz.block.ftl.v1.language.BuildEvent + 14, // 39: xyz.block.ftl.v1.language.LanguageService.BuildContextUpdated:output_type -> xyz.block.ftl.v1.language.BuildContextUpdatedResponse + 24, // 40: xyz.block.ftl.v1.language.LanguageService.GenerateStubs:output_type -> xyz.block.ftl.v1.language.GenerateStubsResponse + 26, // 41: xyz.block.ftl.v1.language.LanguageService.SyncStubReferences:output_type -> xyz.block.ftl.v1.language.SyncStubReferencesResponse + 33, // [33:42] is the sub-list for method output_type + 24, // [24:33] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_xyz_block_ftl_v1_language_language_proto_init() } @@ -2360,21 +2221,20 @@ func file_xyz_block_ftl_v1_language_language_proto_init() { file_xyz_block_ftl_v1_language_language_proto_msgTypes[0].OneofWrappers = []any{} file_xyz_block_ftl_v1_language_language_proto_msgTypes[7].OneofWrappers = []any{} file_xyz_block_ftl_v1_language_language_proto_msgTypes[13].OneofWrappers = []any{} - file_xyz_block_ftl_v1_language_language_proto_msgTypes[21].OneofWrappers = []any{ + file_xyz_block_ftl_v1_language_language_proto_msgTypes[20].OneofWrappers = []any{ (*BuildEvent_AutoRebuildStarted)(nil), (*BuildEvent_BuildSuccess)(nil), (*BuildEvent_BuildFailure)(nil), - (*BuildEvent_LogMessage)(nil), } - file_xyz_block_ftl_v1_language_language_proto_msgTypes[22].OneofWrappers = []any{} - file_xyz_block_ftl_v1_language_language_proto_msgTypes[26].OneofWrappers = []any{} + file_xyz_block_ftl_v1_language_language_proto_msgTypes[21].OneofWrappers = []any{} + file_xyz_block_ftl_v1_language_language_proto_msgTypes[25].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_xyz_block_ftl_v1_language_language_proto_rawDesc, - NumEnums: 3, - NumMessages: 27, + NumEnums: 2, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, diff --git a/backend/protos/xyz/block/ftl/v1/language/language.proto b/backend/protos/xyz/block/ftl/v1/language/language.proto index 4d9e121b57..087e0a1d76 100644 --- a/backend/protos/xyz/block/ftl/v1/language/language.proto +++ b/backend/protos/xyz/block/ftl/v1/language/language.proto @@ -233,26 +233,12 @@ message BuildFailure { bool invalidate_dependencies = 4; } -// Log message from the language service. -message LogMessage { - enum LogLevel { - DEBUG = 0; - INFO = 1; - WARN = 2; - ERROR = 3; - } - - string message = 1; - LogLevel level = 2; -} - // Every type of message that can be streamed from the language plugin for a build. message BuildEvent { oneof event { AutoRebuildStarted auto_rebuild_started = 2; BuildSuccess build_success = 3; BuildFailure build_failure = 4; - LogMessage log_message = 5; } } @@ -320,6 +306,9 @@ service LanguageService { // // Each time this call is made, the Build call must send back a corresponding BuildSuccess or BuildFailure // event with the updated build context id with "is_automatic_rebuild" as false. + // + // If the plugin will not be able to return a BuildSuccess or BuildFailure, such as when there is no active + // build stream, it must fail the BuildContextUpdated call. rpc BuildContextUpdated(BuildContextUpdatedRequest) returns (BuildContextUpdatedResponse); // Generate stubs for a module. diff --git a/backend/protos/xyz/block/ftl/v1/language/languagepbconnect/language.connect.go b/backend/protos/xyz/block/ftl/v1/language/languagepbconnect/language.connect.go index eb1af1073d..8c43b030c3 100644 --- a/backend/protos/xyz/block/ftl/v1/language/languagepbconnect/language.connect.go +++ b/backend/protos/xyz/block/ftl/v1/language/languagepbconnect/language.connect.go @@ -89,6 +89,9 @@ type LanguageServiceClient interface { // // Each time this call is made, the Build call must send back a corresponding BuildSuccess or BuildFailure // event with the updated build context id with "is_automatic_rebuild" as false. + // + // If the plugin will not be able to return a BuildSuccess or BuildFailure, such as when there is no active + // build stream, it must fail the BuildContextUpdated call. BuildContextUpdated(context.Context, *connect.Request[language.BuildContextUpdatedRequest]) (*connect.Response[language.BuildContextUpdatedResponse], error) // Generate stubs for a module. // @@ -254,6 +257,9 @@ type LanguageServiceHandler interface { // // Each time this call is made, the Build call must send back a corresponding BuildSuccess or BuildFailure // event with the updated build context id with "is_automatic_rebuild" as false. + // + // If the plugin will not be able to return a BuildSuccess or BuildFailure, such as when there is no active + // build stream, it must fail the BuildContextUpdated call. BuildContextUpdated(context.Context, *connect.Request[language.BuildContextUpdatedRequest]) (*connect.Response[language.BuildContextUpdatedResponse], error) // Generate stubs for a module. // diff --git a/backend/protos/xyz/block/ftl/v1/language/mixins.go b/backend/protos/xyz/block/ftl/v1/language/mixins.go index 7c4285064d..e7462f488b 100644 --- a/backend/protos/xyz/block/ftl/v1/language/mixins.go +++ b/backend/protos/xyz/block/ftl/v1/language/mixins.go @@ -7,7 +7,6 @@ import ( structpb "google.golang.org/protobuf/types/known/structpb" "github.com/TBD54566975/ftl/internal/builderrors" - "github.com/TBD54566975/ftl/internal/log" "github.com/TBD54566975/ftl/internal/moduleconfig" "github.com/TBD54566975/ftl/internal/projectconfig" "github.com/TBD54566975/ftl/internal/slices" @@ -86,36 +85,6 @@ func PosFromProto(pos *Position) optional.Option[builderrors.Position] { }) } -func LogLevelFromProto(level LogMessage_LogLevel) log.Level { - switch level { - case LogMessage_INFO: - return log.Info - case LogMessage_DEBUG: - return log.Debug - case LogMessage_WARN: - return log.Warn - case LogMessage_ERROR: - return log.Error - default: - panic(fmt.Sprintf("unhandled log level %v", level)) - } -} - -func LogLevelToProto(level log.Level) LogMessage_LogLevel { - switch level { - case log.Info: - return LogMessage_INFO - case log.Debug: - return LogMessage_DEBUG - case log.Warn: - return LogMessage_WARN - case log.Error: - return LogMessage_ERROR - default: - panic(fmt.Sprintf("unhandled log level %v", level)) - } -} - // ModuleConfigToProto converts a moduleconfig.AbsModuleConfig to a protobuf ModuleConfig. // // Absolute configs are used because relative paths may change resolve differently between parties. diff --git a/common/plugin/serve.go b/common/plugin/serve.go index cb3dedfc5b..70cefa6422 100644 --- a/common/plugin/serve.go +++ b/common/plugin/serve.go @@ -112,7 +112,7 @@ func Start[Impl any, Iface any, Config any]( ctx, cancel := context.WithCancel(ctx) defer cancel() - // Configure logging to JSON on stdout. This will be read by the parent process. + // Configure logging to JSON on stderr. This will be read by the parent process. logConfig := cli.LogConfig logConfig.JSON = true logger := log.Configure(os.Stderr, logConfig) diff --git a/frontend/console/src/protos/xyz/block/ftl/v1/language/language_connect.ts b/frontend/console/src/protos/xyz/block/ftl/v1/language/language_connect.ts index e9c2e15394..f30a31deba 100644 --- a/frontend/console/src/protos/xyz/block/ftl/v1/language/language_connect.ts +++ b/frontend/console/src/protos/xyz/block/ftl/v1/language/language_connect.ts @@ -98,6 +98,9 @@ export const LanguageService = { * Each time this call is made, the Build call must send back a corresponding BuildSuccess or BuildFailure * event with the updated build context id with "is_automatic_rebuild" as false. * + * If the plugin will not be able to return a BuildSuccess or BuildFailure, such as when there is no active + * build stream, it must fail the BuildContextUpdated call. + * * @generated from rpc xyz.block.ftl.v1.language.LanguageService.BuildContextUpdated */ buildContextUpdated: { diff --git a/frontend/console/src/protos/xyz/block/ftl/v1/language/language_pb.ts b/frontend/console/src/protos/xyz/block/ftl/v1/language/language_pb.ts index b9d19488b0..bb7a822c44 100644 --- a/frontend/console/src/protos/xyz/block/ftl/v1/language/language_pb.ts +++ b/frontend/console/src/protos/xyz/block/ftl/v1/language/language_pb.ts @@ -1204,83 +1204,6 @@ export class BuildFailure extends Message { } } -/** - * Log message from the language service. - * - * @generated from message xyz.block.ftl.v1.language.LogMessage - */ -export class LogMessage extends Message { - /** - * @generated from field: string message = 1; - */ - message = ""; - - /** - * @generated from field: xyz.block.ftl.v1.language.LogMessage.LogLevel level = 2; - */ - level = LogMessage_LogLevel.DEBUG; - - constructor(data?: PartialMessage) { - super(); - proto3.util.initPartial(data, this); - } - - static readonly runtime: typeof proto3 = proto3; - static readonly typeName = "xyz.block.ftl.v1.language.LogMessage"; - static readonly fields: FieldList = proto3.util.newFieldList(() => [ - { no: 1, name: "message", kind: "scalar", T: 9 /* ScalarType.STRING */ }, - { no: 2, name: "level", kind: "enum", T: proto3.getEnumType(LogMessage_LogLevel) }, - ]); - - static fromBinary(bytes: Uint8Array, options?: Partial): LogMessage { - return new LogMessage().fromBinary(bytes, options); - } - - static fromJson(jsonValue: JsonValue, options?: Partial): LogMessage { - return new LogMessage().fromJson(jsonValue, options); - } - - static fromJsonString(jsonString: string, options?: Partial): LogMessage { - return new LogMessage().fromJsonString(jsonString, options); - } - - static equals(a: LogMessage | PlainMessage | undefined, b: LogMessage | PlainMessage | undefined): boolean { - return proto3.util.equals(LogMessage, a, b); - } -} - -/** - * @generated from enum xyz.block.ftl.v1.language.LogMessage.LogLevel - */ -export enum LogMessage_LogLevel { - /** - * @generated from enum value: DEBUG = 0; - */ - DEBUG = 0, - - /** - * @generated from enum value: INFO = 1; - */ - INFO = 1, - - /** - * @generated from enum value: WARN = 2; - */ - WARN = 2, - - /** - * @generated from enum value: ERROR = 3; - */ - ERROR = 3, -} -// Retrieve enum metadata with: proto3.getEnumType(LogMessage_LogLevel) -proto3.util.setEnumType(LogMessage_LogLevel, "xyz.block.ftl.v1.language.LogMessage.LogLevel", [ - { no: 0, name: "DEBUG" }, - { no: 1, name: "INFO" }, - { no: 2, name: "WARN" }, - { no: 3, name: "ERROR" }, -]); - /** * Every type of message that can be streamed from the language plugin for a build. * @@ -1308,12 +1231,6 @@ export class BuildEvent extends Message { */ value: BuildFailure; case: "buildFailure"; - } | { - /** - * @generated from field: xyz.block.ftl.v1.language.LogMessage log_message = 5; - */ - value: LogMessage; - case: "logMessage"; } | { case: undefined; value?: undefined } = { case: undefined }; constructor(data?: PartialMessage) { @@ -1327,7 +1244,6 @@ export class BuildEvent extends Message { { no: 2, name: "auto_rebuild_started", kind: "message", T: AutoRebuildStarted, oneof: "event" }, { no: 3, name: "build_success", kind: "message", T: BuildSuccess, oneof: "event" }, { no: 4, name: "build_failure", kind: "message", T: BuildFailure, oneof: "event" }, - { no: 5, name: "log_message", kind: "message", T: LogMessage, oneof: "event" }, ]); static fromBinary(bytes: Uint8Array, options?: Partial): BuildEvent { diff --git a/internal/buildengine/languageplugin/external_integration_test.go b/internal/buildengine/languageplugin/external_integration_test.go index 8d67310832..3246c9fe82 100644 --- a/internal/buildengine/languageplugin/external_integration_test.go +++ b/internal/buildengine/languageplugin/external_integration_test.go @@ -421,8 +421,6 @@ func waitForAutoRebuildToStart(contextId string) in.Action { } else { logger.Warnf("ignoring build failure for unexpected context %q while waiting for auto rebuild started event for %q", event.BuildFailure.ContextId, contextId) } - case *langpb.BuildEvent_LogMessage: - logger.Debugf("plugin: %s", event.LogMessage.Message) } } } @@ -484,9 +482,6 @@ func waitForBuildToEnd(success BuildResultType, contextId string, automaticRebui additionalChecks(t, ic, e) } return - - case *langpb.BuildEvent_LogMessage: - logger.Infof("plugin log: %v", event.LogMessage.Message) } } } @@ -495,7 +490,6 @@ func waitForBuildToEnd(success BuildResultType, contextId string, automaticRebui func checkForNoEvents(duration time.Duration) in.Action { return func(t testing.TB, ic in.TestContext) { in.Infof("Checking for no events for %v", duration) - logger := log.FromContext(ic.Context) for { select { case result := <-buildChan: @@ -508,9 +502,6 @@ func checkForNoEvents(duration time.Duration) in.Action { panic(fmt.Sprintf("build success event when expecting no events: %v", event)) case *langpb.BuildEvent_BuildFailure: panic(fmt.Sprintf("build failure event when expecting no events: %v", event)) - case *langpb.BuildEvent_LogMessage: - logger.Infof("plugin log: %v", event.LogMessage.Message) - continue } case <-time.After(duration): return diff --git a/internal/buildengine/languageplugin/external_plugin.go b/internal/buildengine/languageplugin/external_plugin.go index 9d0a4dc9e5..d505749e3d 100644 --- a/internal/buildengine/languageplugin/external_plugin.go +++ b/internal/buildengine/languageplugin/external_plugin.go @@ -366,9 +366,7 @@ func (p *externalPlugin) run(ctx context.Context) { continue } - switch event := e.Event.(type) { - case *langpb.BuildEvent_LogMessage: - logger.Logf(langpb.LogLevelFromProto(event.LogMessage.Level), "%s", event.LogMessage.Message) + switch e.Event.(type) { case *langpb.BuildEvent_AutoRebuildStarted: if _, ok := activeBuildCmd.Get(); ok { logger.Debugf("ignoring automatic rebuild started during explicit build") diff --git a/python-runtime/python-plugin/log_to_stream.go b/python-runtime/python-plugin/log_to_stream.go deleted file mode 100644 index 19309f5f9b..0000000000 --- a/python-runtime/python-plugin/log_to_stream.go +++ /dev/null @@ -1,35 +0,0 @@ -package pythonplugin - -import ( - "fmt" - - "connectrpc.com/connect" - - langpb "github.com/TBD54566975/ftl/backend/protos/xyz/block/ftl/v1/language" - "github.com/TBD54566975/ftl/internal/log" -) - -type streamLogSink struct { - stream *connect.ServerStream[langpb.BuildEvent] -} - -var _ log.Sink = streamLogSink{} - -func newLoggerForStream(level log.Level, stream *connect.ServerStream[langpb.BuildEvent]) *log.Logger { - return log.New(level, streamLogSink{stream: stream}) -} - -func (s streamLogSink) Log(e log.Entry) error { - err := s.stream.Send(&langpb.BuildEvent{ - Event: &langpb.BuildEvent_LogMessage{ - LogMessage: &langpb.LogMessage{ - Level: langpb.LogLevelToProto(e.Level), - Message: e.Message, - }, - }, - }) - if err != nil { - return fmt.Errorf("could not stream log to FTL: %w", err) - } - return nil -} diff --git a/python-runtime/python-plugin/service.go b/python-runtime/python-plugin/service.go index 737e2f1270..1826fba47c 100644 --- a/python-runtime/python-plugin/service.go +++ b/python-runtime/python-plugin/service.go @@ -105,8 +105,6 @@ func (s *Service) Build(ctx context.Context, req *connect.Request[langpb.BuildRe logger := log.FromContext(ctx) logger.Infof("Do python build") - ctx = log.ContextWithLogger(ctx, newLoggerForStream(log.Debug, stream)) - buildCtx, err := buildContextFromProto(req.Msg.BuildContext) if err != nil { return err