diff --git a/pkg/buildx/build/build.go b/pkg/buildx/build/build.go index bee9cead..00337a32 100644 --- a/pkg/buildx/build/build.go +++ b/pkg/buildx/build/build.go @@ -756,10 +756,6 @@ type DepotNodeResponse struct { SolveResponse *client.SolveResponse } -func Build(ctx context.Context, nodes []builder.Node, opt map[string]Options, docker *dockerutil.Client, configDir string, w progress.Writer, dockerfileCallback DockerfileCallback, build *depotbuild.Build) (resp []DepotBuildResponse, err error) { - return BuildWithResultHandler(ctx, nodes, opt, docker, configDir, w, dockerfileCallback, nil, false, build) -} - func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[string]Options, docker *dockerutil.Client, configDir string, w progress.Writer, dockerfileCallback DockerfileCallback, resultHandleFunc func(driverIndex int, rCtx *ResultContext), allowNoOutput bool, build *depotbuild.Build) (resp []DepotBuildResponse, err error) { if len(nodes) == 0 { return nil, errors.Errorf("driver required for build") diff --git a/pkg/buildx/commands/bake.go b/pkg/buildx/commands/bake.go index 5527926a..a8d1a6bf 100644 --- a/pkg/buildx/commands/bake.go +++ b/pkg/buildx/commands/bake.go @@ -176,7 +176,8 @@ func RunBake(dockerCli command.Cli, in BakeOptions, validator BakeValidator, pri var err error // Only load images from requested targets to avoid pulling unnecessary images. if slices.Contains(requestedTargets, resp[i].Name) { - reportingPrinter := progresshelper.NewReportingWriter(printer, in.buildID, in.token) + reportingPrinter := progresshelper.NewReporter(ctx2, printer, in.buildID, in.token) + defer reportingPrinter.Close() err = load.DepotFastLoad(ctx2, dockerCli.Client(), depotResponses, pullOpts, reportingPrinter) } load.DeleteExportLeases(ctx2, depotResponses) diff --git a/pkg/buildx/commands/build.go b/pkg/buildx/commands/build.go index 070006a4..44f99fce 100644 --- a/pkg/buildx/commands/build.go +++ b/pkg/buildx/commands/build.go @@ -321,7 +321,7 @@ func buildTargets(ctx context.Context, dockerCli command.Cli, nodes []builder.No } // NOTE: the err is returned at the end of this function after the final prints. - reportingPrinter := progresshelper.NewReportingWriter(printer, depotOpts.buildID, depotOpts.token) + reportingPrinter := progresshelper.NewReporter(ctx, printer, depotOpts.buildID, depotOpts.token) err = load.DepotFastLoad(ctx, dockerCli.Client(), resp, pullOpts, reportingPrinter) if err != nil && !errors.Is(err, context.Canceled) { // For now, we will fallback by rebuilding with load. @@ -342,6 +342,8 @@ func buildTargets(ctx context.Context, dockerCli command.Cli, nodes []builder.No } } } + reportingPrinter.Close() + load.DeleteExportLeases(ctx, resp) if err := printer.Wait(); err != nil { diff --git a/pkg/buildxdriver/driver.go b/pkg/buildxdriver/driver.go index 6c9b9d1f..40d4f972 100644 --- a/pkg/buildxdriver/driver.go +++ b/pkg/buildxdriver/driver.go @@ -41,8 +41,8 @@ func (d *Driver) Bootstrap(ctx context.Context, reporter progress.Logger) error } d.cfg.Auth = depotbuild.NewAuthProvider(credentials, d.cfg.Auth) } - - reportingLogger := progresshelper.NewReportingLogger(reporter, buildID, token) + reportingLogger := progresshelper.NewReporterFromLogger(ctx, reporter, buildID, token) + defer reportingLogger.Close() message := "[depot] launching " + platform + " machine" @@ -137,10 +137,10 @@ func (d *Driver) Version(ctx context.Context) (string, error) { return "", nil } -func StartLog(message string, logger progress.Logger) func(err error) { +func StartLog(message string, logger *progresshelper.Reporter) func(err error) { dgst := digest.FromBytes([]byte(identity.NewID())) tm := time.Now() - logger(&client.SolveStatus{ + logger.Write(&client.SolveStatus{ Vertexes: []*client.Vertex{{ Digest: dgst, Name: message, @@ -154,7 +154,7 @@ func StartLog(message string, logger progress.Logger) func(err error) { if err != nil { errMsg = err.Error() } - logger(&client.SolveStatus{ + logger.Write(&client.SolveStatus{ Vertexes: []*client.Vertex{{ Digest: dgst, Name: message, diff --git a/pkg/cmd/buildctl/dial-stdio.go b/pkg/cmd/buildctl/dial-stdio.go index c6319906..d61a904c 100644 --- a/pkg/cmd/buildctl/dial-stdio.go +++ b/pkg/cmd/buildctl/dial-stdio.go @@ -145,7 +145,8 @@ func run() error { } state.Reporter = progresshelper.Tee(state.Reporter, status) - reportingWriter := progresshelper.NewReportingWriter(state.Reporter, build.ID, build.Token) + reportingWriter := progresshelper.NewReporter(ctx2, state.Reporter, build.ID, build.Token) + defer reportingWriter.Close() state.SummaryURL = build.BuildURL buildFinish = build.Finish diff --git a/pkg/cmd/exec/exec.go b/pkg/cmd/exec/exec.go index 867ff663..9fa4b74d 100644 --- a/pkg/cmd/exec/exec.go +++ b/pkg/cmd/exec/exec.go @@ -85,7 +85,7 @@ func NewCmdExec(dockerCli command.Cli) *cobra.Command { return buildErr } - reportingWriter := progresshelper.NewReportingWriter(printer, build.ID, build.Token) + reportingWriter := progresshelper.NewReporter(printCtx, printer, build.ID, build.Token) var builder *machine.Machine buildErr = progresshelper.WithLog(reportingWriter, fmt.Sprintf("[depot] launching %s machine", platform), func() error { @@ -99,6 +99,7 @@ func NewCmdExec(dockerCli command.Cli) *cobra.Command { }) if buildErr != nil { cancel() + reportingWriter.Close() return buildErr } @@ -115,6 +116,7 @@ func NewCmdExec(dockerCli command.Cli) *cobra.Command { return nil }) cancel() + reportingWriter.Close() listener, localAddr, buildErr := connection.LocalListener() if buildErr != nil { diff --git a/pkg/progresshelper/api.go b/pkg/progresshelper/api.go index e67baf29..9aeb53db 100644 --- a/pkg/progresshelper/api.go +++ b/pkg/progresshelper/api.go @@ -1,31 +1,10 @@ package progresshelper import ( - "context" - "time" - - "connectrpc.com/connect" - depotapi "github.com/depot/cli/pkg/api" - cliv1 "github.com/depot/cli/pkg/proto/depot/cli/v1" - cliv1connect "github.com/depot/cli/pkg/proto/depot/cli/v1/cliv1connect" controlapi "github.com/moby/buildkit/api/services/control" "github.com/moby/buildkit/client" ) -func reportToAPI(client cliv1connect.BuildServiceClient, status *client.SolveStatus, buildID, token string) { - if buildID != "" && token != "" { - req := &cliv1.ReportStatusRequest{ - BuildId: buildID, - Statuses: []*controlapi.StatusResponse{toStatusResponse(status)}, - } - - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - - _, _ = client.ReportStatus(ctx, depotapi.WithAuthentication(connect.NewRequest(req), token)) - } -} - func toStatusResponse(status *client.SolveStatus) *controlapi.StatusResponse { vertexes := make([]*controlapi.Vertex, 0, len(status.Vertexes)) for _, v := range status.Vertexes { diff --git a/pkg/progresshelper/reportinglogger.go b/pkg/progresshelper/reportinglogger.go deleted file mode 100644 index a4eadd16..00000000 --- a/pkg/progresshelper/reportinglogger.go +++ /dev/null @@ -1,15 +0,0 @@ -package progresshelper - -import ( - depotapi "github.com/depot/cli/pkg/api" - "github.com/docker/buildx/util/progress" - "github.com/moby/buildkit/client" -) - -func NewReportingLogger(w progress.Logger, buildID, token string) progress.Logger { - depotClient := depotapi.NewBuildClient() - return func(status *client.SolveStatus) { - w(status) - reportToAPI(depotClient, status, buildID, token) - } -} diff --git a/pkg/progresshelper/reportingwriter.go b/pkg/progresshelper/reportingwriter.go index f2a9664b..5fb80aab 100644 --- a/pkg/progresshelper/reportingwriter.go +++ b/pkg/progresshelper/reportingwriter.go @@ -1,32 +1,190 @@ package progresshelper import ( + "context" + "errors" + "sync" + "time" + depotapi "github.com/depot/cli/pkg/api" + "github.com/depot/cli/pkg/debuglog" + cliv1 "github.com/depot/cli/pkg/proto/depot/cli/v1" cliv1connect "github.com/depot/cli/pkg/proto/depot/cli/v1/cliv1connect" "github.com/docker/buildx/util/progress" + controlapi "github.com/moby/buildkit/api/services/control" "github.com/moby/buildkit/client" + "github.com/opencontainers/go-digest" ) -var _ progress.Writer = (*reportingWriter)(nil) +var _ progress.Writer = (*Reporter)(nil) -type reportingWriter struct { - progress.Writer +type Reporter struct { + // Using a function so we can support oth progress.Writer and progress.Logger. + writer func(status *client.SolveStatus) + validate func(digest.Digest, interface{}) bool + clear func(interface{}) buildID string token string client cliv1connect.BuildServiceClient + + ch chan *client.SolveStatus + + closed bool + mu sync.Mutex +} + +func NewReporter(ctx context.Context, w progress.Writer, buildID, token string) *Reporter { + r := &Reporter{ + writer: w.Write, + validate: w.ValidateLogSource, + clear: w.ClearLogSource, + buildID: buildID, + token: token, + client: depotapi.NewBuildClient(), + ch: make(chan *client.SolveStatus, 16384), + } + go r.Run(ctx) + + return r } -func NewReportingWriter(w progress.Writer, buildID, token string) progress.Writer { - return &reportingWriter{ - Writer: w, +func NewReporterFromLogger(ctx context.Context, w progress.Logger, buildID, token string) *Reporter { + r := &Reporter{ + writer: w, buildID: buildID, token: token, client: depotapi.NewBuildClient(), + ch: make(chan *client.SolveStatus, 16384), } + go r.Run(ctx) + + return r } -func (s *reportingWriter) Write(status *client.SolveStatus) { - s.Writer.Write(status) - reportToAPI(s.client, status, s.buildID, s.token) +func (r *Reporter) Write(status *client.SolveStatus) { + r.writer(status) + + r.mu.Lock() + defer r.mu.Unlock() + if r.closed { + return + } + + select { + case r.ch <- status: + default: + } +} + +// Make sure to call Close() after any call to Write. +func (r *Reporter) Close() { + r.mu.Lock() + r.closed = true + r.mu.Unlock() + + close(r.ch) +} + +func (r *Reporter) Run(ctx context.Context) { + sender := r.client.ReportStatusStream(ctx) + sender.RequestHeader().Add("Authorization", "Bearer "+r.token) + defer func() { + _, _ = sender.CloseAndReceive() + }() + + // Buffer 1 second before sending build timings to the server + const ( + bufferTimeout = time.Second + ) + + // I'm using a timer here because I may need to retry sending data to the server. + // With a retry I need to track what data needs to be sent, however, because I + // may not get more data for a "while" I set it on a timer to force a delivery. + ticker := time.NewTicker(bufferTimeout) + defer ticker.Stop() + statuses := []*controlapi.StatusResponse{} + + for { + select { + case status := <-r.ch: + if status == nil { + continue + } + + statuses = append(statuses, toStatusResponse(status)) + case <-ticker.C: + if len(statuses) == 0 { + ticker.Reset(bufferTimeout) + continue + } + + req := &cliv1.ReportStatusStreamRequest{ + BuildId: r.buildID, + Statuses: statuses, + } + + err := sender.Send(req) + if err == nil { + statuses = statuses[:0] + ticker.Reset(bufferTimeout) + break + } + if errors.Is(err, context.Canceled) { + // This means we got a context cancel while sending the data. + // We loop again and will go to the ctx.Done() case. + continue + } + + debuglog.Log("unable to send status: %v", err) + + // Reconnect if the connection is broken. + _, _ = sender.CloseAndReceive() + sender = r.client.ReportStatusStream(ctx) + sender.RequestHeader().Add("Authorization", "Bearer "+r.token) + ticker.Reset(bufferTimeout) + case <-ctx.Done(): + // Attempt to send any remaining statuses. This is best effort. If it fails, we'll just give up. + for status := range r.ch { + if status == nil { + continue + } + statuses = append(statuses, toStatusResponse(status)) + } + + if len(statuses) == 0 { + return + } + + _, _ = sender.CloseAndReceive() + + // Requires a new context because the previous one was canceled. + ctx2, cancel := context.WithTimeout(context.Background(), 5*time.Second) + sender = r.client.ReportStatusStream(ctx2) + sender.RequestHeader().Add("Authorization", "Bearer "+r.token) + + req := &cliv1.ReportStatusStreamRequest{ + BuildId: r.buildID, + Statuses: statuses, + } + + _ = sender.Send(req) + _, _ = sender.CloseAndReceive() + cancel() + return + } + } +} + +func (r *Reporter) ValidateLogSource(dgst digest.Digest, src interface{}) bool { + if r.validate == nil { + return true + } + return r.validate(dgst, src) +} + +func (r *Reporter) ClearLogSource(src interface{}) { + if r.clear != nil { + r.clear(src) + } } diff --git a/pkg/proto/depot/cli/v1/build.pb.go b/pkg/proto/depot/cli/v1/build.pb.go index d72ac7ef..63acdf61 100644 --- a/pkg/proto/depot/cli/v1/build.pb.go +++ b/pkg/proto/depot/cli/v1/build.pb.go @@ -31,6 +31,7 @@ const ( Command_COMMAND_BUILDX Command = 3 Command_COMMAND_DAGGER Command = 4 Command_COMMAND_EXEC Command = 5 + Command_COMMAND_FLYCTL Command = 6 ) // Enum value maps for Command. @@ -42,6 +43,7 @@ var ( 3: "COMMAND_BUILDX", 4: "COMMAND_DAGGER", 5: "COMMAND_EXEC", + 6: "COMMAND_FLYCTL", } Command_value = map[string]int32{ "COMMAND_UNSPECIFIED": 0, @@ -50,6 +52,7 @@ var ( "COMMAND_BUILDX": 3, "COMMAND_DAGGER": 4, "COMMAND_EXEC": 5, + "COMMAND_FLYCTL": 6, } ) @@ -1305,6 +1308,107 @@ func (*ReportStatusResponse) Descriptor() ([]byte, []int) { return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{16} } +type ReportStatusStreamRequest 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"` + Statuses []*control.StatusResponse `protobuf:"bytes,2,rep,name=statuses,proto3" json:"statuses,omitempty"` + StableDigests map[string]string `protobuf:"bytes,3,rep,name=stable_digests,json=stableDigests,proto3" json:"stable_digests,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` +} + +func (x *ReportStatusStreamRequest) Reset() { + *x = ReportStatusStreamRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_depot_cli_v1_build_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReportStatusStreamRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReportStatusStreamRequest) ProtoMessage() {} + +func (x *ReportStatusStreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_depot_cli_v1_build_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReportStatusStreamRequest.ProtoReflect.Descriptor instead. +func (*ReportStatusStreamRequest) Descriptor() ([]byte, []int) { + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{17} +} + +func (x *ReportStatusStreamRequest) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *ReportStatusStreamRequest) GetStatuses() []*control.StatusResponse { + if x != nil { + return x.Statuses + } + return nil +} + +func (x *ReportStatusStreamRequest) GetStableDigests() map[string]string { + if x != nil { + return x.StableDigests + } + return nil +} + +type ReportStatusStreamResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ReportStatusStreamResponse) Reset() { + *x = ReportStatusStreamResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_depot_cli_v1_build_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReportStatusStreamResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReportStatusStreamResponse) ProtoMessage() {} + +func (x *ReportStatusStreamResponse) ProtoReflect() protoreflect.Message { + mi := &file_depot_cli_v1_build_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReportStatusStreamResponse.ProtoReflect.Descriptor instead. +func (*ReportStatusStreamResponse) Descriptor() ([]byte, []int) { + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{18} +} + type ListBuildsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1321,7 +1425,7 @@ type ListBuildsRequest struct { func (x *ListBuildsRequest) Reset() { *x = ListBuildsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[17] + mi := &file_depot_cli_v1_build_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1334,7 +1438,7 @@ func (x *ListBuildsRequest) String() string { func (*ListBuildsRequest) ProtoMessage() {} func (x *ListBuildsRequest) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[17] + mi := &file_depot_cli_v1_build_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1347,7 +1451,7 @@ func (x *ListBuildsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBuildsRequest.ProtoReflect.Descriptor instead. func (*ListBuildsRequest) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{17} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{19} } func (x *ListBuildsRequest) GetProjectId() string { @@ -1384,7 +1488,7 @@ type ListBuildsResponse struct { func (x *ListBuildsResponse) Reset() { *x = ListBuildsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[18] + mi := &file_depot_cli_v1_build_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1397,7 +1501,7 @@ func (x *ListBuildsResponse) String() string { func (*ListBuildsResponse) ProtoMessage() {} func (x *ListBuildsResponse) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[18] + mi := &file_depot_cli_v1_build_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1410,7 +1514,7 @@ func (x *ListBuildsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBuildsResponse.ProtoReflect.Descriptor instead. func (*ListBuildsResponse) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{18} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{20} } func (x *ListBuildsResponse) GetBuilds() []*Build { @@ -1442,7 +1546,7 @@ type Build struct { func (x *Build) Reset() { *x = Build{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[19] + mi := &file_depot_cli_v1_build_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1455,7 +1559,7 @@ func (x *Build) String() string { func (*Build) ProtoMessage() {} func (x *Build) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[19] + mi := &file_depot_cli_v1_build_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1468,7 +1572,7 @@ func (x *Build) ProtoReflect() protoreflect.Message { // Deprecated: Use Build.ProtoReflect.Descriptor instead. func (*Build) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{19} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{21} } func (x *Build) GetId() string { @@ -1511,7 +1615,7 @@ type PageToken struct { func (x *PageToken) Reset() { *x = PageToken{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[20] + mi := &file_depot_cli_v1_build_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1524,7 +1628,7 @@ func (x *PageToken) String() string { func (*PageToken) ProtoMessage() {} func (x *PageToken) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[20] + mi := &file_depot_cli_v1_build_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1537,7 +1641,7 @@ func (x *PageToken) ProtoReflect() protoreflect.Message { // Deprecated: Use PageToken.ProtoReflect.Descriptor instead. func (*PageToken) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{20} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{22} } func (x *PageToken) GetProjectId() string { @@ -1566,7 +1670,7 @@ type ReportBuildContextRequest struct { func (x *ReportBuildContextRequest) Reset() { *x = ReportBuildContextRequest{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[21] + mi := &file_depot_cli_v1_build_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1579,7 +1683,7 @@ func (x *ReportBuildContextRequest) String() string { func (*ReportBuildContextRequest) ProtoMessage() {} func (x *ReportBuildContextRequest) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[21] + mi := &file_depot_cli_v1_build_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1592,7 +1696,7 @@ func (x *ReportBuildContextRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportBuildContextRequest.ProtoReflect.Descriptor instead. func (*ReportBuildContextRequest) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{21} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{23} } func (x *ReportBuildContextRequest) GetBuildId() string { @@ -1622,7 +1726,7 @@ type Dockerfile struct { func (x *Dockerfile) Reset() { *x = Dockerfile{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[22] + mi := &file_depot_cli_v1_build_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1635,7 +1739,7 @@ func (x *Dockerfile) String() string { func (*Dockerfile) ProtoMessage() {} func (x *Dockerfile) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[22] + mi := &file_depot_cli_v1_build_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1648,7 +1752,7 @@ func (x *Dockerfile) ProtoReflect() protoreflect.Message { // Deprecated: Use Dockerfile.ProtoReflect.Descriptor instead. func (*Dockerfile) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{22} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{24} } func (x *Dockerfile) GetTarget() string { @@ -1681,7 +1785,7 @@ type ReportBuildContextResponse struct { func (x *ReportBuildContextResponse) Reset() { *x = ReportBuildContextResponse{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[23] + mi := &file_depot_cli_v1_build_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1694,7 +1798,7 @@ func (x *ReportBuildContextResponse) String() string { func (*ReportBuildContextResponse) ProtoMessage() {} func (x *ReportBuildContextResponse) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[23] + mi := &file_depot_cli_v1_build_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1707,7 +1811,7 @@ func (x *ReportBuildContextResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReportBuildContextResponse.ProtoReflect.Descriptor instead. func (*ReportBuildContextResponse) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{23} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{25} } type GetPullInfoRequest struct { @@ -1721,7 +1825,7 @@ type GetPullInfoRequest struct { func (x *GetPullInfoRequest) Reset() { *x = GetPullInfoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[24] + mi := &file_depot_cli_v1_build_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1734,7 +1838,7 @@ func (x *GetPullInfoRequest) String() string { func (*GetPullInfoRequest) ProtoMessage() {} func (x *GetPullInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[24] + mi := &file_depot_cli_v1_build_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1747,7 +1851,7 @@ func (x *GetPullInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPullInfoRequest.ProtoReflect.Descriptor instead. func (*GetPullInfoRequest) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{24} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{26} } func (x *GetPullInfoRequest) GetBuildId() string { @@ -1771,7 +1875,7 @@ type GetPullInfoResponse struct { func (x *GetPullInfoResponse) Reset() { *x = GetPullInfoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[25] + mi := &file_depot_cli_v1_build_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1784,7 +1888,7 @@ func (x *GetPullInfoResponse) String() string { func (*GetPullInfoResponse) ProtoMessage() {} func (x *GetPullInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[25] + mi := &file_depot_cli_v1_build_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1797,7 +1901,7 @@ func (x *GetPullInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPullInfoResponse.ProtoReflect.Descriptor instead. func (*GetPullInfoResponse) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{25} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{27} } func (x *GetPullInfoResponse) GetReference() string { @@ -1840,7 +1944,7 @@ type GetPullTokenRequest struct { func (x *GetPullTokenRequest) Reset() { *x = GetPullTokenRequest{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[26] + mi := &file_depot_cli_v1_build_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1853,7 +1957,7 @@ func (x *GetPullTokenRequest) String() string { func (*GetPullTokenRequest) ProtoMessage() {} func (x *GetPullTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[26] + mi := &file_depot_cli_v1_build_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1866,7 +1970,7 @@ func (x *GetPullTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPullTokenRequest.ProtoReflect.Descriptor instead. func (*GetPullTokenRequest) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{26} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{28} } func (x *GetPullTokenRequest) GetProjectId() string { @@ -1894,7 +1998,7 @@ type GetPullTokenResponse struct { func (x *GetPullTokenResponse) Reset() { *x = GetPullTokenResponse{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[27] + mi := &file_depot_cli_v1_build_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1907,7 +2011,7 @@ func (x *GetPullTokenResponse) String() string { func (*GetPullTokenResponse) ProtoMessage() {} func (x *GetPullTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[27] + mi := &file_depot_cli_v1_build_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1920,7 +2024,7 @@ func (x *GetPullTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPullTokenResponse.ProtoReflect.Descriptor instead. func (*GetPullTokenResponse) Descriptor() ([]byte, []int) { - return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{27} + return file_depot_cli_v1_build_proto_rawDescGZIP(), []int{29} } func (x *GetPullTokenResponse) GetToken() string { @@ -1945,7 +2049,7 @@ type CreateBuildRequest_RequiredEngine struct { func (x *CreateBuildRequest_RequiredEngine) Reset() { *x = CreateBuildRequest_RequiredEngine{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[28] + mi := &file_depot_cli_v1_build_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1958,7 +2062,7 @@ func (x *CreateBuildRequest_RequiredEngine) String() string { func (*CreateBuildRequest_RequiredEngine) ProtoMessage() {} func (x *CreateBuildRequest_RequiredEngine) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[28] + mi := &file_depot_cli_v1_build_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2020,7 +2124,7 @@ type CreateBuildRequest_RequiredEngine_BuildKitEngine struct { func (x *CreateBuildRequest_RequiredEngine_BuildKitEngine) Reset() { *x = CreateBuildRequest_RequiredEngine_BuildKitEngine{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[29] + mi := &file_depot_cli_v1_build_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2033,7 +2137,7 @@ func (x *CreateBuildRequest_RequiredEngine_BuildKitEngine) String() string { func (*CreateBuildRequest_RequiredEngine_BuildKitEngine) ProtoMessage() {} func (x *CreateBuildRequest_RequiredEngine_BuildKitEngine) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[29] + mi := &file_depot_cli_v1_build_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2060,7 +2164,7 @@ type CreateBuildRequest_RequiredEngine_DaggerEngine struct { func (x *CreateBuildRequest_RequiredEngine_DaggerEngine) Reset() { *x = CreateBuildRequest_RequiredEngine_DaggerEngine{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[30] + mi := &file_depot_cli_v1_build_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2073,7 +2177,7 @@ func (x *CreateBuildRequest_RequiredEngine_DaggerEngine) String() string { func (*CreateBuildRequest_RequiredEngine_DaggerEngine) ProtoMessage() {} func (x *CreateBuildRequest_RequiredEngine_DaggerEngine) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[30] + mi := &file_depot_cli_v1_build_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2107,7 +2211,7 @@ type CreateBuildResponse_Profiler struct { func (x *CreateBuildResponse_Profiler) Reset() { *x = CreateBuildResponse_Profiler{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[32] + mi := &file_depot_cli_v1_build_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2120,7 +2224,7 @@ func (x *CreateBuildResponse_Profiler) String() string { func (*CreateBuildResponse_Profiler) ProtoMessage() {} func (x *CreateBuildResponse_Profiler) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[32] + mi := &file_depot_cli_v1_build_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2155,7 +2259,7 @@ type CreateBuildResponse_Credential struct { func (x *CreateBuildResponse_Credential) Reset() { *x = CreateBuildResponse_Credential{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[33] + mi := &file_depot_cli_v1_build_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2168,7 +2272,7 @@ func (x *CreateBuildResponse_Credential) String() string { func (*CreateBuildResponse_Credential) ProtoMessage() {} func (x *CreateBuildResponse_Credential) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[33] + mi := &file_depot_cli_v1_build_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2210,7 +2314,7 @@ type CreateBuildResponse_Tag struct { func (x *CreateBuildResponse_Tag) Reset() { *x = CreateBuildResponse_Tag{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[34] + mi := &file_depot_cli_v1_build_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2223,7 +2327,7 @@ func (x *CreateBuildResponse_Tag) String() string { func (*CreateBuildResponse_Tag) ProtoMessage() {} func (x *CreateBuildResponse_Tag) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[34] + mi := &file_depot_cli_v1_build_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2262,7 +2366,7 @@ type FinishBuildRequest_BuildSuccess struct { func (x *FinishBuildRequest_BuildSuccess) Reset() { *x = FinishBuildRequest_BuildSuccess{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[35] + mi := &file_depot_cli_v1_build_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2275,7 +2379,7 @@ func (x *FinishBuildRequest_BuildSuccess) String() string { func (*FinishBuildRequest_BuildSuccess) ProtoMessage() {} func (x *FinishBuildRequest_BuildSuccess) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[35] + mi := &file_depot_cli_v1_build_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2302,7 +2406,7 @@ type FinishBuildRequest_BuildError struct { func (x *FinishBuildRequest_BuildError) Reset() { *x = FinishBuildRequest_BuildError{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[36] + mi := &file_depot_cli_v1_build_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2315,7 +2419,7 @@ func (x *FinishBuildRequest_BuildError) String() string { func (*FinishBuildRequest_BuildError) ProtoMessage() {} func (x *FinishBuildRequest_BuildError) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[36] + mi := &file_depot_cli_v1_build_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2347,7 +2451,7 @@ type FinishBuildRequest_BuildCanceled struct { func (x *FinishBuildRequest_BuildCanceled) Reset() { *x = FinishBuildRequest_BuildCanceled{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[37] + mi := &file_depot_cli_v1_build_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2360,7 +2464,7 @@ func (x *FinishBuildRequest_BuildCanceled) String() string { func (*FinishBuildRequest_BuildCanceled) ProtoMessage() {} func (x *FinishBuildRequest_BuildCanceled) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[37] + mi := &file_depot_cli_v1_build_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2387,7 +2491,7 @@ type GetBuildKitConnectionResponse_PendingConnection struct { func (x *GetBuildKitConnectionResponse_PendingConnection) Reset() { *x = GetBuildKitConnectionResponse_PendingConnection{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[38] + mi := &file_depot_cli_v1_build_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2400,7 +2504,7 @@ func (x *GetBuildKitConnectionResponse_PendingConnection) String() string { func (*GetBuildKitConnectionResponse_PendingConnection) ProtoMessage() {} func (x *GetBuildKitConnectionResponse_PendingConnection) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[38] + mi := &file_depot_cli_v1_build_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2442,7 +2546,7 @@ type GetBuildKitConnectionResponse_ActiveConnection struct { func (x *GetBuildKitConnectionResponse_ActiveConnection) Reset() { *x = GetBuildKitConnectionResponse_ActiveConnection{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[39] + mi := &file_depot_cli_v1_build_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2455,7 +2559,7 @@ func (x *GetBuildKitConnectionResponse_ActiveConnection) String() string { func (*GetBuildKitConnectionResponse_ActiveConnection) ProtoMessage() {} func (x *GetBuildKitConnectionResponse_ActiveConnection) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[39] + mi := &file_depot_cli_v1_build_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2547,7 +2651,7 @@ type GetBuildKitConnectionResponse_ActiveConnection_Identity struct { func (x *GetBuildKitConnectionResponse_ActiveConnection_Identity) Reset() { *x = GetBuildKitConnectionResponse_ActiveConnection_Identity{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[40] + mi := &file_depot_cli_v1_build_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2560,7 +2664,7 @@ func (x *GetBuildKitConnectionResponse_ActiveConnection_Identity) String() strin func (*GetBuildKitConnectionResponse_ActiveConnection_Identity) ProtoMessage() {} func (x *GetBuildKitConnectionResponse_ActiveConnection_Identity) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[40] + mi := &file_depot_cli_v1_build_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2585,7 +2689,7 @@ type GetBuildKitConnectionResponse_ActiveConnection_Gzip struct { func (x *GetBuildKitConnectionResponse_ActiveConnection_Gzip) Reset() { *x = GetBuildKitConnectionResponse_ActiveConnection_Gzip{} if protoimpl.UnsafeEnabled { - mi := &file_depot_cli_v1_build_proto_msgTypes[41] + mi := &file_depot_cli_v1_build_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2598,7 +2702,7 @@ func (x *GetBuildKitConnectionResponse_ActiveConnection_Gzip) String() string { func (*GetBuildKitConnectionResponse_ActiveConnection_Gzip) ProtoMessage() {} func (x *GetBuildKitConnectionResponse_ActiveConnection_Gzip) ProtoReflect() protoreflect.Message { - mi := &file_depot_cli_v1_build_proto_msgTypes[41] + mi := &file_depot_cli_v1_build_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2862,172 +2966,200 @@ var file_depot_cli_v1_build_proto_rawDesc = []byte{ 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, - 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, - 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x69, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, - 0x06, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, - 0x6c, 0x64, 0x52, 0x06, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x22, 0xc2, 0x01, 0x0a, 0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x06, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x64, - 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, - 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 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, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x66, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x0a, 0x66, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x22, 0x6e, 0x0a, 0x09, 0x50, 0x61, 0x67, 0x65, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 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, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x72, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 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, - 0x3a, 0x0a, 0x0b, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0b, - 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x0a, 0x44, - 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x75, - 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0xa1, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, - 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, - 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x75, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x6f, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, - 0x5f, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x2a, 0x81, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x17, 0x0a, - 0x13, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, - 0x44, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, - 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x42, 0x41, 0x4b, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, - 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x58, 0x10, 0x03, 0x12, - 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x44, 0x41, 0x47, 0x47, 0x45, - 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x45, - 0x58, 0x45, 0x43, 0x10, 0x05, 0x2a, 0x6b, 0x0a, 0x0f, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x49, 0x4c, - 0x44, 0x45, 0x52, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x55, - 0x49, 0x4c, 0x44, 0x45, 0x52, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x41, - 0x4d, 0x44, 0x36, 0x34, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x45, - 0x52, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x41, 0x52, 0x4d, 0x36, 0x34, - 0x10, 0x02, 0x2a, 0x94, 0x01, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x18, 0x0a, 0x14, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x55, - 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, - 0x48, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, - 0x0a, 0x15, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, - 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0xa6, 0x07, 0x0a, 0x0c, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x0b, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x20, 0x2e, 0x64, 0x65, 0x70, 0x6f, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x99, 0x02, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x3c, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x6f, 0x62, 0x79, 0x2e, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x6b, + 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x12, 0x61, + 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x53, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, + 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x6e, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x22, 0x69, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x62, 0x75, 0x69, 0x6c, 0x64, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x06, 0x62, 0x75, + 0x69, 0x6c, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xc2, 0x01, 0x0a, + 0x05, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, + 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 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, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x5f, 0x61, 0x74, 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, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, + 0x74, 0x22, 0x6e, 0x0a, 0x09, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, + 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x02, 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, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x22, 0x72, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0x3a, 0x0a, 0x0b, 0x64, 0x6f, 0x63, + 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, + 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x64, 0x6f, 0x63, 0x6b, 0x65, 0x72, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x0a, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, + 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x66, + 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, + 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 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, 0xa1, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x75, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, + 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x22, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x1e, 0x0a, 0x08, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, + 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x22, 0x2c, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2a, 0x95, 0x01, 0x0a, 0x07, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, 0x4d, 0x41, + 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x11, 0x0a, 0x0d, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x42, 0x55, 0x49, 0x4c, + 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x42, + 0x41, 0x4b, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, + 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x58, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, + 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x44, 0x41, 0x47, 0x47, 0x45, 0x52, 0x10, 0x04, 0x12, 0x10, 0x0a, + 0x0c, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x10, 0x05, 0x12, + 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x46, 0x4c, 0x59, 0x43, 0x54, + 0x4c, 0x10, 0x06, 0x2a, 0x6b, 0x0a, 0x0f, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x65, 0x72, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x45, + 0x52, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x55, 0x49, 0x4c, + 0x44, 0x45, 0x52, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x41, 0x4d, 0x44, + 0x36, 0x34, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x45, 0x52, 0x5f, + 0x50, 0x4c, 0x41, 0x54, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x41, 0x52, 0x4d, 0x36, 0x34, 0x10, 0x02, + 0x2a, 0x94, 0x01, 0x0a, 0x0b, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, + 0x0a, 0x14, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, + 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x55, 0x49, 0x4c, + 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, + 0x42, 0x55, 0x49, 0x4c, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, + 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0x91, 0x08, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x20, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x65, - 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, - 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x20, 0x2e, + 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x0b, + 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x20, 0x2e, 0x64, 0x65, + 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x6e, - 0x69, 0x73, 0x68, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x21, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, - 0x69, 0x6e, 0x69, 0x73, 0x68, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x70, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x69, - 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x64, 0x65, - 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x4b, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, - 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4b, - 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, - 0x69, 0x6c, 0x64, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x26, 0x2e, 0x64, 0x65, 0x70, 0x6f, - 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x75, 0x69, 0x6c, 0x64, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x48, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x65, - 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, - 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x12, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x27, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x65, 0x70, + 0x69, 0x73, 0x68, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x70, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x69, 0x74, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x2e, 0x64, 0x65, 0x70, 0x6f, + 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x4b, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4b, 0x69, 0x74, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x64, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, + 0x64, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x26, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x27, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x22, 0x2e, 0x64, 0x65, 0x70, 0x6f, + 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x21, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x69, 0x0a, 0x12, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, + 0x27, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, + 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x28, 0x01, 0x12, 0x67, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, + 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x27, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, - 0x64, 0x73, 0x12, 0x1f, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x75, - 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x20, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, - 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, - 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x64, 0x65, - 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, - 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, - 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x42, 0xa3, 0x01, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, - 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x70, 0x6b, 0x67, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, - 0x76, 0x31, 0x3b, 0x63, 0x6c, 0x69, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x43, 0x58, 0xaa, 0x02, - 0x0c, 0x44, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x43, 0x6c, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, - 0x44, 0x65, 0x70, 0x6f, 0x74, 0x5c, 0x43, 0x6c, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x44, - 0x65, 0x70, 0x6f, 0x74, 0x5c, 0x43, 0x6c, 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0e, 0x44, 0x65, 0x70, 0x6f, 0x74, 0x3a, - 0x3a, 0x43, 0x6c, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x12, 0x1f, 0x2e, 0x64, 0x65, + 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, + 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x52, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x20, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, + 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xa3, 0x01, 0x0a, 0x10, + 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x65, 0x70, 0x6f, 0x74, 0x2e, 0x63, 0x6c, 0x69, 0x2e, 0x76, 0x31, + 0x42, 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x70, 0x6f, 0x74, + 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x64, + 0x65, 0x70, 0x6f, 0x74, 0x2f, 0x63, 0x6c, 0x69, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6c, 0x69, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x44, 0x43, 0x58, 0xaa, 0x02, 0x0c, 0x44, 0x65, 0x70, 0x6f, 0x74, 0x2e, + 0x43, 0x6c, 0x69, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0c, 0x44, 0x65, 0x70, 0x6f, 0x74, 0x5c, 0x43, + 0x6c, 0x69, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x18, 0x44, 0x65, 0x70, 0x6f, 0x74, 0x5c, 0x43, 0x6c, + 0x69, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x0e, 0x44, 0x65, 0x70, 0x6f, 0x74, 0x3a, 0x3a, 0x43, 0x6c, 0x69, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3043,7 +3175,7 @@ func file_depot_cli_v1_build_proto_rawDescGZIP() []byte { } var file_depot_cli_v1_build_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_depot_cli_v1_build_proto_msgTypes = make([]protoimpl.MessageInfo, 43) +var file_depot_cli_v1_build_proto_msgTypes = make([]protoimpl.MessageInfo, 46) var file_depot_cli_v1_build_proto_goTypes = []interface{}{ (Command)(0), // 0: depot.cli.v1.Command (BuilderPlatform)(0), // 1: depot.cli.v1.BuilderPlatform @@ -3065,95 +3197,102 @@ var file_depot_cli_v1_build_proto_goTypes = []interface{}{ (*BuildStep)(nil), // 17: depot.cli.v1.BuildStep (*ReportStatusRequest)(nil), // 18: depot.cli.v1.ReportStatusRequest (*ReportStatusResponse)(nil), // 19: depot.cli.v1.ReportStatusResponse - (*ListBuildsRequest)(nil), // 20: depot.cli.v1.ListBuildsRequest - (*ListBuildsResponse)(nil), // 21: depot.cli.v1.ListBuildsResponse - (*Build)(nil), // 22: depot.cli.v1.Build - (*PageToken)(nil), // 23: depot.cli.v1.PageToken - (*ReportBuildContextRequest)(nil), // 24: depot.cli.v1.ReportBuildContextRequest - (*Dockerfile)(nil), // 25: depot.cli.v1.Dockerfile - (*ReportBuildContextResponse)(nil), // 26: depot.cli.v1.ReportBuildContextResponse - (*GetPullInfoRequest)(nil), // 27: depot.cli.v1.GetPullInfoRequest - (*GetPullInfoResponse)(nil), // 28: depot.cli.v1.GetPullInfoResponse - (*GetPullTokenRequest)(nil), // 29: depot.cli.v1.GetPullTokenRequest - (*GetPullTokenResponse)(nil), // 30: depot.cli.v1.GetPullTokenResponse - (*CreateBuildRequest_RequiredEngine)(nil), // 31: depot.cli.v1.CreateBuildRequest.RequiredEngine - (*CreateBuildRequest_RequiredEngine_BuildKitEngine)(nil), // 32: depot.cli.v1.CreateBuildRequest.RequiredEngine.BuildKitEngine - (*CreateBuildRequest_RequiredEngine_DaggerEngine)(nil), // 33: depot.cli.v1.CreateBuildRequest.RequiredEngine.DaggerEngine - nil, // 34: depot.cli.v1.BuildOutput.AttributesEntry - (*CreateBuildResponse_Profiler)(nil), // 35: depot.cli.v1.CreateBuildResponse.Profiler - (*CreateBuildResponse_Credential)(nil), // 36: depot.cli.v1.CreateBuildResponse.Credential - (*CreateBuildResponse_Tag)(nil), // 37: depot.cli.v1.CreateBuildResponse.Tag - (*FinishBuildRequest_BuildSuccess)(nil), // 38: depot.cli.v1.FinishBuildRequest.BuildSuccess - (*FinishBuildRequest_BuildError)(nil), // 39: depot.cli.v1.FinishBuildRequest.BuildError - (*FinishBuildRequest_BuildCanceled)(nil), // 40: depot.cli.v1.FinishBuildRequest.BuildCanceled - (*GetBuildKitConnectionResponse_PendingConnection)(nil), // 41: depot.cli.v1.GetBuildKitConnectionResponse.PendingConnection - (*GetBuildKitConnectionResponse_ActiveConnection)(nil), // 42: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection - (*GetBuildKitConnectionResponse_ActiveConnection_Identity)(nil), // 43: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.Identity - (*GetBuildKitConnectionResponse_ActiveConnection_Gzip)(nil), // 44: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.Gzip - nil, // 45: depot.cli.v1.ReportStatusRequest.StableDigestsEntry - (*timestamppb.Timestamp)(nil), // 46: google.protobuf.Timestamp - (*control.StatusResponse)(nil), // 47: moby.buildkit.v1.StatusResponse + (*ReportStatusStreamRequest)(nil), // 20: depot.cli.v1.ReportStatusStreamRequest + (*ReportStatusStreamResponse)(nil), // 21: depot.cli.v1.ReportStatusStreamResponse + (*ListBuildsRequest)(nil), // 22: depot.cli.v1.ListBuildsRequest + (*ListBuildsResponse)(nil), // 23: depot.cli.v1.ListBuildsResponse + (*Build)(nil), // 24: depot.cli.v1.Build + (*PageToken)(nil), // 25: depot.cli.v1.PageToken + (*ReportBuildContextRequest)(nil), // 26: depot.cli.v1.ReportBuildContextRequest + (*Dockerfile)(nil), // 27: depot.cli.v1.Dockerfile + (*ReportBuildContextResponse)(nil), // 28: depot.cli.v1.ReportBuildContextResponse + (*GetPullInfoRequest)(nil), // 29: depot.cli.v1.GetPullInfoRequest + (*GetPullInfoResponse)(nil), // 30: depot.cli.v1.GetPullInfoResponse + (*GetPullTokenRequest)(nil), // 31: depot.cli.v1.GetPullTokenRequest + (*GetPullTokenResponse)(nil), // 32: depot.cli.v1.GetPullTokenResponse + (*CreateBuildRequest_RequiredEngine)(nil), // 33: depot.cli.v1.CreateBuildRequest.RequiredEngine + (*CreateBuildRequest_RequiredEngine_BuildKitEngine)(nil), // 34: depot.cli.v1.CreateBuildRequest.RequiredEngine.BuildKitEngine + (*CreateBuildRequest_RequiredEngine_DaggerEngine)(nil), // 35: depot.cli.v1.CreateBuildRequest.RequiredEngine.DaggerEngine + nil, // 36: depot.cli.v1.BuildOutput.AttributesEntry + (*CreateBuildResponse_Profiler)(nil), // 37: depot.cli.v1.CreateBuildResponse.Profiler + (*CreateBuildResponse_Credential)(nil), // 38: depot.cli.v1.CreateBuildResponse.Credential + (*CreateBuildResponse_Tag)(nil), // 39: depot.cli.v1.CreateBuildResponse.Tag + (*FinishBuildRequest_BuildSuccess)(nil), // 40: depot.cli.v1.FinishBuildRequest.BuildSuccess + (*FinishBuildRequest_BuildError)(nil), // 41: depot.cli.v1.FinishBuildRequest.BuildError + (*FinishBuildRequest_BuildCanceled)(nil), // 42: depot.cli.v1.FinishBuildRequest.BuildCanceled + (*GetBuildKitConnectionResponse_PendingConnection)(nil), // 43: depot.cli.v1.GetBuildKitConnectionResponse.PendingConnection + (*GetBuildKitConnectionResponse_ActiveConnection)(nil), // 44: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection + (*GetBuildKitConnectionResponse_ActiveConnection_Identity)(nil), // 45: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.Identity + (*GetBuildKitConnectionResponse_ActiveConnection_Gzip)(nil), // 46: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.Gzip + nil, // 47: depot.cli.v1.ReportStatusRequest.StableDigestsEntry + nil, // 48: depot.cli.v1.ReportStatusStreamRequest.StableDigestsEntry + (*timestamppb.Timestamp)(nil), // 49: google.protobuf.Timestamp + (*control.StatusResponse)(nil), // 50: moby.buildkit.v1.StatusResponse } var file_depot_cli_v1_build_proto_depIdxs = []int32{ 4, // 0: depot.cli.v1.CreateBuildRequest.options:type_name -> depot.cli.v1.BuildOptions - 31, // 1: depot.cli.v1.CreateBuildRequest.required_engine:type_name -> depot.cli.v1.CreateBuildRequest.RequiredEngine + 33, // 1: depot.cli.v1.CreateBuildRequest.required_engine:type_name -> depot.cli.v1.CreateBuildRequest.RequiredEngine 0, // 2: depot.cli.v1.BuildOptions.command:type_name -> depot.cli.v1.Command 5, // 3: depot.cli.v1.BuildOptions.outputs:type_name -> depot.cli.v1.BuildOutput - 34, // 4: depot.cli.v1.BuildOutput.attributes:type_name -> depot.cli.v1.BuildOutput.AttributesEntry + 36, // 4: depot.cli.v1.BuildOutput.attributes:type_name -> depot.cli.v1.BuildOutput.AttributesEntry 7, // 5: depot.cli.v1.CreateBuildResponse.registry:type_name -> depot.cli.v1.Registry - 35, // 6: depot.cli.v1.CreateBuildResponse.profiler:type_name -> depot.cli.v1.CreateBuildResponse.Profiler - 36, // 7: depot.cli.v1.CreateBuildResponse.additional_credentials:type_name -> depot.cli.v1.CreateBuildResponse.Credential - 37, // 8: depot.cli.v1.CreateBuildResponse.additional_tags:type_name -> depot.cli.v1.CreateBuildResponse.Tag - 38, // 9: depot.cli.v1.FinishBuildRequest.success:type_name -> depot.cli.v1.FinishBuildRequest.BuildSuccess - 39, // 10: depot.cli.v1.FinishBuildRequest.error:type_name -> depot.cli.v1.FinishBuildRequest.BuildError - 40, // 11: depot.cli.v1.FinishBuildRequest.canceled:type_name -> depot.cli.v1.FinishBuildRequest.BuildCanceled + 37, // 6: depot.cli.v1.CreateBuildResponse.profiler:type_name -> depot.cli.v1.CreateBuildResponse.Profiler + 38, // 7: depot.cli.v1.CreateBuildResponse.additional_credentials:type_name -> depot.cli.v1.CreateBuildResponse.Credential + 39, // 8: depot.cli.v1.CreateBuildResponse.additional_tags:type_name -> depot.cli.v1.CreateBuildResponse.Tag + 40, // 9: depot.cli.v1.FinishBuildRequest.success:type_name -> depot.cli.v1.FinishBuildRequest.BuildSuccess + 41, // 10: depot.cli.v1.FinishBuildRequest.error:type_name -> depot.cli.v1.FinishBuildRequest.BuildError + 42, // 11: depot.cli.v1.FinishBuildRequest.canceled:type_name -> depot.cli.v1.FinishBuildRequest.BuildCanceled 1, // 12: depot.cli.v1.GetBuildKitConnectionRequest.platform:type_name -> depot.cli.v1.BuilderPlatform - 41, // 13: depot.cli.v1.GetBuildKitConnectionResponse.pending:type_name -> depot.cli.v1.GetBuildKitConnectionResponse.PendingConnection - 42, // 14: depot.cli.v1.GetBuildKitConnectionResponse.active:type_name -> depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection + 43, // 13: depot.cli.v1.GetBuildKitConnectionResponse.pending:type_name -> depot.cli.v1.GetBuildKitConnectionResponse.PendingConnection + 44, // 14: depot.cli.v1.GetBuildKitConnectionResponse.active:type_name -> depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection 1, // 15: depot.cli.v1.ReportBuildHealthRequest.platform:type_name -> depot.cli.v1.BuilderPlatform - 46, // 16: depot.cli.v1.ReportBuildHealthResponse.cancels_at:type_name -> google.protobuf.Timestamp + 49, // 16: depot.cli.v1.ReportBuildHealthResponse.cancels_at:type_name -> google.protobuf.Timestamp 17, // 17: depot.cli.v1.ReportTimingsRequest.build_steps:type_name -> depot.cli.v1.BuildStep - 46, // 18: depot.cli.v1.BuildStep.start_time:type_name -> google.protobuf.Timestamp - 47, // 19: depot.cli.v1.ReportStatusRequest.statuses:type_name -> moby.buildkit.v1.StatusResponse - 45, // 20: depot.cli.v1.ReportStatusRequest.stable_digests:type_name -> depot.cli.v1.ReportStatusRequest.StableDigestsEntry - 22, // 21: depot.cli.v1.ListBuildsResponse.builds:type_name -> depot.cli.v1.Build - 2, // 22: depot.cli.v1.Build.status:type_name -> depot.cli.v1.BuildStatus - 46, // 23: depot.cli.v1.Build.created_at:type_name -> google.protobuf.Timestamp - 46, // 24: depot.cli.v1.Build.finished_at:type_name -> google.protobuf.Timestamp - 46, // 25: depot.cli.v1.PageToken.last_created_at:type_name -> google.protobuf.Timestamp - 25, // 26: depot.cli.v1.ReportBuildContextRequest.dockerfiles:type_name -> depot.cli.v1.Dockerfile - 4, // 27: depot.cli.v1.GetPullInfoResponse.options:type_name -> depot.cli.v1.BuildOptions - 32, // 28: depot.cli.v1.CreateBuildRequest.RequiredEngine.buildkit:type_name -> depot.cli.v1.CreateBuildRequest.RequiredEngine.BuildKitEngine - 33, // 29: depot.cli.v1.CreateBuildRequest.RequiredEngine.dagger:type_name -> depot.cli.v1.CreateBuildRequest.RequiredEngine.DaggerEngine - 12, // 30: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.cert:type_name -> depot.cli.v1.Cert - 12, // 31: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.ca_cert:type_name -> depot.cli.v1.Cert - 43, // 32: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.identity:type_name -> depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.Identity - 44, // 33: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.gzip:type_name -> depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.Gzip - 3, // 34: depot.cli.v1.BuildService.CreateBuild:input_type -> depot.cli.v1.CreateBuildRequest - 8, // 35: depot.cli.v1.BuildService.FinishBuild:input_type -> depot.cli.v1.FinishBuildRequest - 10, // 36: depot.cli.v1.BuildService.GetBuildKitConnection:input_type -> depot.cli.v1.GetBuildKitConnectionRequest - 13, // 37: depot.cli.v1.BuildService.ReportBuildHealth:input_type -> depot.cli.v1.ReportBuildHealthRequest - 15, // 38: depot.cli.v1.BuildService.ReportTimings:input_type -> depot.cli.v1.ReportTimingsRequest - 18, // 39: depot.cli.v1.BuildService.ReportStatus:input_type -> depot.cli.v1.ReportStatusRequest - 24, // 40: depot.cli.v1.BuildService.ReportBuildContext:input_type -> depot.cli.v1.ReportBuildContextRequest - 20, // 41: depot.cli.v1.BuildService.ListBuilds:input_type -> depot.cli.v1.ListBuildsRequest - 27, // 42: depot.cli.v1.BuildService.GetPullInfo:input_type -> depot.cli.v1.GetPullInfoRequest - 29, // 43: depot.cli.v1.BuildService.GetPullToken:input_type -> depot.cli.v1.GetPullTokenRequest - 6, // 44: depot.cli.v1.BuildService.CreateBuild:output_type -> depot.cli.v1.CreateBuildResponse - 9, // 45: depot.cli.v1.BuildService.FinishBuild:output_type -> depot.cli.v1.FinishBuildResponse - 11, // 46: depot.cli.v1.BuildService.GetBuildKitConnection:output_type -> depot.cli.v1.GetBuildKitConnectionResponse - 14, // 47: depot.cli.v1.BuildService.ReportBuildHealth:output_type -> depot.cli.v1.ReportBuildHealthResponse - 16, // 48: depot.cli.v1.BuildService.ReportTimings:output_type -> depot.cli.v1.ReportTimingsResponse - 19, // 49: depot.cli.v1.BuildService.ReportStatus:output_type -> depot.cli.v1.ReportStatusResponse - 26, // 50: depot.cli.v1.BuildService.ReportBuildContext:output_type -> depot.cli.v1.ReportBuildContextResponse - 21, // 51: depot.cli.v1.BuildService.ListBuilds:output_type -> depot.cli.v1.ListBuildsResponse - 28, // 52: depot.cli.v1.BuildService.GetPullInfo:output_type -> depot.cli.v1.GetPullInfoResponse - 30, // 53: depot.cli.v1.BuildService.GetPullToken:output_type -> depot.cli.v1.GetPullTokenResponse - 44, // [44:54] is the sub-list for method output_type - 34, // [34:44] is the sub-list for method input_type - 34, // [34:34] is the sub-list for extension type_name - 34, // [34:34] is the sub-list for extension extendee - 0, // [0:34] is the sub-list for field type_name + 49, // 18: depot.cli.v1.BuildStep.start_time:type_name -> google.protobuf.Timestamp + 50, // 19: depot.cli.v1.ReportStatusRequest.statuses:type_name -> moby.buildkit.v1.StatusResponse + 47, // 20: depot.cli.v1.ReportStatusRequest.stable_digests:type_name -> depot.cli.v1.ReportStatusRequest.StableDigestsEntry + 50, // 21: depot.cli.v1.ReportStatusStreamRequest.statuses:type_name -> moby.buildkit.v1.StatusResponse + 48, // 22: depot.cli.v1.ReportStatusStreamRequest.stable_digests:type_name -> depot.cli.v1.ReportStatusStreamRequest.StableDigestsEntry + 24, // 23: depot.cli.v1.ListBuildsResponse.builds:type_name -> depot.cli.v1.Build + 2, // 24: depot.cli.v1.Build.status:type_name -> depot.cli.v1.BuildStatus + 49, // 25: depot.cli.v1.Build.created_at:type_name -> google.protobuf.Timestamp + 49, // 26: depot.cli.v1.Build.finished_at:type_name -> google.protobuf.Timestamp + 49, // 27: depot.cli.v1.PageToken.last_created_at:type_name -> google.protobuf.Timestamp + 27, // 28: depot.cli.v1.ReportBuildContextRequest.dockerfiles:type_name -> depot.cli.v1.Dockerfile + 4, // 29: depot.cli.v1.GetPullInfoResponse.options:type_name -> depot.cli.v1.BuildOptions + 34, // 30: depot.cli.v1.CreateBuildRequest.RequiredEngine.buildkit:type_name -> depot.cli.v1.CreateBuildRequest.RequiredEngine.BuildKitEngine + 35, // 31: depot.cli.v1.CreateBuildRequest.RequiredEngine.dagger:type_name -> depot.cli.v1.CreateBuildRequest.RequiredEngine.DaggerEngine + 12, // 32: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.cert:type_name -> depot.cli.v1.Cert + 12, // 33: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.ca_cert:type_name -> depot.cli.v1.Cert + 45, // 34: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.identity:type_name -> depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.Identity + 46, // 35: depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.gzip:type_name -> depot.cli.v1.GetBuildKitConnectionResponse.ActiveConnection.Gzip + 3, // 36: depot.cli.v1.BuildService.CreateBuild:input_type -> depot.cli.v1.CreateBuildRequest + 8, // 37: depot.cli.v1.BuildService.FinishBuild:input_type -> depot.cli.v1.FinishBuildRequest + 10, // 38: depot.cli.v1.BuildService.GetBuildKitConnection:input_type -> depot.cli.v1.GetBuildKitConnectionRequest + 13, // 39: depot.cli.v1.BuildService.ReportBuildHealth:input_type -> depot.cli.v1.ReportBuildHealthRequest + 15, // 40: depot.cli.v1.BuildService.ReportTimings:input_type -> depot.cli.v1.ReportTimingsRequest + 18, // 41: depot.cli.v1.BuildService.ReportStatus:input_type -> depot.cli.v1.ReportStatusRequest + 20, // 42: depot.cli.v1.BuildService.ReportStatusStream:input_type -> depot.cli.v1.ReportStatusStreamRequest + 26, // 43: depot.cli.v1.BuildService.ReportBuildContext:input_type -> depot.cli.v1.ReportBuildContextRequest + 22, // 44: depot.cli.v1.BuildService.ListBuilds:input_type -> depot.cli.v1.ListBuildsRequest + 29, // 45: depot.cli.v1.BuildService.GetPullInfo:input_type -> depot.cli.v1.GetPullInfoRequest + 31, // 46: depot.cli.v1.BuildService.GetPullToken:input_type -> depot.cli.v1.GetPullTokenRequest + 6, // 47: depot.cli.v1.BuildService.CreateBuild:output_type -> depot.cli.v1.CreateBuildResponse + 9, // 48: depot.cli.v1.BuildService.FinishBuild:output_type -> depot.cli.v1.FinishBuildResponse + 11, // 49: depot.cli.v1.BuildService.GetBuildKitConnection:output_type -> depot.cli.v1.GetBuildKitConnectionResponse + 14, // 50: depot.cli.v1.BuildService.ReportBuildHealth:output_type -> depot.cli.v1.ReportBuildHealthResponse + 16, // 51: depot.cli.v1.BuildService.ReportTimings:output_type -> depot.cli.v1.ReportTimingsResponse + 19, // 52: depot.cli.v1.BuildService.ReportStatus:output_type -> depot.cli.v1.ReportStatusResponse + 21, // 53: depot.cli.v1.BuildService.ReportStatusStream:output_type -> depot.cli.v1.ReportStatusStreamResponse + 28, // 54: depot.cli.v1.BuildService.ReportBuildContext:output_type -> depot.cli.v1.ReportBuildContextResponse + 23, // 55: depot.cli.v1.BuildService.ListBuilds:output_type -> depot.cli.v1.ListBuildsResponse + 30, // 56: depot.cli.v1.BuildService.GetPullInfo:output_type -> depot.cli.v1.GetPullInfoResponse + 32, // 57: depot.cli.v1.BuildService.GetPullToken:output_type -> depot.cli.v1.GetPullTokenResponse + 47, // [47:58] is the sub-list for method output_type + 36, // [36:47] is the sub-list for method input_type + 36, // [36:36] is the sub-list for extension type_name + 36, // [36:36] is the sub-list for extension extendee + 0, // [0:36] is the sub-list for field type_name } func init() { file_depot_cli_v1_build_proto_init() } @@ -3367,7 +3506,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBuildsRequest); i { + switch v := v.(*ReportStatusStreamRequest); i { case 0: return &v.state case 1: @@ -3379,7 +3518,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListBuildsResponse); i { + switch v := v.(*ReportStatusStreamResponse); i { case 0: return &v.state case 1: @@ -3391,7 +3530,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Build); i { + switch v := v.(*ListBuildsRequest); i { case 0: return &v.state case 1: @@ -3403,7 +3542,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PageToken); i { + switch v := v.(*ListBuildsResponse); i { case 0: return &v.state case 1: @@ -3415,7 +3554,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportBuildContextRequest); i { + switch v := v.(*Build); i { case 0: return &v.state case 1: @@ -3427,7 +3566,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Dockerfile); i { + switch v := v.(*PageToken); i { case 0: return &v.state case 1: @@ -3439,7 +3578,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReportBuildContextResponse); i { + switch v := v.(*ReportBuildContextRequest); i { case 0: return &v.state case 1: @@ -3451,7 +3590,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPullInfoRequest); i { + switch v := v.(*Dockerfile); i { case 0: return &v.state case 1: @@ -3463,7 +3602,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPullInfoResponse); i { + switch v := v.(*ReportBuildContextResponse); i { case 0: return &v.state case 1: @@ -3475,7 +3614,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPullTokenRequest); i { + switch v := v.(*GetPullInfoRequest); i { case 0: return &v.state case 1: @@ -3487,7 +3626,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPullTokenResponse); i { + switch v := v.(*GetPullInfoResponse); i { case 0: return &v.state case 1: @@ -3499,7 +3638,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBuildRequest_RequiredEngine); i { + switch v := v.(*GetPullTokenRequest); i { case 0: return &v.state case 1: @@ -3511,7 +3650,7 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBuildRequest_RequiredEngine_BuildKitEngine); i { + switch v := v.(*GetPullTokenResponse); i { case 0: return &v.state case 1: @@ -3523,7 +3662,19 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateBuildRequest_RequiredEngine_DaggerEngine); i { + switch v := v.(*CreateBuildRequest_RequiredEngine); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_depot_cli_v1_build_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateBuildRequest_RequiredEngine_BuildKitEngine); i { case 0: return &v.state case 1: @@ -3535,6 +3686,18 @@ func file_depot_cli_v1_build_proto_init() { } } file_depot_cli_v1_build_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateBuildRequest_RequiredEngine_DaggerEngine); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_depot_cli_v1_build_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateBuildResponse_Profiler); i { case 0: return &v.state @@ -3546,7 +3709,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateBuildResponse_Credential); i { case 0: return &v.state @@ -3558,7 +3721,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateBuildResponse_Tag); i { case 0: return &v.state @@ -3570,7 +3733,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FinishBuildRequest_BuildSuccess); i { case 0: return &v.state @@ -3582,7 +3745,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FinishBuildRequest_BuildError); i { case 0: return &v.state @@ -3594,7 +3757,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*FinishBuildRequest_BuildCanceled); i { case 0: return &v.state @@ -3606,7 +3769,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBuildKitConnectionResponse_PendingConnection); i { case 0: return &v.state @@ -3618,7 +3781,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBuildKitConnectionResponse_ActiveConnection); i { case 0: return &v.state @@ -3630,7 +3793,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBuildKitConnectionResponse_ActiveConnection_Identity); i { case 0: return &v.state @@ -3642,7 +3805,7 @@ func file_depot_cli_v1_build_proto_init() { return nil } } - file_depot_cli_v1_build_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_depot_cli_v1_build_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetBuildKitConnectionResponse_ActiveConnection_Gzip); i { case 0: return &v.state @@ -3668,12 +3831,12 @@ func file_depot_cli_v1_build_proto_init() { (*GetBuildKitConnectionResponse_Active)(nil), } file_depot_cli_v1_build_proto_msgTypes[14].OneofWrappers = []interface{}{} - file_depot_cli_v1_build_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_depot_cli_v1_build_proto_msgTypes[28].OneofWrappers = []interface{}{ + file_depot_cli_v1_build_proto_msgTypes[28].OneofWrappers = []interface{}{} + file_depot_cli_v1_build_proto_msgTypes[30].OneofWrappers = []interface{}{ (*CreateBuildRequest_RequiredEngine_Buildkit)(nil), (*CreateBuildRequest_RequiredEngine_Dagger)(nil), } - file_depot_cli_v1_build_proto_msgTypes[39].OneofWrappers = []interface{}{ + file_depot_cli_v1_build_proto_msgTypes[41].OneofWrappers = []interface{}{ (*GetBuildKitConnectionResponse_ActiveConnection_Identity_)(nil), (*GetBuildKitConnectionResponse_ActiveConnection_Gzip_)(nil), } @@ -3683,7 +3846,7 @@ func file_depot_cli_v1_build_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_depot_cli_v1_build_proto_rawDesc, NumEnums: 3, - NumMessages: 43, + NumMessages: 46, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/proto/depot/cli/v1/cliv1connect/build.connect.go b/pkg/proto/depot/cli/v1/cliv1connect/build.connect.go index 4eb0cabe..895ae259 100644 --- a/pkg/proto/depot/cli/v1/cliv1connect/build.connect.go +++ b/pkg/proto/depot/cli/v1/cliv1connect/build.connect.go @@ -51,6 +51,9 @@ const ( // BuildServiceReportStatusProcedure is the fully-qualified name of the BuildService's ReportStatus // RPC. BuildServiceReportStatusProcedure = "/depot.cli.v1.BuildService/ReportStatus" + // BuildServiceReportStatusStreamProcedure is the fully-qualified name of the BuildService's + // ReportStatusStream RPC. + BuildServiceReportStatusStreamProcedure = "/depot.cli.v1.BuildService/ReportStatusStream" // BuildServiceReportBuildContextProcedure is the fully-qualified name of the BuildService's // ReportBuildContext RPC. BuildServiceReportBuildContextProcedure = "/depot.cli.v1.BuildService/ReportBuildContext" @@ -72,6 +75,7 @@ type BuildServiceClient interface { ReportBuildHealth(context.Context, *connect.Request[v1.ReportBuildHealthRequest]) (*connect.Response[v1.ReportBuildHealthResponse], error) ReportTimings(context.Context, *connect.Request[v1.ReportTimingsRequest]) (*connect.Response[v1.ReportTimingsResponse], error) ReportStatus(context.Context, *connect.Request[v1.ReportStatusRequest]) (*connect.Response[v1.ReportStatusResponse], error) + ReportStatusStream(context.Context) *connect.ClientStreamForClient[v1.ReportStatusStreamRequest, v1.ReportStatusStreamResponse] ReportBuildContext(context.Context, *connect.Request[v1.ReportBuildContextRequest]) (*connect.Response[v1.ReportBuildContextResponse], error) ListBuilds(context.Context, *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) GetPullInfo(context.Context, *connect.Request[v1.GetPullInfoRequest]) (*connect.Response[v1.GetPullInfoResponse], error) @@ -118,6 +122,11 @@ func NewBuildServiceClient(httpClient connect.HTTPClient, baseURL string, opts . baseURL+BuildServiceReportStatusProcedure, opts..., ), + reportStatusStream: connect.NewClient[v1.ReportStatusStreamRequest, v1.ReportStatusStreamResponse]( + httpClient, + baseURL+BuildServiceReportStatusStreamProcedure, + opts..., + ), reportBuildContext: connect.NewClient[v1.ReportBuildContextRequest, v1.ReportBuildContextResponse]( httpClient, baseURL+BuildServiceReportBuildContextProcedure, @@ -149,6 +158,7 @@ type buildServiceClient struct { reportBuildHealth *connect.Client[v1.ReportBuildHealthRequest, v1.ReportBuildHealthResponse] reportTimings *connect.Client[v1.ReportTimingsRequest, v1.ReportTimingsResponse] reportStatus *connect.Client[v1.ReportStatusRequest, v1.ReportStatusResponse] + reportStatusStream *connect.Client[v1.ReportStatusStreamRequest, v1.ReportStatusStreamResponse] reportBuildContext *connect.Client[v1.ReportBuildContextRequest, v1.ReportBuildContextResponse] listBuilds *connect.Client[v1.ListBuildsRequest, v1.ListBuildsResponse] getPullInfo *connect.Client[v1.GetPullInfoRequest, v1.GetPullInfoResponse] @@ -185,6 +195,11 @@ func (c *buildServiceClient) ReportStatus(ctx context.Context, req *connect.Requ return c.reportStatus.CallUnary(ctx, req) } +// ReportStatusStream calls depot.cli.v1.BuildService.ReportStatusStream. +func (c *buildServiceClient) ReportStatusStream(ctx context.Context) *connect.ClientStreamForClient[v1.ReportStatusStreamRequest, v1.ReportStatusStreamResponse] { + return c.reportStatusStream.CallClientStream(ctx) +} + // ReportBuildContext calls depot.cli.v1.BuildService.ReportBuildContext. func (c *buildServiceClient) ReportBuildContext(ctx context.Context, req *connect.Request[v1.ReportBuildContextRequest]) (*connect.Response[v1.ReportBuildContextResponse], error) { return c.reportBuildContext.CallUnary(ctx, req) @@ -213,6 +228,7 @@ type BuildServiceHandler interface { ReportBuildHealth(context.Context, *connect.Request[v1.ReportBuildHealthRequest]) (*connect.Response[v1.ReportBuildHealthResponse], error) ReportTimings(context.Context, *connect.Request[v1.ReportTimingsRequest]) (*connect.Response[v1.ReportTimingsResponse], error) ReportStatus(context.Context, *connect.Request[v1.ReportStatusRequest]) (*connect.Response[v1.ReportStatusResponse], error) + ReportStatusStream(context.Context, *connect.ClientStream[v1.ReportStatusStreamRequest]) (*connect.Response[v1.ReportStatusStreamResponse], error) ReportBuildContext(context.Context, *connect.Request[v1.ReportBuildContextRequest]) (*connect.Response[v1.ReportBuildContextResponse], error) ListBuilds(context.Context, *connect.Request[v1.ListBuildsRequest]) (*connect.Response[v1.ListBuildsResponse], error) GetPullInfo(context.Context, *connect.Request[v1.GetPullInfoRequest]) (*connect.Response[v1.GetPullInfoResponse], error) @@ -255,6 +271,11 @@ func NewBuildServiceHandler(svc BuildServiceHandler, opts ...connect.HandlerOpti svc.ReportStatus, opts..., ) + buildServiceReportStatusStreamHandler := connect.NewClientStreamHandler( + BuildServiceReportStatusStreamProcedure, + svc.ReportStatusStream, + opts..., + ) buildServiceReportBuildContextHandler := connect.NewUnaryHandler( BuildServiceReportBuildContextProcedure, svc.ReportBuildContext, @@ -289,6 +310,8 @@ func NewBuildServiceHandler(svc BuildServiceHandler, opts ...connect.HandlerOpti buildServiceReportTimingsHandler.ServeHTTP(w, r) case BuildServiceReportStatusProcedure: buildServiceReportStatusHandler.ServeHTTP(w, r) + case BuildServiceReportStatusStreamProcedure: + buildServiceReportStatusStreamHandler.ServeHTTP(w, r) case BuildServiceReportBuildContextProcedure: buildServiceReportBuildContextHandler.ServeHTTP(w, r) case BuildServiceListBuildsProcedure: @@ -330,6 +353,10 @@ func (UnimplementedBuildServiceHandler) ReportStatus(context.Context, *connect.R return nil, connect.NewError(connect.CodeUnimplemented, errors.New("depot.cli.v1.BuildService.ReportStatus is not implemented")) } +func (UnimplementedBuildServiceHandler) ReportStatusStream(context.Context, *connect.ClientStream[v1.ReportStatusStreamRequest]) (*connect.Response[v1.ReportStatusStreamResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("depot.cli.v1.BuildService.ReportStatusStream is not implemented")) +} + func (UnimplementedBuildServiceHandler) ReportBuildContext(context.Context, *connect.Request[v1.ReportBuildContextRequest]) (*connect.Response[v1.ReportBuildContextResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("depot.cli.v1.BuildService.ReportBuildContext is not implemented")) } diff --git a/proto/depot/cli/v1/build.proto b/proto/depot/cli/v1/build.proto index 1b0aece7..331b9015 100644 --- a/proto/depot/cli/v1/build.proto +++ b/proto/depot/cli/v1/build.proto @@ -12,6 +12,7 @@ service BuildService { rpc ReportBuildHealth(ReportBuildHealthRequest) returns (ReportBuildHealthResponse); rpc ReportTimings(ReportTimingsRequest) returns (ReportTimingsResponse); rpc ReportStatus(ReportStatusRequest) returns (ReportStatusResponse); + rpc ReportStatusStream(stream ReportStatusStreamRequest) returns (ReportStatusStreamResponse); rpc ReportBuildContext(ReportBuildContextRequest) returns (ReportBuildContextResponse); rpc ListBuilds(ListBuildsRequest) returns (ListBuildsResponse) {} rpc GetPullInfo(GetPullInfoRequest) returns (GetPullInfoResponse); @@ -61,6 +62,7 @@ enum Command { COMMAND_BUILDX = 3; COMMAND_DAGGER = 4; COMMAND_EXEC = 5; + COMMAND_FLYCTL = 6; } message BuildOutput { @@ -199,6 +201,14 @@ message ReportStatusRequest { message ReportStatusResponse {} +message ReportStatusStreamRequest { + string build_id = 1; + repeated moby.buildkit.v1.StatusResponse statuses = 2; + map stable_digests = 3; +} + +message ReportStatusStreamResponse {} + message ListBuildsRequest { // The project ID to get the builds for string project_id = 1;