diff --git a/app/build/v1/build.pb.go b/app/build/v1/build.pb.go index 0359b36c1..fd1cd451c 100644 --- a/app/build/v1/build.pb.go +++ b/app/build/v1/build.pb.go @@ -7,6 +7,7 @@ package v1 import ( + v1 "go.viam.com/api/app/packages/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" timestamppb "google.golang.org/protobuf/types/known/timestamppb" @@ -273,6 +274,194 @@ func (x *GetLogsRequest) GetPlatform() string { return "" } +type ReloadBuildInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // platform to build the reload module for + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` + // optional working directory. defaults to repo root + Workdir *string `protobuf:"bytes,2,opt,name=workdir,proto3,oneof" json:"workdir,omitempty"` + // org ID for the module + ModuleId string `protobuf:"bytes,3,opt,name=module_id,json=moduleId,proto3" json:"module_id,omitempty"` +} + +func (x *ReloadBuildInfo) Reset() { + *x = ReloadBuildInfo{} + mi := &file_app_build_v1_build_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReloadBuildInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReloadBuildInfo) ProtoMessage() {} + +func (x *ReloadBuildInfo) ProtoReflect() protoreflect.Message { + mi := &file_app_build_v1_build_proto_msgTypes[3] + 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 ReloadBuildInfo.ProtoReflect.Descriptor instead. +func (*ReloadBuildInfo) Descriptor() ([]byte, []int) { + return file_app_build_v1_build_proto_rawDescGZIP(), []int{3} +} + +func (x *ReloadBuildInfo) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ReloadBuildInfo) GetWorkdir() string { + if x != nil && x.Workdir != nil { + return *x.Workdir + } + return "" +} + +func (x *ReloadBuildInfo) GetModuleId() string { + if x != nil { + return x.ModuleId + } + return "" +} + +type StartReloadBuildRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to CloudBuild: + // + // *StartReloadBuildRequest_Package + // *StartReloadBuildRequest_BuildInfo + CloudBuild isStartReloadBuildRequest_CloudBuild `protobuf_oneof:"cloud_build"` +} + +func (x *StartReloadBuildRequest) Reset() { + *x = StartReloadBuildRequest{} + mi := &file_app_build_v1_build_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StartReloadBuildRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartReloadBuildRequest) ProtoMessage() {} + +func (x *StartReloadBuildRequest) ProtoReflect() protoreflect.Message { + mi := &file_app_build_v1_build_proto_msgTypes[4] + 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 StartReloadBuildRequest.ProtoReflect.Descriptor instead. +func (*StartReloadBuildRequest) Descriptor() ([]byte, []int) { + return file_app_build_v1_build_proto_rawDescGZIP(), []int{4} +} + +func (m *StartReloadBuildRequest) GetCloudBuild() isStartReloadBuildRequest_CloudBuild { + if m != nil { + return m.CloudBuild + } + return nil +} + +func (x *StartReloadBuildRequest) GetPackage() *v1.CreatePackageRequest { + if x, ok := x.GetCloudBuild().(*StartReloadBuildRequest_Package); ok { + return x.Package + } + return nil +} + +func (x *StartReloadBuildRequest) GetBuildInfo() *ReloadBuildInfo { + if x, ok := x.GetCloudBuild().(*StartReloadBuildRequest_BuildInfo); ok { + return x.BuildInfo + } + return nil +} + +type isStartReloadBuildRequest_CloudBuild interface { + isStartReloadBuildRequest_CloudBuild() +} + +type StartReloadBuildRequest_Package struct { + Package *v1.CreatePackageRequest `protobuf:"bytes,1,opt,name=package,proto3,oneof"` +} + +type StartReloadBuildRequest_BuildInfo struct { + BuildInfo *ReloadBuildInfo `protobuf:"bytes,2,opt,name=build_info,json=buildInfo,proto3,oneof"` +} + +func (*StartReloadBuildRequest_Package) isStartReloadBuildRequest_CloudBuild() {} + +func (*StartReloadBuildRequest_BuildInfo) isStartReloadBuildRequest_CloudBuild() {} + +type StartReloadBuildResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BuildId string `protobuf:"bytes,1,opt,name=build_id,json=buildId,proto3" json:"build_id,omitempty"` +} + +func (x *StartReloadBuildResponse) Reset() { + *x = StartReloadBuildResponse{} + mi := &file_app_build_v1_build_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StartReloadBuildResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartReloadBuildResponse) ProtoMessage() {} + +func (x *StartReloadBuildResponse) ProtoReflect() protoreflect.Message { + mi := &file_app_build_v1_build_proto_msgTypes[5] + 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 StartReloadBuildResponse.ProtoReflect.Descriptor instead. +func (*StartReloadBuildResponse) Descriptor() ([]byte, []int) { + return file_app_build_v1_build_proto_rawDescGZIP(), []int{5} +} + +func (x *StartReloadBuildResponse) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + // GetLogsResponse is a streaming endpoint that may have multiple messages that belong // to the same build_step if there are too many bytes to fit into a single gRPC // response. @@ -288,7 +477,7 @@ type GetLogsResponse struct { func (x *GetLogsResponse) Reset() { *x = GetLogsResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[3] + mi := &file_app_build_v1_build_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -300,7 +489,7 @@ func (x *GetLogsResponse) String() string { func (*GetLogsResponse) ProtoMessage() {} func (x *GetLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[3] + mi := &file_app_build_v1_build_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -313,7 +502,7 @@ func (x *GetLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetLogsResponse.ProtoReflect.Descriptor instead. func (*GetLogsResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{3} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{6} } func (x *GetLogsResponse) GetBuildStep() string { @@ -345,7 +534,7 @@ type JobInfo struct { func (x *JobInfo) Reset() { *x = JobInfo{} - mi := &file_app_build_v1_build_proto_msgTypes[4] + mi := &file_app_build_v1_build_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -357,7 +546,7 @@ func (x *JobInfo) String() string { func (*JobInfo) ProtoMessage() {} func (x *JobInfo) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[4] + mi := &file_app_build_v1_build_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -370,7 +559,7 @@ func (x *JobInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use JobInfo.ProtoReflect.Descriptor instead. func (*JobInfo) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{4} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{7} } func (x *JobInfo) GetBuildId() string { @@ -432,7 +621,7 @@ type ListJobsRequest struct { func (x *ListJobsRequest) Reset() { *x = ListJobsRequest{} - mi := &file_app_build_v1_build_proto_msgTypes[5] + mi := &file_app_build_v1_build_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -444,7 +633,7 @@ func (x *ListJobsRequest) String() string { func (*ListJobsRequest) ProtoMessage() {} func (x *ListJobsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[5] + mi := &file_app_build_v1_build_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -457,7 +646,7 @@ func (x *ListJobsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListJobsRequest.ProtoReflect.Descriptor instead. func (*ListJobsRequest) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{5} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{8} } func (x *ListJobsRequest) GetModuleId() string { @@ -492,7 +681,7 @@ type ListJobsResponse struct { func (x *ListJobsResponse) Reset() { *x = ListJobsResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[6] + mi := &file_app_build_v1_build_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -504,7 +693,7 @@ func (x *ListJobsResponse) String() string { func (*ListJobsResponse) ProtoMessage() {} func (x *ListJobsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[6] + mi := &file_app_build_v1_build_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -517,7 +706,7 @@ func (x *ListJobsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListJobsResponse.ProtoReflect.Descriptor instead. func (*ListJobsResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{6} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{9} } func (x *ListJobsResponse) GetJobs() []*JobInfo { @@ -549,7 +738,7 @@ type RepoLink struct { func (x *RepoLink) Reset() { *x = RepoLink{} - mi := &file_app_build_v1_build_proto_msgTypes[7] + mi := &file_app_build_v1_build_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -561,7 +750,7 @@ func (x *RepoLink) String() string { func (*RepoLink) ProtoMessage() {} func (x *RepoLink) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[7] + mi := &file_app_build_v1_build_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -574,7 +763,7 @@ func (x *RepoLink) ProtoReflect() protoreflect.Message { // Deprecated: Use RepoLink.ProtoReflect.Descriptor instead. func (*RepoLink) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{7} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{10} } func (x *RepoLink) GetOauthAppLinkId() string { @@ -629,7 +818,7 @@ type LinkRepoRequest struct { func (x *LinkRepoRequest) Reset() { *x = LinkRepoRequest{} - mi := &file_app_build_v1_build_proto_msgTypes[8] + mi := &file_app_build_v1_build_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -641,7 +830,7 @@ func (x *LinkRepoRequest) String() string { func (*LinkRepoRequest) ProtoMessage() {} func (x *LinkRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[8] + mi := &file_app_build_v1_build_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -654,7 +843,7 @@ func (x *LinkRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkRepoRequest.ProtoReflect.Descriptor instead. func (*LinkRepoRequest) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{8} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{11} } func (x *LinkRepoRequest) GetLink() *RepoLink { @@ -674,7 +863,7 @@ type LinkRepoResponse struct { func (x *LinkRepoResponse) Reset() { *x = LinkRepoResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[9] + mi := &file_app_build_v1_build_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -686,7 +875,7 @@ func (x *LinkRepoResponse) String() string { func (*LinkRepoResponse) ProtoMessage() {} func (x *LinkRepoResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[9] + mi := &file_app_build_v1_build_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -699,7 +888,7 @@ func (x *LinkRepoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkRepoResponse.ProtoReflect.Descriptor instead. func (*LinkRepoResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{9} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{12} } func (x *LinkRepoResponse) GetRepoLinkId() string { @@ -719,7 +908,7 @@ type UnlinkRepoRequest struct { func (x *UnlinkRepoRequest) Reset() { *x = UnlinkRepoRequest{} - mi := &file_app_build_v1_build_proto_msgTypes[10] + mi := &file_app_build_v1_build_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -731,7 +920,7 @@ func (x *UnlinkRepoRequest) String() string { func (*UnlinkRepoRequest) ProtoMessage() {} func (x *UnlinkRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[10] + mi := &file_app_build_v1_build_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -744,7 +933,7 @@ func (x *UnlinkRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlinkRepoRequest.ProtoReflect.Descriptor instead. func (*UnlinkRepoRequest) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{10} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{13} } func (x *UnlinkRepoRequest) GetRepoLinkId() string { @@ -762,7 +951,7 @@ type UnlinkRepoResponse struct { func (x *UnlinkRepoResponse) Reset() { *x = UnlinkRepoResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[11] + mi := &file_app_build_v1_build_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -774,7 +963,7 @@ func (x *UnlinkRepoResponse) String() string { func (*UnlinkRepoResponse) ProtoMessage() {} func (x *UnlinkRepoResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[11] + mi := &file_app_build_v1_build_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -787,7 +976,7 @@ func (x *UnlinkRepoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlinkRepoResponse.ProtoReflect.Descriptor instead. func (*UnlinkRepoResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{11} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{14} } type ListRepoLinksRequest struct { @@ -798,7 +987,7 @@ type ListRepoLinksRequest struct { func (x *ListRepoLinksRequest) Reset() { *x = ListRepoLinksRequest{} - mi := &file_app_build_v1_build_proto_msgTypes[12] + mi := &file_app_build_v1_build_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -810,7 +999,7 @@ func (x *ListRepoLinksRequest) String() string { func (*ListRepoLinksRequest) ProtoMessage() {} func (x *ListRepoLinksRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[12] + mi := &file_app_build_v1_build_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -823,7 +1012,7 @@ func (x *ListRepoLinksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRepoLinksRequest.ProtoReflect.Descriptor instead. func (*ListRepoLinksRequest) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{12} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{15} } type ListRepoLinksResponse struct { @@ -836,7 +1025,7 @@ type ListRepoLinksResponse struct { func (x *ListRepoLinksResponse) Reset() { *x = ListRepoLinksResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[13] + mi := &file_app_build_v1_build_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -848,7 +1037,7 @@ func (x *ListRepoLinksResponse) String() string { func (*ListRepoLinksResponse) ProtoMessage() {} func (x *ListRepoLinksResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[13] + mi := &file_app_build_v1_build_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -861,7 +1050,7 @@ func (x *ListRepoLinksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRepoLinksResponse.ProtoReflect.Descriptor instead. func (*ListRepoLinksResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{13} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{16} } func (x *ListRepoLinksResponse) GetLinks() []*RepoLink { @@ -879,7 +1068,7 @@ type ListAppLinksRequest struct { func (x *ListAppLinksRequest) Reset() { *x = ListAppLinksRequest{} - mi := &file_app_build_v1_build_proto_msgTypes[14] + mi := &file_app_build_v1_build_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -891,7 +1080,7 @@ func (x *ListAppLinksRequest) String() string { func (*ListAppLinksRequest) ProtoMessage() {} func (x *ListAppLinksRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[14] + mi := &file_app_build_v1_build_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -904,7 +1093,7 @@ func (x *ListAppLinksRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppLinksRequest.ProtoReflect.Descriptor instead. func (*ListAppLinksRequest) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{14} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{17} } // represents a link between viam users / orgs and an external oauth app @@ -925,7 +1114,7 @@ type AppLink struct { func (x *AppLink) Reset() { *x = AppLink{} - mi := &file_app_build_v1_build_proto_msgTypes[15] + mi := &file_app_build_v1_build_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -937,7 +1126,7 @@ func (x *AppLink) String() string { func (*AppLink) ProtoMessage() {} func (x *AppLink) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[15] + mi := &file_app_build_v1_build_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -950,7 +1139,7 @@ func (x *AppLink) ProtoReflect() protoreflect.Message { // Deprecated: Use AppLink.ProtoReflect.Descriptor instead. func (*AppLink) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{15} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{18} } func (x *AppLink) GetOauthAppLinkId() string { @@ -991,7 +1180,7 @@ type ListAppLinksResponse struct { func (x *ListAppLinksResponse) Reset() { *x = ListAppLinksResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[16] + mi := &file_app_build_v1_build_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1003,7 +1192,7 @@ func (x *ListAppLinksResponse) String() string { func (*ListAppLinksResponse) ProtoMessage() {} func (x *ListAppLinksResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[16] + mi := &file_app_build_v1_build_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1016,7 +1205,7 @@ func (x *ListAppLinksResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAppLinksResponse.ProtoReflect.Descriptor instead. func (*ListAppLinksResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{16} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{19} } func (x *ListAppLinksResponse) GetLinks() []*AppLink { @@ -1037,7 +1226,7 @@ type RemoveAppLinkRequest struct { func (x *RemoveAppLinkRequest) Reset() { *x = RemoveAppLinkRequest{} - mi := &file_app_build_v1_build_proto_msgTypes[17] + mi := &file_app_build_v1_build_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1049,7 +1238,7 @@ func (x *RemoveAppLinkRequest) String() string { func (*RemoveAppLinkRequest) ProtoMessage() {} func (x *RemoveAppLinkRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[17] + mi := &file_app_build_v1_build_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1062,7 +1251,7 @@ func (x *RemoveAppLinkRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAppLinkRequest.ProtoReflect.Descriptor instead. func (*RemoveAppLinkRequest) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{17} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{20} } func (x *RemoveAppLinkRequest) GetOauthAppLinkId() string { @@ -1080,7 +1269,7 @@ type RemoveAppLinkResponse struct { func (x *RemoveAppLinkResponse) Reset() { *x = RemoveAppLinkResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[18] + mi := &file_app_build_v1_build_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1092,7 +1281,7 @@ func (x *RemoveAppLinkResponse) String() string { func (*RemoveAppLinkResponse) ProtoMessage() {} func (x *RemoveAppLinkResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[18] + mi := &file_app_build_v1_build_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1105,7 +1294,7 @@ func (x *RemoveAppLinkResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAppLinkResponse.ProtoReflect.Descriptor instead. func (*RemoveAppLinkResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{18} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{21} } type LinkOrgRequest struct { @@ -1120,7 +1309,7 @@ type LinkOrgRequest struct { func (x *LinkOrgRequest) Reset() { *x = LinkOrgRequest{} - mi := &file_app_build_v1_build_proto_msgTypes[19] + mi := &file_app_build_v1_build_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1132,7 +1321,7 @@ func (x *LinkOrgRequest) String() string { func (*LinkOrgRequest) ProtoMessage() {} func (x *LinkOrgRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[19] + mi := &file_app_build_v1_build_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1145,7 +1334,7 @@ func (x *LinkOrgRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkOrgRequest.ProtoReflect.Descriptor instead. func (*LinkOrgRequest) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{19} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{22} } func (x *LinkOrgRequest) GetOauthAppLinkId() string { @@ -1170,7 +1359,7 @@ type LinkOrgResponse struct { func (x *LinkOrgResponse) Reset() { *x = LinkOrgResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[20] + mi := &file_app_build_v1_build_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1182,7 +1371,7 @@ func (x *LinkOrgResponse) String() string { func (*LinkOrgResponse) ProtoMessage() {} func (x *LinkOrgResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[20] + mi := &file_app_build_v1_build_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1195,7 +1384,7 @@ func (x *LinkOrgResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use LinkOrgResponse.ProtoReflect.Descriptor instead. func (*LinkOrgResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{20} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{23} } type UnlinkOrgRequest struct { @@ -1210,7 +1399,7 @@ type UnlinkOrgRequest struct { func (x *UnlinkOrgRequest) Reset() { *x = UnlinkOrgRequest{} - mi := &file_app_build_v1_build_proto_msgTypes[21] + mi := &file_app_build_v1_build_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1222,7 +1411,7 @@ func (x *UnlinkOrgRequest) String() string { func (*UnlinkOrgRequest) ProtoMessage() {} func (x *UnlinkOrgRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[21] + mi := &file_app_build_v1_build_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1235,7 +1424,7 @@ func (x *UnlinkOrgRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlinkOrgRequest.ProtoReflect.Descriptor instead. func (*UnlinkOrgRequest) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{21} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{24} } func (x *UnlinkOrgRequest) GetOauthAppLinkId() string { @@ -1260,7 +1449,7 @@ type UnlinkOrgResponse struct { func (x *UnlinkOrgResponse) Reset() { *x = UnlinkOrgResponse{} - mi := &file_app_build_v1_build_proto_msgTypes[22] + mi := &file_app_build_v1_build_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1272,7 +1461,7 @@ func (x *UnlinkOrgResponse) String() string { func (*UnlinkOrgResponse) ProtoMessage() {} func (x *UnlinkOrgResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_build_v1_build_proto_msgTypes[22] + mi := &file_app_build_v1_build_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1285,7 +1474,7 @@ func (x *UnlinkOrgResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlinkOrgResponse.ProtoReflect.Descriptor instead. func (*UnlinkOrgResponse) Descriptor() ([]byte, []int) { - return file_app_build_v1_build_proto_rawDescGZIP(), []int{22} + return file_app_build_v1_build_proto_rawDescGZIP(), []int{25} } var File_app_build_v1_build_proto protoreflect.FileDescriptor @@ -1293,7 +1482,9 @@ var File_app_build_v1_build_proto protoreflect.FileDescriptor var file_app_build_v1_build_proto_rawDesc = []byte{ 0x0a, 0x18, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x61, + 0x70, 0x70, 0x2f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, @@ -1319,176 +1510,205 @@ var file_app_build_v1_build_proto_rawDesc = []byte{ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, - 0x6f, 0x72, 0x6d, 0x22, 0x44, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, - 0x73, 0x74, 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, - 0x64, 0x53, 0x74, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x94, 0x02, 0x0a, 0x07, 0x4a, 0x6f, - 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x22, 0x9c, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, - 0x64, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, - 0x78, 0x4a, 0x6f, 0x62, 0x73, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, - 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6a, 0x6f, 0x62, 0x73, 0x5f, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x22, - 0x42, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6a, - 0x6f, 0x62, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, - 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x69, - 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x61, 0x75, - 0x74, 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6f, - 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, - 0x49, 0x64, 0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, - 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, - 0x69, 0x61, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x42, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, - 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c, - 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x34, 0x0a, 0x10, 0x4c, 0x69, 0x6e, - 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, - 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x22, - 0x35, 0x0a, 0x11, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, - 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, - 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x0a, 0x14, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x4a, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, - 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, + 0x6f, 0x72, 0x6d, 0x22, 0x75, 0x0a, 0x0f, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x1d, 0x0a, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69, 0x72, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x64, 0x69, 0x72, 0x22, 0xb5, 0x01, 0x0a, 0x17, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, + 0x70, 0x70, 0x2e, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x43, + 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x00, 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, + 0x6e, 0x66, 0x6f, 0x42, 0x0d, 0x0a, 0x0b, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x22, 0x35, 0x0a, 0x18, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x6f, 0x61, + 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, + 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x94, 0x02, 0x0a, 0x07, 0x4a, 0x6f, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3a, 0x0a, + 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x07, 0x65, + 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x65, 0x6e, + 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x9c, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4a, + 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x6a, + 0x6f, 0x62, 0x73, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, + 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x4a, 0x6f, 0x62, 0x73, 0x4c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6a, 0x6f, 0x62, + 0x73, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x22, 0x42, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x6a, 0x6f, 0x62, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, + 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x08, 0x52, 0x65, + 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, + 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x49, + 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x72, 0x65, 0x70, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, + 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x61, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x42, 0x0a, 0x0f, 0x4c, + 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2f, + 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, - 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, 0x0a, 0x07, 0x41, 0x70, 0x70, 0x4c, - 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x76, 0x69, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x76, 0x69, 0x61, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x1f, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x5f, 0x6f, 0x72, 0x5f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x4f, 0x72, 0x4e, - 0x73, 0x22, 0x48, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x6c, 0x69, 0x6e, - 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, - 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0x41, 0x0a, 0x14, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x17, - 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x0e, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, - 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x22, + 0x34, 0x0a, 0x10, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x4c, + 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x11, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, + 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x65, + 0x70, 0x6f, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, + 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, + 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4a, 0x0a, 0x15, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x52, + 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, + 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x97, 0x01, + 0x0a, 0x07, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, + 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, + 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x61, 0x6d, 0x5f, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x61, 0x6d, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, + 0x5f, 0x6f, 0x72, 0x5f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, + 0x67, 0x49, 0x64, 0x4f, 0x72, 0x4e, 0x73, 0x22, 0x48, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x30, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x6b, + 0x73, 0x22, 0x41, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x4c, 0x69, + 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, - 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x4c, - 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, - 0x0a, 0x10, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, 0x5f, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, - 0x61, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, - 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, - 0x72, 0x67, 0x49, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x6f, 0x0a, 0x09, 0x4a, 0x6f, 0x62, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x15, - 0x0a, 0x11, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x32, 0x95, 0x07, 0x0a, 0x0c, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x0a, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x24, 0x2e, 0x76, 0x69, 0x61, 0x6d, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x6e, 0x6b, 0x49, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, + 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, + 0x0e, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x69, 0x6e, + 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x61, 0x75, 0x74, + 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, + 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, + 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x10, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x61, 0x75, 0x74, + 0x68, 0x5f, 0x61, 0x70, 0x70, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, + 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x72, 0x67, 0x49, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, + 0x6f, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x16, + 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f, 0x42, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, + 0x53, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4a, + 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x03, + 0x32, 0x84, 0x08, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x59, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, + 0x24, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, - 0x73, 0x12, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x08, 0x4c, 0x69, - 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x22, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, - 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x69, 0x61, - 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x53, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x76, 0x69, - 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0a, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, - 0x70, 0x6f, 0x12, 0x24, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, - 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, - 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, + 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x07, + 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, + 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, + 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x69, 0x61, + 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, + 0x12, 0x53, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x22, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x08, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, + 0x6f, 0x12, 0x22, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, + 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0a, 0x55, 0x6e, + 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x24, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x62, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x73, - 0x12, 0x27, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, - 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, - 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, + 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x27, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, + 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x28, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0c, 0x4c, 0x69, 0x73, + 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x12, 0x26, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, - 0x6e, 0x6b, 0x73, 0x12, 0x26, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4c, - 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x76, 0x69, + 0x73, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, + 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0d, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x27, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, - 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x27, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, - 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x07, 0x4c, 0x69, 0x6e, 0x6b, - 0x4f, 0x72, 0x67, 0x12, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, - 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x09, 0x55, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x12, 0x23, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, + 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, + 0x70, 0x70, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, + 0x0a, 0x07, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x12, 0x21, 0x2e, 0x76, 0x69, 0x61, 0x6d, + 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x42, 0x1e, 0x5a, 0x1c, 0x67, 0x6f, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, - 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x56, 0x0a, 0x09, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x12, 0x23, 0x2e, + 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x72, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x2a, 0x2e, 0x76, + 0x69, 0x61, 0x6d, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x76, 0x69, 0x61, 0x6d, 0x2e, + 0x61, 0x70, 0x70, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x42, 0x1e, 0x5a, 0x1c, 0x67, 0x6f, 0x2e, 0x76, 0x69, + 0x61, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1504,67 +1724,75 @@ func file_app_build_v1_build_proto_rawDescGZIP() []byte { } var file_app_build_v1_build_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_app_build_v1_build_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_app_build_v1_build_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_app_build_v1_build_proto_goTypes = []any{ - (JobStatus)(0), // 0: viam.app.build.v1.JobStatus - (*StartBuildRequest)(nil), // 1: viam.app.build.v1.StartBuildRequest - (*StartBuildResponse)(nil), // 2: viam.app.build.v1.StartBuildResponse - (*GetLogsRequest)(nil), // 3: viam.app.build.v1.GetLogsRequest - (*GetLogsResponse)(nil), // 4: viam.app.build.v1.GetLogsResponse - (*JobInfo)(nil), // 5: viam.app.build.v1.JobInfo - (*ListJobsRequest)(nil), // 6: viam.app.build.v1.ListJobsRequest - (*ListJobsResponse)(nil), // 7: viam.app.build.v1.ListJobsResponse - (*RepoLink)(nil), // 8: viam.app.build.v1.RepoLink - (*LinkRepoRequest)(nil), // 9: viam.app.build.v1.LinkRepoRequest - (*LinkRepoResponse)(nil), // 10: viam.app.build.v1.LinkRepoResponse - (*UnlinkRepoRequest)(nil), // 11: viam.app.build.v1.UnlinkRepoRequest - (*UnlinkRepoResponse)(nil), // 12: viam.app.build.v1.UnlinkRepoResponse - (*ListRepoLinksRequest)(nil), // 13: viam.app.build.v1.ListRepoLinksRequest - (*ListRepoLinksResponse)(nil), // 14: viam.app.build.v1.ListRepoLinksResponse - (*ListAppLinksRequest)(nil), // 15: viam.app.build.v1.ListAppLinksRequest - (*AppLink)(nil), // 16: viam.app.build.v1.AppLink - (*ListAppLinksResponse)(nil), // 17: viam.app.build.v1.ListAppLinksResponse - (*RemoveAppLinkRequest)(nil), // 18: viam.app.build.v1.RemoveAppLinkRequest - (*RemoveAppLinkResponse)(nil), // 19: viam.app.build.v1.RemoveAppLinkResponse - (*LinkOrgRequest)(nil), // 20: viam.app.build.v1.LinkOrgRequest - (*LinkOrgResponse)(nil), // 21: viam.app.build.v1.LinkOrgResponse - (*UnlinkOrgRequest)(nil), // 22: viam.app.build.v1.UnlinkOrgRequest - (*UnlinkOrgResponse)(nil), // 23: viam.app.build.v1.UnlinkOrgResponse - (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (JobStatus)(0), // 0: viam.app.build.v1.JobStatus + (*StartBuildRequest)(nil), // 1: viam.app.build.v1.StartBuildRequest + (*StartBuildResponse)(nil), // 2: viam.app.build.v1.StartBuildResponse + (*GetLogsRequest)(nil), // 3: viam.app.build.v1.GetLogsRequest + (*ReloadBuildInfo)(nil), // 4: viam.app.build.v1.ReloadBuildInfo + (*StartReloadBuildRequest)(nil), // 5: viam.app.build.v1.StartReloadBuildRequest + (*StartReloadBuildResponse)(nil), // 6: viam.app.build.v1.StartReloadBuildResponse + (*GetLogsResponse)(nil), // 7: viam.app.build.v1.GetLogsResponse + (*JobInfo)(nil), // 8: viam.app.build.v1.JobInfo + (*ListJobsRequest)(nil), // 9: viam.app.build.v1.ListJobsRequest + (*ListJobsResponse)(nil), // 10: viam.app.build.v1.ListJobsResponse + (*RepoLink)(nil), // 11: viam.app.build.v1.RepoLink + (*LinkRepoRequest)(nil), // 12: viam.app.build.v1.LinkRepoRequest + (*LinkRepoResponse)(nil), // 13: viam.app.build.v1.LinkRepoResponse + (*UnlinkRepoRequest)(nil), // 14: viam.app.build.v1.UnlinkRepoRequest + (*UnlinkRepoResponse)(nil), // 15: viam.app.build.v1.UnlinkRepoResponse + (*ListRepoLinksRequest)(nil), // 16: viam.app.build.v1.ListRepoLinksRequest + (*ListRepoLinksResponse)(nil), // 17: viam.app.build.v1.ListRepoLinksResponse + (*ListAppLinksRequest)(nil), // 18: viam.app.build.v1.ListAppLinksRequest + (*AppLink)(nil), // 19: viam.app.build.v1.AppLink + (*ListAppLinksResponse)(nil), // 20: viam.app.build.v1.ListAppLinksResponse + (*RemoveAppLinkRequest)(nil), // 21: viam.app.build.v1.RemoveAppLinkRequest + (*RemoveAppLinkResponse)(nil), // 22: viam.app.build.v1.RemoveAppLinkResponse + (*LinkOrgRequest)(nil), // 23: viam.app.build.v1.LinkOrgRequest + (*LinkOrgResponse)(nil), // 24: viam.app.build.v1.LinkOrgResponse + (*UnlinkOrgRequest)(nil), // 25: viam.app.build.v1.UnlinkOrgRequest + (*UnlinkOrgResponse)(nil), // 26: viam.app.build.v1.UnlinkOrgResponse + (*v1.CreatePackageRequest)(nil), // 27: viam.app.packages.v1.CreatePackageRequest + (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp } var file_app_build_v1_build_proto_depIdxs = []int32{ - 0, // 0: viam.app.build.v1.JobInfo.status:type_name -> viam.app.build.v1.JobStatus - 24, // 1: viam.app.build.v1.JobInfo.start_time:type_name -> google.protobuf.Timestamp - 24, // 2: viam.app.build.v1.JobInfo.end_time:type_name -> google.protobuf.Timestamp - 5, // 3: viam.app.build.v1.ListJobsResponse.jobs:type_name -> viam.app.build.v1.JobInfo - 8, // 4: viam.app.build.v1.LinkRepoRequest.link:type_name -> viam.app.build.v1.RepoLink - 8, // 5: viam.app.build.v1.ListRepoLinksResponse.links:type_name -> viam.app.build.v1.RepoLink - 16, // 6: viam.app.build.v1.ListAppLinksResponse.links:type_name -> viam.app.build.v1.AppLink - 1, // 7: viam.app.build.v1.BuildService.StartBuild:input_type -> viam.app.build.v1.StartBuildRequest - 3, // 8: viam.app.build.v1.BuildService.GetLogs:input_type -> viam.app.build.v1.GetLogsRequest - 6, // 9: viam.app.build.v1.BuildService.ListJobs:input_type -> viam.app.build.v1.ListJobsRequest - 9, // 10: viam.app.build.v1.BuildService.LinkRepo:input_type -> viam.app.build.v1.LinkRepoRequest - 11, // 11: viam.app.build.v1.BuildService.UnlinkRepo:input_type -> viam.app.build.v1.UnlinkRepoRequest - 13, // 12: viam.app.build.v1.BuildService.ListRepoLinks:input_type -> viam.app.build.v1.ListRepoLinksRequest - 15, // 13: viam.app.build.v1.BuildService.ListAppLinks:input_type -> viam.app.build.v1.ListAppLinksRequest - 18, // 14: viam.app.build.v1.BuildService.RemoveAppLink:input_type -> viam.app.build.v1.RemoveAppLinkRequest - 20, // 15: viam.app.build.v1.BuildService.LinkOrg:input_type -> viam.app.build.v1.LinkOrgRequest - 22, // 16: viam.app.build.v1.BuildService.UnlinkOrg:input_type -> viam.app.build.v1.UnlinkOrgRequest - 2, // 17: viam.app.build.v1.BuildService.StartBuild:output_type -> viam.app.build.v1.StartBuildResponse - 4, // 18: viam.app.build.v1.BuildService.GetLogs:output_type -> viam.app.build.v1.GetLogsResponse - 7, // 19: viam.app.build.v1.BuildService.ListJobs:output_type -> viam.app.build.v1.ListJobsResponse - 10, // 20: viam.app.build.v1.BuildService.LinkRepo:output_type -> viam.app.build.v1.LinkRepoResponse - 12, // 21: viam.app.build.v1.BuildService.UnlinkRepo:output_type -> viam.app.build.v1.UnlinkRepoResponse - 14, // 22: viam.app.build.v1.BuildService.ListRepoLinks:output_type -> viam.app.build.v1.ListRepoLinksResponse - 17, // 23: viam.app.build.v1.BuildService.ListAppLinks:output_type -> viam.app.build.v1.ListAppLinksResponse - 19, // 24: viam.app.build.v1.BuildService.RemoveAppLink:output_type -> viam.app.build.v1.RemoveAppLinkResponse - 21, // 25: viam.app.build.v1.BuildService.LinkOrg:output_type -> viam.app.build.v1.LinkOrgResponse - 23, // 26: viam.app.build.v1.BuildService.UnlinkOrg:output_type -> viam.app.build.v1.UnlinkOrgResponse - 17, // [17:27] is the sub-list for method output_type - 7, // [7:17] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 27, // 0: viam.app.build.v1.StartReloadBuildRequest.package:type_name -> viam.app.packages.v1.CreatePackageRequest + 4, // 1: viam.app.build.v1.StartReloadBuildRequest.build_info:type_name -> viam.app.build.v1.ReloadBuildInfo + 0, // 2: viam.app.build.v1.JobInfo.status:type_name -> viam.app.build.v1.JobStatus + 28, // 3: viam.app.build.v1.JobInfo.start_time:type_name -> google.protobuf.Timestamp + 28, // 4: viam.app.build.v1.JobInfo.end_time:type_name -> google.protobuf.Timestamp + 8, // 5: viam.app.build.v1.ListJobsResponse.jobs:type_name -> viam.app.build.v1.JobInfo + 11, // 6: viam.app.build.v1.LinkRepoRequest.link:type_name -> viam.app.build.v1.RepoLink + 11, // 7: viam.app.build.v1.ListRepoLinksResponse.links:type_name -> viam.app.build.v1.RepoLink + 19, // 8: viam.app.build.v1.ListAppLinksResponse.links:type_name -> viam.app.build.v1.AppLink + 1, // 9: viam.app.build.v1.BuildService.StartBuild:input_type -> viam.app.build.v1.StartBuildRequest + 3, // 10: viam.app.build.v1.BuildService.GetLogs:input_type -> viam.app.build.v1.GetLogsRequest + 9, // 11: viam.app.build.v1.BuildService.ListJobs:input_type -> viam.app.build.v1.ListJobsRequest + 12, // 12: viam.app.build.v1.BuildService.LinkRepo:input_type -> viam.app.build.v1.LinkRepoRequest + 14, // 13: viam.app.build.v1.BuildService.UnlinkRepo:input_type -> viam.app.build.v1.UnlinkRepoRequest + 16, // 14: viam.app.build.v1.BuildService.ListRepoLinks:input_type -> viam.app.build.v1.ListRepoLinksRequest + 18, // 15: viam.app.build.v1.BuildService.ListAppLinks:input_type -> viam.app.build.v1.ListAppLinksRequest + 21, // 16: viam.app.build.v1.BuildService.RemoveAppLink:input_type -> viam.app.build.v1.RemoveAppLinkRequest + 23, // 17: viam.app.build.v1.BuildService.LinkOrg:input_type -> viam.app.build.v1.LinkOrgRequest + 25, // 18: viam.app.build.v1.BuildService.UnlinkOrg:input_type -> viam.app.build.v1.UnlinkOrgRequest + 5, // 19: viam.app.build.v1.BuildService.StartReloadBuild:input_type -> viam.app.build.v1.StartReloadBuildRequest + 2, // 20: viam.app.build.v1.BuildService.StartBuild:output_type -> viam.app.build.v1.StartBuildResponse + 7, // 21: viam.app.build.v1.BuildService.GetLogs:output_type -> viam.app.build.v1.GetLogsResponse + 10, // 22: viam.app.build.v1.BuildService.ListJobs:output_type -> viam.app.build.v1.ListJobsResponse + 13, // 23: viam.app.build.v1.BuildService.LinkRepo:output_type -> viam.app.build.v1.LinkRepoResponse + 15, // 24: viam.app.build.v1.BuildService.UnlinkRepo:output_type -> viam.app.build.v1.UnlinkRepoResponse + 17, // 25: viam.app.build.v1.BuildService.ListRepoLinks:output_type -> viam.app.build.v1.ListRepoLinksResponse + 20, // 26: viam.app.build.v1.BuildService.ListAppLinks:output_type -> viam.app.build.v1.ListAppLinksResponse + 22, // 27: viam.app.build.v1.BuildService.RemoveAppLink:output_type -> viam.app.build.v1.RemoveAppLinkResponse + 24, // 28: viam.app.build.v1.BuildService.LinkOrg:output_type -> viam.app.build.v1.LinkOrgResponse + 26, // 29: viam.app.build.v1.BuildService.UnlinkOrg:output_type -> viam.app.build.v1.UnlinkOrgResponse + 6, // 30: viam.app.build.v1.BuildService.StartReloadBuild:output_type -> viam.app.build.v1.StartReloadBuildResponse + 20, // [20:31] is the sub-list for method output_type + 9, // [9:20] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_app_build_v1_build_proto_init() } @@ -1573,16 +1801,21 @@ func file_app_build_v1_build_proto_init() { return } file_app_build_v1_build_proto_msgTypes[0].OneofWrappers = []any{} - file_app_build_v1_build_proto_msgTypes[4].OneofWrappers = []any{} - file_app_build_v1_build_proto_msgTypes[5].OneofWrappers = []any{} + file_app_build_v1_build_proto_msgTypes[3].OneofWrappers = []any{} + file_app_build_v1_build_proto_msgTypes[4].OneofWrappers = []any{ + (*StartReloadBuildRequest_Package)(nil), + (*StartReloadBuildRequest_BuildInfo)(nil), + } file_app_build_v1_build_proto_msgTypes[7].OneofWrappers = []any{} + file_app_build_v1_build_proto_msgTypes[8].OneofWrappers = []any{} + file_app_build_v1_build_proto_msgTypes[10].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_app_build_v1_build_proto_rawDesc, NumEnums: 1, - NumMessages: 23, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, diff --git a/app/build/v1/build.pb.gw.go b/app/build/v1/build.pb.gw.go index 616bf1e11..c86ba6ed6 100644 --- a/app/build/v1/build.pb.gw.go +++ b/app/build/v1/build.pb.gw.go @@ -286,6 +286,50 @@ func local_request_BuildService_UnlinkOrg_0(ctx context.Context, marshaler runti } +func request_BuildService_StartReloadBuild_0(ctx context.Context, marshaler runtime.Marshaler, client BuildServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var metadata runtime.ServerMetadata + stream, err := client.StartReloadBuild(ctx) + if err != nil { + grpclog.Errorf("Failed to start streaming: %v", err) + return nil, metadata, err + } + dec := marshaler.NewDecoder(req.Body) + for { + var protoReq StartReloadBuildRequest + err = dec.Decode(&protoReq) + if err == io.EOF { + break + } + if err != nil { + grpclog.Errorf("Failed to decode request: %v", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err = stream.Send(&protoReq); err != nil { + if err == io.EOF { + break + } + grpclog.Errorf("Failed to send request: %v", err) + return nil, metadata, err + } + } + + if err := stream.CloseSend(); err != nil { + grpclog.Errorf("Failed to terminate client stream: %v", err) + return nil, metadata, err + } + header, err := stream.Header() + if err != nil { + grpclog.Errorf("Failed to get header from client: %v", err) + return nil, metadata, err + } + metadata.HeaderMD = header + + msg, err := stream.CloseAndRecv() + metadata.TrailerMD = stream.Trailer() + return msg, metadata, err + +} + // RegisterBuildServiceHandlerServer registers the http handlers for service BuildService to "mux". // UnaryRPC :call BuildServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -524,6 +568,13 @@ func RegisterBuildServiceHandlerServer(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("POST", pattern_BuildService_StartReloadBuild_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + err := status.Error(codes.Unimplemented, "streaming calls are not yet supported in the in-process transport") + _, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + }) + return nil } @@ -785,6 +836,28 @@ func RegisterBuildServiceHandlerClient(ctx context.Context, mux *runtime.ServeMu }) + mux.Handle("POST", pattern_BuildService_StartReloadBuild_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/viam.app.build.v1.BuildService/StartReloadBuild", runtime.WithHTTPPathPattern("/viam.app.build.v1.BuildService/StartReloadBuild")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_BuildService_StartReloadBuild_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_BuildService_StartReloadBuild_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -808,6 +881,8 @@ var ( pattern_BuildService_LinkOrg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.build.v1.BuildService", "LinkOrg"}, "")) pattern_BuildService_UnlinkOrg_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.build.v1.BuildService", "UnlinkOrg"}, "")) + + pattern_BuildService_StartReloadBuild_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"viam.app.build.v1.BuildService", "StartReloadBuild"}, "")) ) var ( @@ -830,4 +905,6 @@ var ( forward_BuildService_LinkOrg_0 = runtime.ForwardResponseMessage forward_BuildService_UnlinkOrg_0 = runtime.ForwardResponseMessage + + forward_BuildService_StartReloadBuild_0 = runtime.ForwardResponseMessage ) diff --git a/app/build/v1/build_grpc.pb.go b/app/build/v1/build_grpc.pb.go index 4112dbdfe..116430a72 100644 --- a/app/build/v1/build_grpc.pb.go +++ b/app/build/v1/build_grpc.pb.go @@ -42,6 +42,8 @@ type BuildServiceClient interface { LinkOrg(ctx context.Context, in *LinkOrgRequest, opts ...grpc.CallOption) (*LinkOrgResponse, error) // remove an org from an oauth app link. UnlinkOrg(ctx context.Context, in *UnlinkOrgRequest, opts ...grpc.CallOption) (*UnlinkOrgResponse, error) + // upload the local dev environment and build a module for hot reloading + StartReloadBuild(ctx context.Context, opts ...grpc.CallOption) (BuildService_StartReloadBuildClient, error) } type buildServiceClient struct { @@ -165,6 +167,40 @@ func (c *buildServiceClient) UnlinkOrg(ctx context.Context, in *UnlinkOrgRequest return out, nil } +func (c *buildServiceClient) StartReloadBuild(ctx context.Context, opts ...grpc.CallOption) (BuildService_StartReloadBuildClient, error) { + stream, err := c.cc.NewStream(ctx, &BuildService_ServiceDesc.Streams[1], "/viam.app.build.v1.BuildService/StartReloadBuild", opts...) + if err != nil { + return nil, err + } + x := &buildServiceStartReloadBuildClient{stream} + return x, nil +} + +type BuildService_StartReloadBuildClient interface { + Send(*StartReloadBuildRequest) error + CloseAndRecv() (*StartReloadBuildResponse, error) + grpc.ClientStream +} + +type buildServiceStartReloadBuildClient struct { + grpc.ClientStream +} + +func (x *buildServiceStartReloadBuildClient) Send(m *StartReloadBuildRequest) error { + return x.ClientStream.SendMsg(m) +} + +func (x *buildServiceStartReloadBuildClient) CloseAndRecv() (*StartReloadBuildResponse, error) { + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + m := new(StartReloadBuildResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + // BuildServiceServer is the server API for BuildService service. // All implementations must embed UnimplementedBuildServiceServer // for forward compatibility @@ -189,6 +225,8 @@ type BuildServiceServer interface { LinkOrg(context.Context, *LinkOrgRequest) (*LinkOrgResponse, error) // remove an org from an oauth app link. UnlinkOrg(context.Context, *UnlinkOrgRequest) (*UnlinkOrgResponse, error) + // upload the local dev environment and build a module for hot reloading + StartReloadBuild(BuildService_StartReloadBuildServer) error mustEmbedUnimplementedBuildServiceServer() } @@ -226,6 +264,9 @@ func (UnimplementedBuildServiceServer) LinkOrg(context.Context, *LinkOrgRequest) func (UnimplementedBuildServiceServer) UnlinkOrg(context.Context, *UnlinkOrgRequest) (*UnlinkOrgResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UnlinkOrg not implemented") } +func (UnimplementedBuildServiceServer) StartReloadBuild(BuildService_StartReloadBuildServer) error { + return status.Errorf(codes.Unimplemented, "method StartReloadBuild not implemented") +} func (UnimplementedBuildServiceServer) mustEmbedUnimplementedBuildServiceServer() {} // UnsafeBuildServiceServer may be embedded to opt out of forward compatibility for this service. @@ -422,6 +463,32 @@ func _BuildService_UnlinkOrg_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _BuildService_StartReloadBuild_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(BuildServiceServer).StartReloadBuild(&buildServiceStartReloadBuildServer{stream}) +} + +type BuildService_StartReloadBuildServer interface { + SendAndClose(*StartReloadBuildResponse) error + Recv() (*StartReloadBuildRequest, error) + grpc.ServerStream +} + +type buildServiceStartReloadBuildServer struct { + grpc.ServerStream +} + +func (x *buildServiceStartReloadBuildServer) SendAndClose(m *StartReloadBuildResponse) error { + return x.ServerStream.SendMsg(m) +} + +func (x *buildServiceStartReloadBuildServer) Recv() (*StartReloadBuildRequest, error) { + m := new(StartReloadBuildRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + // BuildService_ServiceDesc is the grpc.ServiceDesc for BuildService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -472,6 +539,11 @@ var BuildService_ServiceDesc = grpc.ServiceDesc{ Handler: _BuildService_GetLogs_Handler, ServerStreams: true, }, + { + StreamName: "StartReloadBuild", + Handler: _BuildService_StartReloadBuild_Handler, + ClientStreams: true, + }, }, Metadata: "app/build/v1/build.proto", } diff --git a/gen/js/app/build/v1/build_grpc_web_pb.js b/gen/js/app/build/v1/build_grpc_web_pb.js index 2c59cb9ce..e568f82f7 100644 --- a/gen/js/app/build/v1/build_grpc_web_pb.js +++ b/gen/js/app/build/v1/build_grpc_web_pb.js @@ -20,6 +20,8 @@ const grpc = {}; grpc.web = require('grpc-web'); +var app_packages_v1_packages_pb = require('../../../app/packages/v1/packages_pb.js') + var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js') const proto = {}; proto.viam = {}; diff --git a/gen/js/app/build/v1/build_pb.d.ts b/gen/js/app/build/v1/build_pb.d.ts index ce9a5c351..16941cae0 100644 --- a/gen/js/app/build/v1/build_pb.d.ts +++ b/gen/js/app/build/v1/build_pb.d.ts @@ -2,6 +2,7 @@ // file: app/build/v1/build.proto import * as jspb from "google-protobuf"; +import * as app_packages_v1_packages_pb from "../../../app/packages/v1/packages_pb"; import * as google_protobuf_timestamp_pb from "google-protobuf/google/protobuf/timestamp_pb"; export class StartBuildRequest extends jspb.Message { @@ -100,6 +101,91 @@ export namespace GetLogsRequest { } } +export class ReloadBuildInfo extends jspb.Message { + getPlatform(): string; + setPlatform(value: string): void; + + hasWorkdir(): boolean; + clearWorkdir(): void; + getWorkdir(): string; + setWorkdir(value: string): void; + + getModuleId(): string; + setModuleId(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): ReloadBuildInfo.AsObject; + static toObject(includeInstance: boolean, msg: ReloadBuildInfo): ReloadBuildInfo.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: ReloadBuildInfo, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): ReloadBuildInfo; + static deserializeBinaryFromReader(message: ReloadBuildInfo, reader: jspb.BinaryReader): ReloadBuildInfo; +} + +export namespace ReloadBuildInfo { + export type AsObject = { + platform: string, + workdir: string, + moduleId: string, + } +} + +export class StartReloadBuildRequest extends jspb.Message { + hasPackage(): boolean; + clearPackage(): void; + getPackage(): app_packages_v1_packages_pb.CreatePackageRequest | undefined; + setPackage(value?: app_packages_v1_packages_pb.CreatePackageRequest): void; + + hasBuildInfo(): boolean; + clearBuildInfo(): void; + getBuildInfo(): ReloadBuildInfo | undefined; + setBuildInfo(value?: ReloadBuildInfo): void; + + getCloudBuildCase(): StartReloadBuildRequest.CloudBuildCase; + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): StartReloadBuildRequest.AsObject; + static toObject(includeInstance: boolean, msg: StartReloadBuildRequest): StartReloadBuildRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: StartReloadBuildRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): StartReloadBuildRequest; + static deserializeBinaryFromReader(message: StartReloadBuildRequest, reader: jspb.BinaryReader): StartReloadBuildRequest; +} + +export namespace StartReloadBuildRequest { + export type AsObject = { + pb_package?: app_packages_v1_packages_pb.CreatePackageRequest.AsObject, + buildInfo?: ReloadBuildInfo.AsObject, + } + + export enum CloudBuildCase { + CLOUD_BUILD_NOT_SET = 0, + PACKAGE = 1, + BUILD_INFO = 2, + } +} + +export class StartReloadBuildResponse extends jspb.Message { + getBuildId(): string; + setBuildId(value: string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): StartReloadBuildResponse.AsObject; + static toObject(includeInstance: boolean, msg: StartReloadBuildResponse): StartReloadBuildResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: StartReloadBuildResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): StartReloadBuildResponse; + static deserializeBinaryFromReader(message: StartReloadBuildResponse, reader: jspb.BinaryReader): StartReloadBuildResponse; +} + +export namespace StartReloadBuildResponse { + export type AsObject = { + buildId: string, + } +} + export class GetLogsResponse extends jspb.Message { getBuildStep(): string; setBuildStep(value: string): void; diff --git a/gen/js/app/build/v1/build_pb.js b/gen/js/app/build/v1/build_pb.js index a86ce6707..1d9cf1a95 100644 --- a/gen/js/app/build/v1/build_pb.js +++ b/gen/js/app/build/v1/build_pb.js @@ -15,6 +15,8 @@ var jspb = require('google-protobuf'); var goog = jspb; var global = (function() { return this || window || global || self || Function('return this')(); }).call(null); +var app_packages_v1_packages_pb = require('../../../app/packages/v1/packages_pb.js'); +goog.object.extend(proto, app_packages_v1_packages_pb); var google_protobuf_timestamp_pb = require('google-protobuf/google/protobuf/timestamp_pb.js'); goog.object.extend(proto, google_protobuf_timestamp_pb); goog.exportSymbol('proto.viam.app.build.v1.AppLink', null, global); @@ -32,11 +34,15 @@ goog.exportSymbol('proto.viam.app.build.v1.ListJobsRequest', null, global); goog.exportSymbol('proto.viam.app.build.v1.ListJobsResponse', null, global); goog.exportSymbol('proto.viam.app.build.v1.ListRepoLinksRequest', null, global); goog.exportSymbol('proto.viam.app.build.v1.ListRepoLinksResponse', null, global); +goog.exportSymbol('proto.viam.app.build.v1.ReloadBuildInfo', null, global); goog.exportSymbol('proto.viam.app.build.v1.RemoveAppLinkRequest', null, global); goog.exportSymbol('proto.viam.app.build.v1.RemoveAppLinkResponse', null, global); goog.exportSymbol('proto.viam.app.build.v1.RepoLink', null, global); goog.exportSymbol('proto.viam.app.build.v1.StartBuildRequest', null, global); goog.exportSymbol('proto.viam.app.build.v1.StartBuildResponse', null, global); +goog.exportSymbol('proto.viam.app.build.v1.StartReloadBuildRequest', null, global); +goog.exportSymbol('proto.viam.app.build.v1.StartReloadBuildRequest.CloudBuildCase', null, global); +goog.exportSymbol('proto.viam.app.build.v1.StartReloadBuildResponse', null, global); goog.exportSymbol('proto.viam.app.build.v1.UnlinkOrgRequest', null, global); goog.exportSymbol('proto.viam.app.build.v1.UnlinkOrgResponse', null, global); goog.exportSymbol('proto.viam.app.build.v1.UnlinkRepoRequest', null, global); @@ -104,6 +110,69 @@ if (goog.DEBUG && !COMPILED) { */ proto.viam.app.build.v1.GetLogsRequest.displayName = 'proto.viam.app.build.v1.GetLogsRequest'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.build.v1.ReloadBuildInfo = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.viam.app.build.v1.ReloadBuildInfo, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.build.v1.ReloadBuildInfo.displayName = 'proto.viam.app.build.v1.ReloadBuildInfo'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.build.v1.StartReloadBuildRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.viam.app.build.v1.StartReloadBuildRequest.oneofGroups_); +}; +goog.inherits(proto.viam.app.build.v1.StartReloadBuildRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.build.v1.StartReloadBuildRequest.displayName = 'proto.viam.app.build.v1.StartReloadBuildRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.viam.app.build.v1.StartReloadBuildResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.viam.app.build.v1.StartReloadBuildResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.viam.app.build.v1.StartReloadBuildResponse.displayName = 'proto.viam.app.build.v1.StartReloadBuildResponse'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -1207,6 +1276,572 @@ proto.viam.app.build.v1.GetLogsRequest.prototype.setPlatform = function(value) { +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.build.v1.ReloadBuildInfo.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.build.v1.ReloadBuildInfo} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.build.v1.ReloadBuildInfo.toObject = function(includeInstance, msg) { + var f, obj = { + platform: jspb.Message.getFieldWithDefault(msg, 1, ""), + workdir: jspb.Message.getFieldWithDefault(msg, 2, ""), + moduleId: jspb.Message.getFieldWithDefault(msg, 3, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.build.v1.ReloadBuildInfo} + */ +proto.viam.app.build.v1.ReloadBuildInfo.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.build.v1.ReloadBuildInfo; + return proto.viam.app.build.v1.ReloadBuildInfo.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.build.v1.ReloadBuildInfo} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.build.v1.ReloadBuildInfo} + */ +proto.viam.app.build.v1.ReloadBuildInfo.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setPlatform(value); + break; + case 2: + var value = /** @type {string} */ (reader.readString()); + msg.setWorkdir(value); + break; + case 3: + var value = /** @type {string} */ (reader.readString()); + msg.setModuleId(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.build.v1.ReloadBuildInfo.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.build.v1.ReloadBuildInfo} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.build.v1.ReloadBuildInfo.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getPlatform(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = /** @type {string} */ (jspb.Message.getField(message, 2)); + if (f != null) { + writer.writeString( + 2, + f + ); + } + f = message.getModuleId(); + if (f.length > 0) { + writer.writeString( + 3, + f + ); + } +}; + + +/** + * optional string platform = 1; + * @return {string} + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.getPlatform = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.build.v1.ReloadBuildInfo} returns this + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.setPlatform = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional string workdir = 2; + * @return {string} + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.getWorkdir = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.build.v1.ReloadBuildInfo} returns this + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.setWorkdir = function(value) { + return jspb.Message.setField(this, 2, value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.viam.app.build.v1.ReloadBuildInfo} returns this + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.clearWorkdir = function() { + return jspb.Message.setField(this, 2, undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.hasWorkdir = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * optional string module_id = 3; + * @return {string} + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.getModuleId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.build.v1.ReloadBuildInfo} returns this + */ +proto.viam.app.build.v1.ReloadBuildInfo.prototype.setModuleId = function(value) { + return jspb.Message.setProto3StringField(this, 3, value); +}; + + + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.viam.app.build.v1.StartReloadBuildRequest.oneofGroups_ = [[1,2]]; + +/** + * @enum {number} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.CloudBuildCase = { + CLOUD_BUILD_NOT_SET: 0, + PACKAGE: 1, + BUILD_INFO: 2 +}; + +/** + * @return {proto.viam.app.build.v1.StartReloadBuildRequest.CloudBuildCase} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.getCloudBuildCase = function() { + return /** @type {proto.viam.app.build.v1.StartReloadBuildRequest.CloudBuildCase} */(jspb.Message.computeOneofCase(this, proto.viam.app.build.v1.StartReloadBuildRequest.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.build.v1.StartReloadBuildRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.build.v1.StartReloadBuildRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.build.v1.StartReloadBuildRequest.toObject = function(includeInstance, msg) { + var f, obj = { + pb_package: (f = msg.getPackage()) && app_packages_v1_packages_pb.CreatePackageRequest.toObject(includeInstance, f), + buildInfo: (f = msg.getBuildInfo()) && proto.viam.app.build.v1.ReloadBuildInfo.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.build.v1.StartReloadBuildRequest} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.build.v1.StartReloadBuildRequest; + return proto.viam.app.build.v1.StartReloadBuildRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.build.v1.StartReloadBuildRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.build.v1.StartReloadBuildRequest} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new app_packages_v1_packages_pb.CreatePackageRequest; + reader.readMessage(value,app_packages_v1_packages_pb.CreatePackageRequest.deserializeBinaryFromReader); + msg.setPackage(value); + break; + case 2: + var value = new proto.viam.app.build.v1.ReloadBuildInfo; + reader.readMessage(value,proto.viam.app.build.v1.ReloadBuildInfo.deserializeBinaryFromReader); + msg.setBuildInfo(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.build.v1.StartReloadBuildRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.build.v1.StartReloadBuildRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.build.v1.StartReloadBuildRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getPackage(); + if (f != null) { + writer.writeMessage( + 1, + f, + app_packages_v1_packages_pb.CreatePackageRequest.serializeBinaryToWriter + ); + } + f = message.getBuildInfo(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.viam.app.build.v1.ReloadBuildInfo.serializeBinaryToWriter + ); + } +}; + + +/** + * optional viam.app.packages.v1.CreatePackageRequest package = 1; + * @return {?proto.viam.app.packages.v1.CreatePackageRequest} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.getPackage = function() { + return /** @type{?proto.viam.app.packages.v1.CreatePackageRequest} */ ( + jspb.Message.getWrapperField(this, app_packages_v1_packages_pb.CreatePackageRequest, 1)); +}; + + +/** + * @param {?proto.viam.app.packages.v1.CreatePackageRequest|undefined} value + * @return {!proto.viam.app.build.v1.StartReloadBuildRequest} returns this +*/ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.setPackage = function(value) { + return jspb.Message.setOneofWrapperField(this, 1, proto.viam.app.build.v1.StartReloadBuildRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.viam.app.build.v1.StartReloadBuildRequest} returns this + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.clearPackage = function() { + return this.setPackage(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.hasPackage = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional ReloadBuildInfo build_info = 2; + * @return {?proto.viam.app.build.v1.ReloadBuildInfo} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.getBuildInfo = function() { + return /** @type{?proto.viam.app.build.v1.ReloadBuildInfo} */ ( + jspb.Message.getWrapperField(this, proto.viam.app.build.v1.ReloadBuildInfo, 2)); +}; + + +/** + * @param {?proto.viam.app.build.v1.ReloadBuildInfo|undefined} value + * @return {!proto.viam.app.build.v1.StartReloadBuildRequest} returns this +*/ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.setBuildInfo = function(value) { + return jspb.Message.setOneofWrapperField(this, 2, proto.viam.app.build.v1.StartReloadBuildRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.viam.app.build.v1.StartReloadBuildRequest} returns this + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.clearBuildInfo = function() { + return this.setBuildInfo(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.viam.app.build.v1.StartReloadBuildRequest.prototype.hasBuildInfo = function() { + return jspb.Message.getField(this, 2) != null; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.viam.app.build.v1.StartReloadBuildResponse.prototype.toObject = function(opt_includeInstance) { + return proto.viam.app.build.v1.StartReloadBuildResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.viam.app.build.v1.StartReloadBuildResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.build.v1.StartReloadBuildResponse.toObject = function(includeInstance, msg) { + var f, obj = { + buildId: jspb.Message.getFieldWithDefault(msg, 1, "") + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.viam.app.build.v1.StartReloadBuildResponse} + */ +proto.viam.app.build.v1.StartReloadBuildResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.viam.app.build.v1.StartReloadBuildResponse; + return proto.viam.app.build.v1.StartReloadBuildResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.viam.app.build.v1.StartReloadBuildResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.viam.app.build.v1.StartReloadBuildResponse} + */ +proto.viam.app.build.v1.StartReloadBuildResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setBuildId(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.viam.app.build.v1.StartReloadBuildResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.viam.app.build.v1.StartReloadBuildResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.viam.app.build.v1.StartReloadBuildResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.viam.app.build.v1.StartReloadBuildResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getBuildId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } +}; + + +/** + * optional string build_id = 1; + * @return {string} + */ +proto.viam.app.build.v1.StartReloadBuildResponse.prototype.getBuildId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.viam.app.build.v1.StartReloadBuildResponse} returns this + */ +proto.viam.app.build.v1.StartReloadBuildResponse.prototype.setBuildId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + + + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. diff --git a/gen/js/app/build/v1/build_pb_service.d.ts b/gen/js/app/build/v1/build_pb_service.d.ts index 0131e5952..00150530f 100644 --- a/gen/js/app/build/v1/build_pb_service.d.ts +++ b/gen/js/app/build/v1/build_pb_service.d.ts @@ -94,6 +94,15 @@ type BuildServiceUnlinkOrg = { readonly responseType: typeof app_build_v1_build_pb.UnlinkOrgResponse; }; +type BuildServiceStartReloadBuild = { + readonly methodName: string; + readonly service: typeof BuildService; + readonly requestStream: true; + readonly responseStream: false; + readonly requestType: typeof app_build_v1_build_pb.StartReloadBuildRequest; + readonly responseType: typeof app_build_v1_build_pb.StartReloadBuildResponse; +}; + export class BuildService { static readonly serviceName: string; static readonly StartBuild: BuildServiceStartBuild; @@ -106,6 +115,7 @@ export class BuildService { static readonly RemoveAppLink: BuildServiceRemoveAppLink; static readonly LinkOrg: BuildServiceLinkOrg; static readonly UnlinkOrg: BuildServiceUnlinkOrg; + static readonly StartReloadBuild: BuildServiceStartReloadBuild; } export type ServiceError = { message: string, code: number; metadata: grpc.Metadata } @@ -222,5 +232,6 @@ export class BuildServiceClient { requestMessage: app_build_v1_build_pb.UnlinkOrgRequest, callback: (error: ServiceError|null, responseMessage: app_build_v1_build_pb.UnlinkOrgResponse|null) => void ): UnaryResponse; + startReloadBuild(metadata?: grpc.Metadata): RequestStream; } diff --git a/gen/js/app/build/v1/build_pb_service.js b/gen/js/app/build/v1/build_pb_service.js index 9b2e3ad78..4901704c0 100644 --- a/gen/js/app/build/v1/build_pb_service.js +++ b/gen/js/app/build/v1/build_pb_service.js @@ -100,6 +100,15 @@ BuildService.UnlinkOrg = { responseType: app_build_v1_build_pb.UnlinkOrgResponse }; +BuildService.StartReloadBuild = { + methodName: "StartReloadBuild", + service: BuildService, + requestStream: true, + responseStream: false, + requestType: app_build_v1_build_pb.StartReloadBuildRequest, + responseType: app_build_v1_build_pb.StartReloadBuildResponse +}; + exports.BuildService = BuildService; function BuildServiceClient(serviceHost, options) { @@ -425,5 +434,46 @@ BuildServiceClient.prototype.unlinkOrg = function unlinkOrg(requestMessage, meta }; }; +BuildServiceClient.prototype.startReloadBuild = function startReloadBuild(metadata) { + var listeners = { + end: [], + status: [] + }; + var client = grpc.client(BuildService.StartReloadBuild, { + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport + }); + client.onEnd(function (status, statusMessage, trailers) { + listeners.status.forEach(function (handler) { + handler({ code: status, details: statusMessage, metadata: trailers }); + }); + listeners.end.forEach(function (handler) { + handler({ code: status, details: statusMessage, metadata: trailers }); + }); + listeners = null; + }); + return { + on: function (type, handler) { + listeners[type].push(handler); + return this; + }, + write: function (requestMessage) { + if (!client.started) { + client.start(metadata); + } + client.send(requestMessage); + return this; + }, + end: function () { + client.finishSend(); + }, + cancel: function () { + listeners = null; + client.close(); + } + }; +}; + exports.BuildServiceClient = BuildServiceClient; diff --git a/proto/viam/app/build/v1/build.proto b/proto/viam/app/build/v1/build.proto index 290debc8e..c47b57ac5 100644 --- a/proto/viam/app/build/v1/build.proto +++ b/proto/viam/app/build/v1/build.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package viam.app.build.v1; +import "app/packages/v1/packages.proto"; import "google/protobuf/timestamp.proto"; option go_package = "go.viam.com/api/app/build/v1"; @@ -33,6 +34,8 @@ service BuildService { rpc LinkOrg(LinkOrgRequest) returns (LinkOrgResponse); // remove an org from an oauth app link. rpc UnlinkOrg(UnlinkOrgRequest) returns (UnlinkOrgResponse); + // upload the local dev environment and build a module for hot reloading + rpc StartReloadBuild(stream StartReloadBuildRequest) returns (StartReloadBuildResponse); } message StartBuildRequest { @@ -62,6 +65,26 @@ message GetLogsRequest { string platform = 2; } +message ReloadBuildInfo { + // platform to build the reload module for + string platform = 1; + // optional working directory. defaults to repo root + optional string workdir = 2; + // org ID for the module + string module_id = 3; +} + +message StartReloadBuildRequest { + oneof cloud_build { + packages.v1.CreatePackageRequest package = 1; + ReloadBuildInfo build_info = 2; + } +} + +message StartReloadBuildResponse { + string build_id = 1; +} + // GetLogsResponse is a streaming endpoint that may have multiple messages that belong // to the same build_step if there are too many bytes to fit into a single gRPC // response.