diff --git a/Earthfile b/Earthfile index 11195841cd..e4cb5e4ef7 100644 --- a/Earthfile +++ b/Earthfile @@ -53,7 +53,7 @@ deps: # code downloads and caches all dependencies for earthly and then copies the go code # directories into the image. -# If BUILDKIT_PROJECT or CLOUD_API environment variables are set it will also update the go mods +# If BUILDKIT_PROJECT environment variable is set it will also update the go mods # for the local versions code: FROM +deps @@ -68,21 +68,9 @@ code: --mount type=cache,target=/go/pkg/mod,sharing=shared,id=go-mod \ go mod download END - # Use CLOUD_API to point go.mod to a cloud API dir being actively developed. Examples: - # --CLOUD_API=../cloud/api+proto/api/public/'*' - # --CLOUD_API=github.com/earthly/cloud/api:+proto/api/public/'*' - # --CLOUD_API=github.com/earthly/cloud-api:+code/'*' - ARG CLOUD_API - IF [ "$CLOUD_API" != "" ] - COPY --dir "$CLOUD_API" /cloud-api/ - RUN go mod edit -replace github.com/earthly/cloud-api=/cloud-api - RUN \ - --mount type=cache,target=/go/pkg/mod,sharing=shared,id=go-mod \ - go mod download - END COPY ./ast/parser+parser/*.go ./ast/parser/ COPY --dir autocomplete buildcontext builder cleanup cmd config conslogging debugger \ - docker2earthly dockertar domain features internal logbus regproxy states slog util variables ./ + docker2earthly dockertar domain features internal logbus logstream regproxy states slog util variables ./ COPY --dir buildkitd/buildkitd.go buildkitd/settings.go buildkitd/certificates.go buildkitd/ COPY --dir earthfile2llb/*.go earthfile2llb/ COPY --dir ast/antlrhandler ast/spec ast/command ast/commandflag ast/*.go ast/ diff --git a/cmd/earthly/app/run.go b/cmd/earthly/app/run.go index 11e61c188c..f535d934c7 100644 --- a/cmd/earthly/app/run.go +++ b/cmd/earthly/app/run.go @@ -9,7 +9,7 @@ import ( "strings" "time" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" "github.com/fatih/color" "github.com/moby/buildkit/util/grpcerrors" "github.com/pkg/errors" diff --git a/earthfile2llb/converter.go b/earthfile2llb/converter.go index af663be597..e07e9de12e 100644 --- a/earthfile2llb/converter.go +++ b/earthfile2llb/converter.go @@ -28,6 +28,7 @@ import ( "github.com/EarthBuild/earthbuild/features" "github.com/EarthBuild/earthbuild/inputgraph" "github.com/EarthBuild/earthbuild/logbus" + "github.com/EarthBuild/earthbuild/logstream" "github.com/EarthBuild/earthbuild/states" "github.com/EarthBuild/earthbuild/states/dedup" "github.com/EarthBuild/earthbuild/states/image" @@ -50,7 +51,6 @@ import ( "github.com/EarthBuild/earthbuild/variables/reserved" "github.com/containerd/platforms" "github.com/distribution/reference" - "github.com/earthly/cloud-api/logstream" "github.com/google/uuid" "github.com/moby/buildkit/client/llb" dockerimage "github.com/moby/buildkit/exporter/containerimage/image" diff --git a/earthfile2llb/with_docker_run_local_reg.go b/earthfile2llb/with_docker_run_local_reg.go index a9c8809b76..d1f7dc558f 100644 --- a/earthfile2llb/with_docker_run_local_reg.go +++ b/earthfile2llb/with_docker_run_local_reg.go @@ -7,10 +7,10 @@ import ( "github.com/EarthBuild/earthbuild/domain" "github.com/EarthBuild/earthbuild/logbus/solvermon" + "github.com/EarthBuild/earthbuild/logstream" "github.com/EarthBuild/earthbuild/states" "github.com/EarthBuild/earthbuild/util/containerutil" "github.com/EarthBuild/earthbuild/util/syncutil/semutil" - "github.com/earthly/cloud-api/logstream" "github.com/pkg/errors" ) diff --git a/earthfile2llb/with_docker_run_reg.go b/earthfile2llb/with_docker_run_reg.go index 1f756eda1c..8f49dc69ce 100644 --- a/earthfile2llb/with_docker_run_reg.go +++ b/earthfile2llb/with_docker_run_reg.go @@ -9,11 +9,11 @@ import ( "github.com/EarthBuild/earthbuild/domain" "github.com/EarthBuild/earthbuild/logbus/solvermon" + "github.com/EarthBuild/earthbuild/logstream" "github.com/EarthBuild/earthbuild/states" "github.com/EarthBuild/earthbuild/util/llbutil/pllb" "github.com/EarthBuild/earthbuild/util/platutil" "github.com/EarthBuild/earthbuild/util/syncutil/semutil" - "github.com/earthly/cloud-api/logstream" "github.com/moby/buildkit/client/llb" "github.com/pkg/errors" ) diff --git a/go.mod b/go.mod index 048a3ab118..6ea11d25ef 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,6 @@ require ( github.com/docker/go-connections v0.6.0 github.com/docker/go-units v0.5.0 github.com/dustin/go-humanize v1.0.1 - github.com/earthly/cloud-api v1.0.1-0.20240712142419-23b6f0913996 github.com/elastic/go-sysinfo v1.15.4 github.com/fatih/color v1.18.0 github.com/gofrs/flock v0.13.0 diff --git a/go.sum b/go.sum index 3df1c85b11..93131365f2 100644 --- a/go.sum +++ b/go.sum @@ -128,8 +128,6 @@ github.com/earthbuild/buildkit v0.0.0-20240515200521-531b303aa8ec h1:aJS+Pmv8KW3 github.com/earthbuild/buildkit v0.0.0-20240515200521-531b303aa8ec/go.mod h1:1/yAC8A0Tu94Bdmv07gaG1pFBp+CetVwO7oB3qvZXUc= github.com/earthbuild/fsutil v0.0.0-20231030221755-644b08355b65 h1:IOk0NURVGR6BO+dZXvuVSazZDBwJBFNvyv7kN9309m4= github.com/earthbuild/fsutil v0.0.0-20231030221755-644b08355b65/go.mod h1:9kMVqMyQ/Sx2df5LtnGG+nbrmiZzCS7V6gjW3oGHsvI= -github.com/earthly/cloud-api v1.0.1-0.20240712142419-23b6f0913996 h1:UobaUMrXjUcVaHXAev9aOflHHRg9gO+uOwhCvWJ9+cw= -github.com/earthly/cloud-api v1.0.1-0.20240712142419-23b6f0913996/go.mod h1:rU/tYJ7GFBjdKAITV2heDbez++glpGSbtJaZcp73rNI= github.com/elastic/go-sysinfo v1.15.4 h1:A3zQcunCxik14MgXu39cXFXcIw2sFXZ0zL886eyiv1Q= github.com/elastic/go-sysinfo v1.15.4/go.mod h1:ZBVXmqS368dOn/jvijV/zHLfakWTYHBZPk3G244lHrU= github.com/elastic/go-windows v1.0.2 h1:yoLLsAsV5cfg9FLhZ9EXZ2n2sQFKeDYrHenkcivY4vI= diff --git a/logbus/bus.go b/logbus/bus.go index bdcea96298..05836c2802 100644 --- a/logbus/bus.go +++ b/logbus/bus.go @@ -4,7 +4,7 @@ import ( "sync" "time" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" ) // Subscriber is an object that can receive deltas. diff --git a/logbus/command.go b/logbus/command.go index b9ae8e5ff1..1fd407e2c6 100644 --- a/logbus/command.go +++ b/logbus/command.go @@ -6,8 +6,8 @@ import ( "sync/atomic" "time" + "github.com/EarthBuild/earthbuild/logstream" "github.com/EarthBuild/earthbuild/util/circbuf" - "github.com/earthly/cloud-api/logstream" "github.com/pkg/errors" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" diff --git a/logbus/formattedwriter.go b/logbus/formattedwriter.go index d4dd3b0fd6..e54a447aa6 100644 --- a/logbus/formattedwriter.go +++ b/logbus/formattedwriter.go @@ -1,7 +1,7 @@ package logbus import ( - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" ) // FormattedWriter is a writer that produces DeltaFormattedLog messages. diff --git a/logbus/formatter/formatter.go b/logbus/formatter/formatter.go index 9d8f44056f..f8c2ca52ad 100644 --- a/logbus/formatter/formatter.go +++ b/logbus/formatter/formatter.go @@ -12,13 +12,13 @@ import ( "github.com/EarthBuild/earthbuild/conslogging" "github.com/EarthBuild/earthbuild/logbus" + "github.com/EarthBuild/earthbuild/logstream" "github.com/EarthBuild/earthbuild/util/deltautil" "github.com/EarthBuild/earthbuild/util/execstatssummary" "github.com/EarthBuild/earthbuild/util/progressbar" "github.com/EarthBuild/earthbuild/util/stringutil" runc "github.com/containerd/go-runc" humanize "github.com/dustin/go-humanize" - "github.com/earthly/cloud-api/logstream" "github.com/hashicorp/go-multierror" "github.com/mattn/go-isatty" "github.com/pkg/errors" diff --git a/logbus/generic.go b/logbus/generic.go index 9ce8aa74e6..6087b26d87 100644 --- a/logbus/generic.go +++ b/logbus/generic.go @@ -4,7 +4,7 @@ import ( "time" "github.com/EarthBuild/earthbuild/conslogging" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" ) // Generic is a generic writer for build output unrelated to a specific target. diff --git a/logbus/run.go b/logbus/run.go index 7dbd0e6847..d38bbd98f4 100644 --- a/logbus/run.go +++ b/logbus/run.go @@ -9,7 +9,7 @@ import ( "github.com/EarthBuild/earthbuild/ast/spec" "github.com/EarthBuild/earthbuild/domain" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" "github.com/moby/buildkit/util/sshutil" ) diff --git a/logbus/setup/setup.go b/logbus/setup/setup.go index 0a9b884168..c63f17c9cd 100644 --- a/logbus/setup/setup.go +++ b/logbus/setup/setup.go @@ -9,9 +9,9 @@ import ( "github.com/EarthBuild/earthbuild/logbus/formatter" "github.com/EarthBuild/earthbuild/logbus/solvermon" "github.com/EarthBuild/earthbuild/logbus/writersub" + "github.com/EarthBuild/earthbuild/logstream" "github.com/EarthBuild/earthbuild/util/deltautil" "github.com/EarthBuild/earthbuild/util/execstatssummary" - "github.com/earthly/cloud-api/logstream" "github.com/hashicorp/go-multierror" "github.com/pkg/errors" "google.golang.org/protobuf/encoding/protojson" diff --git a/logbus/solvermon/solvermon.go b/logbus/solvermon/solvermon.go index 12ad2a6bd9..95fa7cb8a0 100644 --- a/logbus/solvermon/solvermon.go +++ b/logbus/solvermon/solvermon.go @@ -6,11 +6,11 @@ import ( "time" "github.com/EarthBuild/earthbuild/logbus" + "github.com/EarthBuild/earthbuild/logstream" "github.com/EarthBuild/earthbuild/util/statsstreamparser" "github.com/EarthBuild/earthbuild/util/stringutil" "github.com/EarthBuild/earthbuild/util/vertexmeta" "github.com/EarthBuild/earthbuild/util/xcontext" - "github.com/earthly/cloud-api/logstream" "github.com/moby/buildkit/client" "github.com/opencontainers/go-digest" "github.com/pkg/errors" diff --git a/logbus/solvermon/vertexmon.go b/logbus/solvermon/vertexmon.go index 80db365c93..e53cbaf909 100644 --- a/logbus/solvermon/vertexmon.go +++ b/logbus/solvermon/vertexmon.go @@ -10,11 +10,11 @@ import ( "time" "github.com/EarthBuild/earthbuild/logbus" + "github.com/EarthBuild/earthbuild/logstream" "github.com/EarthBuild/earthbuild/util/errutil" "github.com/EarthBuild/earthbuild/util/statsstreamparser" "github.com/EarthBuild/earthbuild/util/stringutil" "github.com/EarthBuild/earthbuild/util/vertexmeta" - "github.com/earthly/cloud-api/logstream" "github.com/moby/buildkit/client" "github.com/pkg/errors" ) diff --git a/logbus/solvermon/vertexmon_test.go b/logbus/solvermon/vertexmon_test.go index 69b1a3e38b..6f2d264663 100644 --- a/logbus/solvermon/vertexmon_test.go +++ b/logbus/solvermon/vertexmon_test.go @@ -3,7 +3,7 @@ package solvermon import ( "testing" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" "github.com/pkg/errors" "github.com/stretchr/testify/assert" ) diff --git a/logbus/target.go b/logbus/target.go index 052b68a3d6..80b5eade63 100644 --- a/logbus/target.go +++ b/logbus/target.go @@ -4,7 +4,7 @@ import ( "sync" "time" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" ) // Target is a delta generator for a target. diff --git a/logbus/writersub/raw.go b/logbus/writersub/raw.go index 13c0e328bc..d35cedfec3 100644 --- a/logbus/writersub/raw.go +++ b/logbus/writersub/raw.go @@ -4,7 +4,7 @@ import ( "io" "sync" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" "google.golang.org/protobuf/encoding/protojson" "google.golang.org/protobuf/proto" ) diff --git a/logbus/writersub/writersub.go b/logbus/writersub/writersub.go index 0874d82b36..c73bb0aa93 100644 --- a/logbus/writersub/writersub.go +++ b/logbus/writersub/writersub.go @@ -4,7 +4,7 @@ import ( "io" "sync" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" ) // WriterSub is a bus subscriber that can print formatted logs to a writer. diff --git a/logstream/README.md b/logstream/README.md new file mode 100644 index 0000000000..21749bdcea --- /dev/null +++ b/logstream/README.md @@ -0,0 +1,46 @@ +# logstream + +This package contains Protocol Buffer definitions and generated Go code for logging and manifest tracking in EarthBuild. + +## Overview + +The logstream package defines the data structures used for: +- Build manifests (targets, commands, status) +- Log streaming (raw and formatted logs) +- Delta updates for incremental manifest changes + +## History + +This package was originally part of `github.com/earthly/cloud-api` but has been internalized into the EarthBuild project to remove the external dependency. The Protocol Buffer definitions and generated code provide the same functionality as the original cloud-api version. + +## Files + +- `manifest.proto` - Defines build manifest structures (RunManifest, TargetManifest, CommandManifest, etc.) +- `delta.proto` - Defines delta/incremental update structures (Delta, DeltaLog, DeltaFormattedLog, etc.) +- `manifest.pb.go` - Generated Go code from manifest.proto +- `delta.pb.go` - Generated Go code from delta.proto + +## Regenerating Go Code + +If you need to regenerate the Go code from the proto files: + +```bash +# Install protoc and protoc-gen-go if not already installed +go install google.golang.org/protobuf/cmd/protoc-gen-go@latest + +# Generate Go code +protoc --go_out=. --go_opt=paths=source_relative \ + manifest.proto delta.proto +``` + +Alternatively, you can use buf or other proto generation tools. + +## Usage + +This package is used throughout EarthBuild for: +- Tracking build state and progress +- Streaming logs from build commands +- Reporting build status and failures +- Managing build manifests + +See the `logbus` package for the main consumers of these types. diff --git a/logstream/delta.pb.go b/logstream/delta.pb.go new file mode 100644 index 0000000000..20bcd789dd --- /dev/null +++ b/logstream/delta.pb.go @@ -0,0 +1,1331 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: delta.proto + +package logstream + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Delta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + // Types that are assignable to DeltaTypeOneof: + // + // *Delta_DeltaManifest + // *Delta_DeltaLog + // *Delta_DeltaFormattedLog + DeltaTypeOneof isDelta_DeltaTypeOneof `protobuf_oneof:"delta_type_oneof"` +} + +func (x *Delta) Reset() { + *x = Delta{} + if protoimpl.UnsafeEnabled { + mi := &file_delta_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Delta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Delta) ProtoMessage() {} + +func (x *Delta) ProtoReflect() protoreflect.Message { + mi := &file_delta_proto_msgTypes[0] + 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 Delta.ProtoReflect.Descriptor instead. +func (*Delta) Descriptor() ([]byte, []int) { + return file_delta_proto_rawDescGZIP(), []int{0} +} + +func (x *Delta) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (m *Delta) GetDeltaTypeOneof() isDelta_DeltaTypeOneof { + if m != nil { + return m.DeltaTypeOneof + } + return nil +} + +func (x *Delta) GetDeltaManifest() *DeltaManifest { + if x, ok := x.GetDeltaTypeOneof().(*Delta_DeltaManifest); ok { + return x.DeltaManifest + } + return nil +} + +func (x *Delta) GetDeltaLog() *DeltaLog { + if x, ok := x.GetDeltaTypeOneof().(*Delta_DeltaLog); ok { + return x.DeltaLog + } + return nil +} + +func (x *Delta) GetDeltaFormattedLog() *DeltaFormattedLog { + if x, ok := x.GetDeltaTypeOneof().(*Delta_DeltaFormattedLog); ok { + return x.DeltaFormattedLog + } + return nil +} + +type isDelta_DeltaTypeOneof interface { + isDelta_DeltaTypeOneof() +} + +type Delta_DeltaManifest struct { + // delta_manifest represents a change to the run manifest. + DeltaManifest *DeltaManifest `protobuf:"bytes,2,opt,name=delta_manifest,json=deltaManifest,proto3,oneof"` +} + +type Delta_DeltaLog struct { + // delta_log is a piece of a log stream of bytes, for a specific + // command as part of the build. No presentation layer information + // is embedded in this stream. The log information is the raw + // output of the commands passed directly, without any changes. + DeltaLog *DeltaLog `protobuf:"bytes,3,opt,name=delta_log,json=deltaLog,proto3,oneof"` +} + +type Delta_DeltaFormattedLog struct { + // delta_formatted_log is a piece of a log stream of bytes, with + // all the appropriate formatting information embedded, including + // target prefixes, ansi escape codes for colors, etc. This data is + // broken down by targets, plus a special target_id "_full" will + // contain the exact output of the entire build. + DeltaFormattedLog *DeltaFormattedLog `protobuf:"bytes,4,opt,name=delta_formatted_log,json=deltaFormattedLog,proto3,oneof"` +} + +func (*Delta_DeltaManifest) isDelta_DeltaTypeOneof() {} + +func (*Delta_DeltaLog) isDelta_DeltaTypeOneof() {} + +func (*Delta_DeltaFormattedLog) isDelta_DeltaTypeOneof() {} + +type DeltaLog struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // target_id is the target the command belongs to, if any. + TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + // command_id is the identifier of the command that generated the + // log data. + CommandId string `protobuf:"bytes,2,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"` + Stream int32 `protobuf:"varint,3,opt,name=stream,proto3" json:"stream,omitempty"` // stdout or stderr + TimestampUnixNanos uint64 `protobuf:"varint,4,opt,name=timestamp_unix_nanos,json=timestampUnixNanos,proto3" json:"timestamp_unix_nanos,omitempty"` + // data is the raw log data, as generated by the command. No formatting is + // added on top (no ansii color codes, no target prefixes, etc). + Data []byte `protobuf:"bytes,5,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *DeltaLog) Reset() { + *x = DeltaLog{} + if protoimpl.UnsafeEnabled { + mi := &file_delta_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeltaLog) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeltaLog) ProtoMessage() {} + +func (x *DeltaLog) ProtoReflect() protoreflect.Message { + mi := &file_delta_proto_msgTypes[1] + 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 DeltaLog.ProtoReflect.Descriptor instead. +func (*DeltaLog) Descriptor() ([]byte, []int) { + return file_delta_proto_rawDescGZIP(), []int{1} +} + +func (x *DeltaLog) GetTargetId() string { + if x != nil { + return x.TargetId + } + return "" +} + +func (x *DeltaLog) GetCommandId() string { + if x != nil { + return x.CommandId + } + return "" +} + +func (x *DeltaLog) GetStream() int32 { + if x != nil { + return x.Stream + } + return 0 +} + +func (x *DeltaLog) GetTimestampUnixNanos() uint64 { + if x != nil { + return x.TimestampUnixNanos + } + return 0 +} + +func (x *DeltaLog) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +type DeltaFormattedLog struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // target_id is the target the command belongs to, if any. A special + // target_id "_full" will contain the exact output of the entire build. + TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + TimestampUnixNanos uint64 `protobuf:"varint,2,opt,name=timestamp_unix_nanos,json=timestampUnixNanos,proto3" json:"timestamp_unix_nanos,omitempty"` + // data is the formatted log data, with all the appropriate formatting + // information embedded, including target prefixes, ansi escape codes for + // colors, etc. + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + CommandId string `protobuf:"bytes,4,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"` +} + +func (x *DeltaFormattedLog) Reset() { + *x = DeltaFormattedLog{} + if protoimpl.UnsafeEnabled { + mi := &file_delta_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeltaFormattedLog) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeltaFormattedLog) ProtoMessage() {} + +func (x *DeltaFormattedLog) ProtoReflect() protoreflect.Message { + mi := &file_delta_proto_msgTypes[2] + 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 DeltaFormattedLog.ProtoReflect.Descriptor instead. +func (*DeltaFormattedLog) Descriptor() ([]byte, []int) { + return file_delta_proto_rawDescGZIP(), []int{2} +} + +func (x *DeltaFormattedLog) GetTargetId() string { + if x != nil { + return x.TargetId + } + return "" +} + +func (x *DeltaFormattedLog) GetTimestampUnixNanos() uint64 { + if x != nil { + return x.TimestampUnixNanos + } + return 0 +} + +func (x *DeltaFormattedLog) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *DeltaFormattedLog) GetCommandId() string { + if x != nil { + return x.CommandId + } + return "" +} + +type DeltaManifest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to DeltaManifestOneof: + // + // *DeltaManifest_ResetAll + // *DeltaManifest_Fields + // *DeltaManifest_Resume + DeltaManifestOneof isDeltaManifest_DeltaManifestOneof `protobuf_oneof:"delta_manifest_oneof"` +} + +func (x *DeltaManifest) Reset() { + *x = DeltaManifest{} + if protoimpl.UnsafeEnabled { + mi := &file_delta_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeltaManifest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeltaManifest) ProtoMessage() {} + +func (x *DeltaManifest) ProtoReflect() protoreflect.Message { + mi := &file_delta_proto_msgTypes[3] + 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 DeltaManifest.ProtoReflect.Descriptor instead. +func (*DeltaManifest) Descriptor() ([]byte, []int) { + return file_delta_proto_rawDescGZIP(), []int{3} +} + +func (m *DeltaManifest) GetDeltaManifestOneof() isDeltaManifest_DeltaManifestOneof { + if m != nil { + return m.DeltaManifestOneof + } + return nil +} + +func (x *DeltaManifest) GetResetAll() *RunManifest { + if x, ok := x.GetDeltaManifestOneof().(*DeltaManifest_ResetAll); ok { + return x.ResetAll + } + return nil +} + +func (x *DeltaManifest) GetFields() *DeltaManifest_FieldsDelta { + if x, ok := x.GetDeltaManifestOneof().(*DeltaManifest_Fields); ok { + return x.Fields + } + return nil +} + +func (x *DeltaManifest) GetResume() *DeltaManifest_ResumeBuild { + if x, ok := x.GetDeltaManifestOneof().(*DeltaManifest_Resume); ok { + return x.Resume + } + return nil +} + +type isDeltaManifest_DeltaManifestOneof interface { + isDeltaManifest_DeltaManifestOneof() +} + +type DeltaManifest_ResetAll struct { + ResetAll *RunManifest `protobuf:"bytes,1,opt,name=reset_all,json=resetAll,proto3,oneof"` +} + +type DeltaManifest_Fields struct { + Fields *DeltaManifest_FieldsDelta `protobuf:"bytes,2,opt,name=fields,proto3,oneof"` +} + +type DeltaManifest_Resume struct { + Resume *DeltaManifest_ResumeBuild `protobuf:"bytes,3,opt,name=resume,proto3,oneof"` +} + +func (*DeltaManifest_ResetAll) isDeltaManifest_DeltaManifestOneof() {} + +func (*DeltaManifest_Fields) isDeltaManifest_DeltaManifestOneof() {} + +func (*DeltaManifest_Resume) isDeltaManifest_DeltaManifestOneof() {} + +type DeltaTargetManifest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + CanonicalName string `protobuf:"bytes,2,opt,name=canonical_name,json=canonicalName,proto3" json:"canonical_name,omitempty"` + GitUrl string `protobuf:"bytes,10,opt,name=git_url,json=gitUrl,proto3" json:"git_url,omitempty"` + LocalPath string `protobuf:"bytes,11,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"` + Tag string `protobuf:"bytes,12,opt,name=tag,proto3" json:"tag,omitempty"` + ImportRef string `protobuf:"bytes,13,opt,name=import_ref,json=importRef,proto3" json:"import_ref,omitempty"` + OverrideArgs []string `protobuf:"bytes,3,rep,name=override_args,json=overrideArgs,proto3" json:"override_args,omitempty"` + InitialPlatform string `protobuf:"bytes,4,opt,name=initial_platform,json=initialPlatform,proto3" json:"initial_platform,omitempty"` + FinalPlatform string `protobuf:"bytes,8,opt,name=final_platform,json=finalPlatform,proto3" json:"final_platform,omitempty"` + Runner string `protobuf:"bytes,9,opt,name=runner,proto3" json:"runner,omitempty"` + Status RunStatus `protobuf:"varint,5,opt,name=status,proto3,enum=api.public.logstream.RunStatus" json:"status,omitempty"` + StartedAtUnixNanos uint64 `protobuf:"varint,6,opt,name=started_at_unix_nanos,json=startedAtUnixNanos,proto3" json:"started_at_unix_nanos,omitempty"` + EndedAtUnixNanos uint64 `protobuf:"varint,7,opt,name=ended_at_unix_nanos,json=endedAtUnixNanos,proto3" json:"ended_at_unix_nanos,omitempty"` + DependsOn []string `protobuf:"bytes,14,rep,name=depends_on,json=dependsOn,proto3" json:"depends_on,omitempty"` +} + +func (x *DeltaTargetManifest) Reset() { + *x = DeltaTargetManifest{} + if protoimpl.UnsafeEnabled { + mi := &file_delta_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeltaTargetManifest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeltaTargetManifest) ProtoMessage() {} + +func (x *DeltaTargetManifest) ProtoReflect() protoreflect.Message { + mi := &file_delta_proto_msgTypes[4] + 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 DeltaTargetManifest.ProtoReflect.Descriptor instead. +func (*DeltaTargetManifest) Descriptor() ([]byte, []int) { + return file_delta_proto_rawDescGZIP(), []int{4} +} + +func (x *DeltaTargetManifest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeltaTargetManifest) GetCanonicalName() string { + if x != nil { + return x.CanonicalName + } + return "" +} + +func (x *DeltaTargetManifest) GetGitUrl() string { + if x != nil { + return x.GitUrl + } + return "" +} + +func (x *DeltaTargetManifest) GetLocalPath() string { + if x != nil { + return x.LocalPath + } + return "" +} + +func (x *DeltaTargetManifest) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *DeltaTargetManifest) GetImportRef() string { + if x != nil { + return x.ImportRef + } + return "" +} + +func (x *DeltaTargetManifest) GetOverrideArgs() []string { + if x != nil { + return x.OverrideArgs + } + return nil +} + +func (x *DeltaTargetManifest) GetInitialPlatform() string { + if x != nil { + return x.InitialPlatform + } + return "" +} + +func (x *DeltaTargetManifest) GetFinalPlatform() string { + if x != nil { + return x.FinalPlatform + } + return "" +} + +func (x *DeltaTargetManifest) GetRunner() string { + if x != nil { + return x.Runner + } + return "" +} + +func (x *DeltaTargetManifest) GetStatus() RunStatus { + if x != nil { + return x.Status + } + return RunStatus_RUN_STATUS_UNKNOWN +} + +func (x *DeltaTargetManifest) GetStartedAtUnixNanos() uint64 { + if x != nil { + return x.StartedAtUnixNanos + } + return 0 +} + +func (x *DeltaTargetManifest) GetEndedAtUnixNanos() uint64 { + if x != nil { + return x.EndedAtUnixNanos + } + return 0 +} + +func (x *DeltaTargetManifest) GetDependsOn() []string { + if x != nil { + return x.DependsOn + } + return nil +} + +type DeltaCommandManifest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + TargetId string `protobuf:"bytes,17,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + Category string `protobuf:"bytes,19,opt,name=category,proto3" json:"category,omitempty"` + Platform string `protobuf:"bytes,18,opt,name=platform,proto3" json:"platform,omitempty"` + Status RunStatus `protobuf:"varint,2,opt,name=status,proto3,enum=api.public.logstream.RunStatus" json:"status,omitempty"` + HasCached bool `protobuf:"varint,3,opt,name=has_cached,json=hasCached,proto3" json:"has_cached,omitempty"` + IsCached bool `protobuf:"varint,4,opt,name=is_cached,json=isCached,proto3" json:"is_cached,omitempty"` + HasLocal bool `protobuf:"varint,7,opt,name=has_local,json=hasLocal,proto3" json:"has_local,omitempty"` + IsLocal bool `protobuf:"varint,8,opt,name=is_local,json=isLocal,proto3" json:"is_local,omitempty"` + HasInteractive bool `protobuf:"varint,20,opt,name=has_interactive,json=hasInteractive,proto3" json:"has_interactive,omitempty"` + IsInteractive bool `protobuf:"varint,21,opt,name=is_interactive,json=isInteractive,proto3" json:"is_interactive,omitempty"` + StartedAtUnixNanos uint64 `protobuf:"varint,9,opt,name=started_at_unix_nanos,json=startedAtUnixNanos,proto3" json:"started_at_unix_nanos,omitempty"` + EndedAtUnixNanos uint64 `protobuf:"varint,10,opt,name=ended_at_unix_nanos,json=endedAtUnixNanos,proto3" json:"ended_at_unix_nanos,omitempty"` + HasHasProgress bool `protobuf:"varint,11,opt,name=has_has_progress,json=hasHasProgress,proto3" json:"has_has_progress,omitempty"` + HasProgress bool `protobuf:"varint,12,opt,name=has_progress,json=hasProgress,proto3" json:"has_progress,omitempty"` + Progress int32 `protobuf:"varint,13,opt,name=progress,proto3" json:"progress,omitempty"` + ErrorMessage string `protobuf:"bytes,14,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + HasSourceLocation bool `protobuf:"varint,16,opt,name=has_source_location,json=hasSourceLocation,proto3" json:"has_source_location,omitempty"` + SourceLocation *SourceLocation `protobuf:"bytes,15,opt,name=source_location,json=sourceLocation,proto3" json:"source_location,omitempty"` + DependsOn []*CommandTarget `protobuf:"bytes,22,rep,name=depends_on,json=dependsOn,proto3" json:"depends_on,omitempty"` +} + +func (x *DeltaCommandManifest) Reset() { + *x = DeltaCommandManifest{} + if protoimpl.UnsafeEnabled { + mi := &file_delta_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeltaCommandManifest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeltaCommandManifest) ProtoMessage() {} + +func (x *DeltaCommandManifest) ProtoReflect() protoreflect.Message { + mi := &file_delta_proto_msgTypes[5] + 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 DeltaCommandManifest.ProtoReflect.Descriptor instead. +func (*DeltaCommandManifest) Descriptor() ([]byte, []int) { + return file_delta_proto_rawDescGZIP(), []int{5} +} + +func (x *DeltaCommandManifest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *DeltaCommandManifest) GetTargetId() string { + if x != nil { + return x.TargetId + } + return "" +} + +func (x *DeltaCommandManifest) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *DeltaCommandManifest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *DeltaCommandManifest) GetStatus() RunStatus { + if x != nil { + return x.Status + } + return RunStatus_RUN_STATUS_UNKNOWN +} + +func (x *DeltaCommandManifest) GetHasCached() bool { + if x != nil { + return x.HasCached + } + return false +} + +func (x *DeltaCommandManifest) GetIsCached() bool { + if x != nil { + return x.IsCached + } + return false +} + +func (x *DeltaCommandManifest) GetHasLocal() bool { + if x != nil { + return x.HasLocal + } + return false +} + +func (x *DeltaCommandManifest) GetIsLocal() bool { + if x != nil { + return x.IsLocal + } + return false +} + +func (x *DeltaCommandManifest) GetHasInteractive() bool { + if x != nil { + return x.HasInteractive + } + return false +} + +func (x *DeltaCommandManifest) GetIsInteractive() bool { + if x != nil { + return x.IsInteractive + } + return false +} + +func (x *DeltaCommandManifest) GetStartedAtUnixNanos() uint64 { + if x != nil { + return x.StartedAtUnixNanos + } + return 0 +} + +func (x *DeltaCommandManifest) GetEndedAtUnixNanos() uint64 { + if x != nil { + return x.EndedAtUnixNanos + } + return 0 +} + +func (x *DeltaCommandManifest) GetHasHasProgress() bool { + if x != nil { + return x.HasHasProgress + } + return false +} + +func (x *DeltaCommandManifest) GetHasProgress() bool { + if x != nil { + return x.HasProgress + } + return false +} + +func (x *DeltaCommandManifest) GetProgress() int32 { + if x != nil { + return x.Progress + } + return 0 +} + +func (x *DeltaCommandManifest) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *DeltaCommandManifest) GetHasSourceLocation() bool { + if x != nil { + return x.HasSourceLocation + } + return false +} + +func (x *DeltaCommandManifest) GetSourceLocation() *SourceLocation { + if x != nil { + return x.SourceLocation + } + return nil +} + +func (x *DeltaCommandManifest) GetDependsOn() []*CommandTarget { + if x != nil { + return x.DependsOn + } + return nil +} + +type DeltaManifest_ResumeBuild 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"` + Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"` + OrgName string `protobuf:"bytes,3,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` + ProjectName string `protobuf:"bytes,4,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` +} + +func (x *DeltaManifest_ResumeBuild) Reset() { + *x = DeltaManifest_ResumeBuild{} + if protoimpl.UnsafeEnabled { + mi := &file_delta_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeltaManifest_ResumeBuild) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeltaManifest_ResumeBuild) ProtoMessage() {} + +func (x *DeltaManifest_ResumeBuild) ProtoReflect() protoreflect.Message { + mi := &file_delta_proto_msgTypes[6] + 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 DeltaManifest_ResumeBuild.ProtoReflect.Descriptor instead. +func (*DeltaManifest_ResumeBuild) Descriptor() ([]byte, []int) { + return file_delta_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *DeltaManifest_ResumeBuild) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *DeltaManifest_ResumeBuild) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *DeltaManifest_ResumeBuild) GetOrgName() string { + if x != nil { + return x.OrgName + } + return "" +} + +func (x *DeltaManifest_ResumeBuild) GetProjectName() string { + if x != nil { + return x.ProjectName + } + return "" +} + +type DeltaManifest_FieldsDelta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MainTargetId string `protobuf:"bytes,8,opt,name=main_target_id,json=mainTargetId,proto3" json:"main_target_id,omitempty"` + StartedAtUnixNanos uint64 `protobuf:"varint,1,opt,name=started_at_unix_nanos,json=startedAtUnixNanos,proto3" json:"started_at_unix_nanos,omitempty"` + EndedAtUnixNanos uint64 `protobuf:"varint,2,opt,name=ended_at_unix_nanos,json=endedAtUnixNanos,proto3" json:"ended_at_unix_nanos,omitempty"` + Status RunStatus `protobuf:"varint,3,opt,name=status,proto3,enum=api.public.logstream.RunStatus" json:"status,omitempty"` + HasFailure bool `protobuf:"varint,6,opt,name=has_failure,json=hasFailure,proto3" json:"has_failure,omitempty"` + Failure *Failure `protobuf:"bytes,4,opt,name=failure,proto3" json:"failure,omitempty"` + Targets map[string]*DeltaTargetManifest `protobuf:"bytes,5,rep,name=targets,proto3" json:"targets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Commands map[string]*DeltaCommandManifest `protobuf:"bytes,7,rep,name=commands,proto3" json:"commands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + IsCi bool `protobuf:"varint,9,opt,name=is_ci,json=isCi,proto3" json:"is_ci,omitempty"` + GitAuthor string `protobuf:"bytes,10,opt,name=git_author,json=gitAuthor,proto3" json:"git_author,omitempty"` + GitConfigEmail string `protobuf:"bytes,11,opt,name=git_config_email,json=gitConfigEmail,proto3" json:"git_config_email,omitempty"` +} + +func (x *DeltaManifest_FieldsDelta) Reset() { + *x = DeltaManifest_FieldsDelta{} + if protoimpl.UnsafeEnabled { + mi := &file_delta_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeltaManifest_FieldsDelta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeltaManifest_FieldsDelta) ProtoMessage() {} + +func (x *DeltaManifest_FieldsDelta) ProtoReflect() protoreflect.Message { + mi := &file_delta_proto_msgTypes[7] + 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 DeltaManifest_FieldsDelta.ProtoReflect.Descriptor instead. +func (*DeltaManifest_FieldsDelta) Descriptor() ([]byte, []int) { + return file_delta_proto_rawDescGZIP(), []int{3, 1} +} + +func (x *DeltaManifest_FieldsDelta) GetMainTargetId() string { + if x != nil { + return x.MainTargetId + } + return "" +} + +func (x *DeltaManifest_FieldsDelta) GetStartedAtUnixNanos() uint64 { + if x != nil { + return x.StartedAtUnixNanos + } + return 0 +} + +func (x *DeltaManifest_FieldsDelta) GetEndedAtUnixNanos() uint64 { + if x != nil { + return x.EndedAtUnixNanos + } + return 0 +} + +func (x *DeltaManifest_FieldsDelta) GetStatus() RunStatus { + if x != nil { + return x.Status + } + return RunStatus_RUN_STATUS_UNKNOWN +} + +func (x *DeltaManifest_FieldsDelta) GetHasFailure() bool { + if x != nil { + return x.HasFailure + } + return false +} + +func (x *DeltaManifest_FieldsDelta) GetFailure() *Failure { + if x != nil { + return x.Failure + } + return nil +} + +func (x *DeltaManifest_FieldsDelta) GetTargets() map[string]*DeltaTargetManifest { + if x != nil { + return x.Targets + } + return nil +} + +func (x *DeltaManifest_FieldsDelta) GetCommands() map[string]*DeltaCommandManifest { + if x != nil { + return x.Commands + } + return nil +} + +func (x *DeltaManifest_FieldsDelta) GetIsCi() bool { + if x != nil { + return x.IsCi + } + return false +} + +func (x *DeltaManifest_FieldsDelta) GetGitAuthor() string { + if x != nil { + return x.GitAuthor + } + return "" +} + +func (x *DeltaManifest_FieldsDelta) GetGitConfigEmail() string { + if x != nil { + return x.GitConfigEmail + } + return "" +} + +var File_delta_proto protoreflect.FileDescriptor + +var file_delta_proto_rawDesc = []byte{ + 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x61, + 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x1a, 0x0e, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x02, 0x0a, 0x05, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0e, 0x64, 0x65, 0x6c, 0x74, 0x61, + 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x6e, + 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6c, + 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x08, 0x64, 0x65, 0x6c, 0x74, + 0x61, 0x4c, 0x6f, 0x67, 0x12, 0x59, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, + 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x46, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x11, 0x64, 0x65, + 0x6c, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x42, + 0x12, 0x0a, 0x10, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6f, 0x6e, + 0x65, 0x6f, 0x66, 0x22, 0xa4, 0x01, 0x0a, 0x08, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4c, 0x6f, 0x67, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x55, 0x6e, 0x69, + 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x95, 0x01, 0x0a, 0x11, 0x44, + 0x65, 0x6c, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x4c, 0x6f, 0x67, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x30, 0x0a, + 0x14, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, + 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, + 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x49, 0x64, 0x22, 0x89, 0x09, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x6c, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x52, + 0x75, 0x6e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x72, 0x65, + 0x73, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x49, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x44, 0x65, + 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x73, 0x12, 0x49, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, + 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, + 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x42, 0x75, 0x69, + 0x6c, 0x64, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x1a, 0x7c, 0x0a, 0x0b, + 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x42, 0x75, 0x69, 0x6c, 0x64, 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, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, + 0x6f, 0x72, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, + 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x89, 0x06, 0x0a, 0x0b, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, + 0x69, 0x6e, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x31, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x75, + 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, + 0x6e, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, + 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x10, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, + 0x6f, 0x73, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, + 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, + 0x61, 0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x68, 0x61, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x37, 0x0a, 0x07, + 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x07, 0x66, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x56, 0x0a, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x44, 0x65, + 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x12, 0x59, 0x0a, + 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x3d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x4d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x44, 0x65, 0x6c, 0x74, 0x61, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x12, 0x13, 0x0a, 0x05, 0x69, 0x73, 0x5f, 0x63, + 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x69, 0x12, 0x1d, 0x0a, + 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, + 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x1a, 0x65, 0x0a, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 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, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x44, + 0x65, 0x6c, 0x74, 0x61, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, + 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x67, 0x0a, + 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 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, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, + 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x82, + 0x04, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, + 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, + 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x69, + 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x66, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x41, 0x72, 0x67, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x61, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69, + 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x72, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, + 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, + 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x5f, + 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x73, 0x4f, 0x6e, 0x22, 0xce, 0x06, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x52, 0x75, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, + 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x1b, 0x0a, + 0x09, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x69, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, + 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, + 0x61, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x61, 0x73, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, + 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, + 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, + 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x5f, + 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, + 0x68, 0x61, 0x73, 0x48, 0x61, 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, + 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x11, 0x68, 0x61, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x4d, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x42, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6f, 0x6e, 0x18, + 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x09, 0x64, 0x65, 0x70, 0x65, + 0x6e, 0x64, 0x73, 0x4f, 0x6e, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 0x10, + 0x07, 0x52, 0x07, 0x69, 0x73, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x52, 0x08, 0x68, 0x61, 0x73, 0x5f, + 0x70, 0x75, 0x73, 0x68, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_delta_proto_rawDescOnce sync.Once + file_delta_proto_rawDescData = file_delta_proto_rawDesc +) + +func file_delta_proto_rawDescGZIP() []byte { + file_delta_proto_rawDescOnce.Do(func() { + file_delta_proto_rawDescData = protoimpl.X.CompressGZIP(file_delta_proto_rawDescData) + }) + return file_delta_proto_rawDescData +} + +var file_delta_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_delta_proto_goTypes = []interface{}{ + (*Delta)(nil), // 0: api.public.logstream.Delta + (*DeltaLog)(nil), // 1: api.public.logstream.DeltaLog + (*DeltaFormattedLog)(nil), // 2: api.public.logstream.DeltaFormattedLog + (*DeltaManifest)(nil), // 3: api.public.logstream.DeltaManifest + (*DeltaTargetManifest)(nil), // 4: api.public.logstream.DeltaTargetManifest + (*DeltaCommandManifest)(nil), // 5: api.public.logstream.DeltaCommandManifest + (*DeltaManifest_ResumeBuild)(nil), // 6: api.public.logstream.DeltaManifest.ResumeBuild + (*DeltaManifest_FieldsDelta)(nil), // 7: api.public.logstream.DeltaManifest.FieldsDelta + nil, // 8: api.public.logstream.DeltaManifest.FieldsDelta.TargetsEntry + nil, // 9: api.public.logstream.DeltaManifest.FieldsDelta.CommandsEntry + (*RunManifest)(nil), // 10: api.public.logstream.RunManifest + (RunStatus)(0), // 11: api.public.logstream.RunStatus + (*SourceLocation)(nil), // 12: api.public.logstream.SourceLocation + (*CommandTarget)(nil), // 13: api.public.logstream.CommandTarget + (*Failure)(nil), // 14: api.public.logstream.Failure +} +var file_delta_proto_depIdxs = []int32{ + 3, // 0: api.public.logstream.Delta.delta_manifest:type_name -> api.public.logstream.DeltaManifest + 1, // 1: api.public.logstream.Delta.delta_log:type_name -> api.public.logstream.DeltaLog + 2, // 2: api.public.logstream.Delta.delta_formatted_log:type_name -> api.public.logstream.DeltaFormattedLog + 10, // 3: api.public.logstream.DeltaManifest.reset_all:type_name -> api.public.logstream.RunManifest + 7, // 4: api.public.logstream.DeltaManifest.fields:type_name -> api.public.logstream.DeltaManifest.FieldsDelta + 6, // 5: api.public.logstream.DeltaManifest.resume:type_name -> api.public.logstream.DeltaManifest.ResumeBuild + 11, // 6: api.public.logstream.DeltaTargetManifest.status:type_name -> api.public.logstream.RunStatus + 11, // 7: api.public.logstream.DeltaCommandManifest.status:type_name -> api.public.logstream.RunStatus + 12, // 8: api.public.logstream.DeltaCommandManifest.source_location:type_name -> api.public.logstream.SourceLocation + 13, // 9: api.public.logstream.DeltaCommandManifest.depends_on:type_name -> api.public.logstream.CommandTarget + 11, // 10: api.public.logstream.DeltaManifest.FieldsDelta.status:type_name -> api.public.logstream.RunStatus + 14, // 11: api.public.logstream.DeltaManifest.FieldsDelta.failure:type_name -> api.public.logstream.Failure + 8, // 12: api.public.logstream.DeltaManifest.FieldsDelta.targets:type_name -> api.public.logstream.DeltaManifest.FieldsDelta.TargetsEntry + 9, // 13: api.public.logstream.DeltaManifest.FieldsDelta.commands:type_name -> api.public.logstream.DeltaManifest.FieldsDelta.CommandsEntry + 4, // 14: api.public.logstream.DeltaManifest.FieldsDelta.TargetsEntry.value:type_name -> api.public.logstream.DeltaTargetManifest + 5, // 15: api.public.logstream.DeltaManifest.FieldsDelta.CommandsEntry.value:type_name -> api.public.logstream.DeltaCommandManifest + 16, // [16:16] is the sub-list for method output_type + 16, // [16:16] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name +} + +func init() { file_delta_proto_init() } +func file_delta_proto_init() { + if File_delta_proto != nil { + return + } + file_manifest_proto_init() + if !protoimpl.UnsafeEnabled { + file_delta_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Delta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_delta_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeltaLog); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_delta_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeltaFormattedLog); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_delta_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeltaManifest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_delta_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeltaTargetManifest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_delta_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeltaCommandManifest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_delta_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeltaManifest_ResumeBuild); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_delta_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeltaManifest_FieldsDelta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_delta_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*Delta_DeltaManifest)(nil), + (*Delta_DeltaLog)(nil), + (*Delta_DeltaFormattedLog)(nil), + } + file_delta_proto_msgTypes[3].OneofWrappers = []interface{}{ + (*DeltaManifest_ResetAll)(nil), + (*DeltaManifest_Fields)(nil), + (*DeltaManifest_Resume)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_delta_proto_rawDesc, + NumEnums: 0, + NumMessages: 10, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_delta_proto_goTypes, + DependencyIndexes: file_delta_proto_depIdxs, + MessageInfos: file_delta_proto_msgTypes, + }.Build() + File_delta_proto = out.File + file_delta_proto_rawDesc = nil + file_delta_proto_goTypes = nil + file_delta_proto_depIdxs = nil +} diff --git a/logstream/delta.proto b/logstream/delta.proto new file mode 100644 index 0000000000..6c2c66ebb6 --- /dev/null +++ b/logstream/delta.proto @@ -0,0 +1,121 @@ +syntax = "proto3"; +package api.public.logstream; +option go_package = "github.com/EarthBuild/earthbuild/logstream"; + +import "manifest.proto"; + +message Delta { + int32 version = 1; + oneof delta_type_oneof { + // delta_manifest represents a change to the run manifest. + DeltaManifest delta_manifest = 2; + // delta_log is a piece of a log stream of bytes, for a specific + // command as part of the build. No presentation layer information + // is embedded in this stream. The log information is the raw + // output of the commands passed directly, without any changes. + DeltaLog delta_log = 3; + // delta_formatted_log is a piece of a log stream of bytes, with + // all the appropriate formatting information embedded, including + // target prefixes, ansi escape codes for colors, etc. This data is + // broken down by targets, plus a special target_id "_full" will + // contain the exact output of the entire build. + DeltaFormattedLog delta_formatted_log = 4; + } +} + +message DeltaLog { + // target_id is the target the command belongs to, if any. + string target_id = 1; + // command_id is the identifier of the command that generated the + // log data. + string command_id = 2; + int32 stream = 3; // stdout or stderr + uint64 timestamp_unix_nanos = 4; + // data is the raw log data, as generated by the command. No formatting is + // added on top (no ansii color codes, no target prefixes, etc). + bytes data = 5; +} + +message DeltaFormattedLog { + // target_id is the target the command belongs to, if any. A special + // target_id "_full" will contain the exact output of the entire build. + string target_id = 1; + uint64 timestamp_unix_nanos = 2; + // data is the formatted log data, with all the appropriate formatting + // information embedded, including target prefixes, ansi escape codes for + // colors, etc. + bytes data = 3; + string command_id = 4; +} + +message DeltaManifest { + oneof delta_manifest_oneof { + RunManifest reset_all = 1; + FieldsDelta fields = 2; + ResumeBuild resume = 3; + } + + message ResumeBuild { + string build_id = 1; + string token = 2; + string org_name = 3; + string project_name = 4; + } + + message FieldsDelta { + string main_target_id = 8; + uint64 started_at_unix_nanos = 1; + uint64 ended_at_unix_nanos = 2; + RunStatus status = 3; + bool has_failure = 6; + Failure failure = 4; + map targets = 5; + map commands = 7; + bool is_ci = 9; + string git_author = 10; + string git_config_email = 11; + } +} + +message DeltaTargetManifest { + string name = 1; + string canonical_name = 2; + string git_url = 10; + string local_path = 11; + string tag = 12; + string import_ref = 13; + repeated string override_args = 3; + string initial_platform = 4; + string final_platform = 8; + string runner = 9; + RunStatus status = 5; + uint64 started_at_unix_nanos = 6; + uint64 ended_at_unix_nanos = 7; + repeated string depends_on = 14; +} + +message DeltaCommandManifest { + reserved 5, 6; + reserved "is_push", "has_push"; + + string name = 1; + string target_id = 17; + string category = 19; + string platform = 18; + RunStatus status = 2; + bool has_cached = 3; + bool is_cached = 4; + bool has_local = 7; + bool is_local = 8; + bool has_interactive = 20; + bool is_interactive = 21; + uint64 started_at_unix_nanos = 9; + uint64 ended_at_unix_nanos = 10; + bool has_has_progress = 11; + bool has_progress = 12; + int32 progress = 13; + string error_message = 14; + bool has_source_location = 16; + SourceLocation source_location = 15; + repeated CommandTarget depends_on = 22; +} diff --git a/logstream/manifest.pb.go b/logstream/manifest.pb.go new file mode 100644 index 0000000000..9465e05180 --- /dev/null +++ b/logstream/manifest.pb.go @@ -0,0 +1,1278 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.31.0 +// protoc (unknown) +// source: manifest.proto + +package logstream + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type RunStatus int32 + +const ( + RunStatus_RUN_STATUS_UNKNOWN RunStatus = 0 + RunStatus_RUN_STATUS_NOT_STARTED RunStatus = 1 + RunStatus_RUN_STATUS_IN_PROGRESS RunStatus = 2 + RunStatus_RUN_STATUS_SUCCESS RunStatus = 3 + RunStatus_RUN_STATUS_FAILURE RunStatus = 4 + RunStatus_RUN_STATUS_CANCELED RunStatus = 5 +) + +// Enum value maps for RunStatus. +var ( + RunStatus_name = map[int32]string{ + 0: "RUN_STATUS_UNKNOWN", + 1: "RUN_STATUS_NOT_STARTED", + 2: "RUN_STATUS_IN_PROGRESS", + 3: "RUN_STATUS_SUCCESS", + 4: "RUN_STATUS_FAILURE", + 5: "RUN_STATUS_CANCELED", + } + RunStatus_value = map[string]int32{ + "RUN_STATUS_UNKNOWN": 0, + "RUN_STATUS_NOT_STARTED": 1, + "RUN_STATUS_IN_PROGRESS": 2, + "RUN_STATUS_SUCCESS": 3, + "RUN_STATUS_FAILURE": 4, + "RUN_STATUS_CANCELED": 5, + } +) + +func (x RunStatus) Enum() *RunStatus { + p := new(RunStatus) + *p = x + return p +} + +func (x RunStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (RunStatus) Descriptor() protoreflect.EnumDescriptor { + return file_manifest_proto_enumTypes[0].Descriptor() +} + +func (RunStatus) Type() protoreflect.EnumType { + return &file_manifest_proto_enumTypes[0] +} + +func (x RunStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use RunStatus.Descriptor instead. +func (RunStatus) EnumDescriptor() ([]byte, []int) { + return file_manifest_proto_rawDescGZIP(), []int{0} +} + +type FailureType int32 + +const ( + FailureType_FAILURE_TYPE_UNKNOWN FailureType = 0 + FailureType_FAILURE_TYPE_OTHER FailureType = 1 + FailureType_FAILURE_TYPE_NONZERO_EXIT FailureType = 2 + FailureType_FAILURE_TYPE_FILE_NOT_FOUND FailureType = 3 + FailureType_FAILURE_TYPE_SYNTAX FailureType = 4 + FailureType_FAILURE_TYPE_OOM_KILLED FailureType = 5 + FailureType_FAILURE_TYPE_BUILDKIT_CRASHED FailureType = 6 + FailureType_FAILURE_TYPE_CONNECTION_FAILURE FailureType = 7 + FailureType_FAILURE_TYPE_NEEDS_PRIVILEGED FailureType = 8 + FailureType_FAILURE_TYPE_GIT FailureType = 9 + FailureType_FAILURE_TYPE_RATE_LIMITED FailureType = 10 + FailureType_FAILURE_TYPE_INVALID_PARAM FailureType = 11 + FailureType_FAILURE_TYPE_AUTO_SKIP FailureType = 12 +) + +// Enum value maps for FailureType. +var ( + FailureType_name = map[int32]string{ + 0: "FAILURE_TYPE_UNKNOWN", + 1: "FAILURE_TYPE_OTHER", + 2: "FAILURE_TYPE_NONZERO_EXIT", + 3: "FAILURE_TYPE_FILE_NOT_FOUND", + 4: "FAILURE_TYPE_SYNTAX", + 5: "FAILURE_TYPE_OOM_KILLED", + 6: "FAILURE_TYPE_BUILDKIT_CRASHED", + 7: "FAILURE_TYPE_CONNECTION_FAILURE", + 8: "FAILURE_TYPE_NEEDS_PRIVILEGED", + 9: "FAILURE_TYPE_GIT", + 10: "FAILURE_TYPE_RATE_LIMITED", + 11: "FAILURE_TYPE_INVALID_PARAM", + 12: "FAILURE_TYPE_AUTO_SKIP", + } + FailureType_value = map[string]int32{ + "FAILURE_TYPE_UNKNOWN": 0, + "FAILURE_TYPE_OTHER": 1, + "FAILURE_TYPE_NONZERO_EXIT": 2, + "FAILURE_TYPE_FILE_NOT_FOUND": 3, + "FAILURE_TYPE_SYNTAX": 4, + "FAILURE_TYPE_OOM_KILLED": 5, + "FAILURE_TYPE_BUILDKIT_CRASHED": 6, + "FAILURE_TYPE_CONNECTION_FAILURE": 7, + "FAILURE_TYPE_NEEDS_PRIVILEGED": 8, + "FAILURE_TYPE_GIT": 9, + "FAILURE_TYPE_RATE_LIMITED": 10, + "FAILURE_TYPE_INVALID_PARAM": 11, + "FAILURE_TYPE_AUTO_SKIP": 12, + } +) + +func (x FailureType) Enum() *FailureType { + p := new(FailureType) + *p = x + return p +} + +func (x FailureType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FailureType) Descriptor() protoreflect.EnumDescriptor { + return file_manifest_proto_enumTypes[1].Descriptor() +} + +func (FailureType) Type() protoreflect.EnumType { + return &file_manifest_proto_enumTypes[1] +} + +func (x FailureType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FailureType.Descriptor instead. +func (FailureType) EnumDescriptor() ([]byte, []int) { + return file_manifest_proto_rawDescGZIP(), []int{1} +} + +type RunManifest 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"` + Version int32 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + CreatedAtUnixNanos uint64 `protobuf:"varint,3,opt,name=created_at_unix_nanos,json=createdAtUnixNanos,proto3" json:"created_at_unix_nanos,omitempty"` + StartedAtUnixNanos uint64 `protobuf:"varint,4,opt,name=started_at_unix_nanos,json=startedAtUnixNanos,proto3" json:"started_at_unix_nanos,omitempty"` + EndedAtUnixNanos uint64 `protobuf:"varint,5,opt,name=ended_at_unix_nanos,json=endedAtUnixNanos,proto3" json:"ended_at_unix_nanos,omitempty"` + Status RunStatus `protobuf:"varint,6,opt,name=status,proto3,enum=api.public.logstream.RunStatus" json:"status,omitempty"` + Targets map[string]*TargetManifest `protobuf:"bytes,7,rep,name=targets,proto3" json:"targets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Commands map[string]*CommandManifest `protobuf:"bytes,13,rep,name=commands,proto3" json:"commands,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MainTargetId string `protobuf:"bytes,8,opt,name=main_target_id,json=mainTargetId,proto3" json:"main_target_id,omitempty"` + Failure *Failure `protobuf:"bytes,9,opt,name=failure,proto3" json:"failure,omitempty"` + ResumeToken string `protobuf:"bytes,16,opt,name=resume_token,json=resumeToken,proto3" json:"resume_token,omitempty"` + IsCi bool `protobuf:"varint,17,opt,name=is_ci,json=isCi,proto3" json:"is_ci,omitempty"` + // org_name is the name of the organization that owns this run. + // May be empty for builds that don't have a PROJECT declaration. + OrgName string `protobuf:"bytes,14,opt,name=org_name,json=orgName,proto3" json:"org_name,omitempty"` + // project_name is the name of the project that owns this run. + // May be empty for builds that don't have a PROJECT declaration. + ProjectName string `protobuf:"bytes,15,opt,name=project_name,json=projectName,proto3" json:"project_name,omitempty"` + // The UUID of the user that ran the build. + UserId string `protobuf:"bytes,10,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + // The UUID of the organization that owns this run. + OrgId string `protobuf:"bytes,11,opt,name=org_id,json=orgId,proto3" json:"org_id,omitempty"` + // The UUID of the project that owns this run. + ProjectId string `protobuf:"bytes,12,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"` + GitConfigEmail string `protobuf:"bytes,18,opt,name=git_config_email,json=gitConfigEmail,proto3" json:"git_config_email,omitempty"` + GitAuthor string `protobuf:"bytes,19,opt,name=git_author,json=gitAuthor,proto3" json:"git_author,omitempty"` +} + +func (x *RunManifest) Reset() { + *x = RunManifest{} + if protoimpl.UnsafeEnabled { + mi := &file_manifest_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RunManifest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RunManifest) ProtoMessage() {} + +func (x *RunManifest) ProtoReflect() protoreflect.Message { + mi := &file_manifest_proto_msgTypes[0] + 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 RunManifest.ProtoReflect.Descriptor instead. +func (*RunManifest) Descriptor() ([]byte, []int) { + return file_manifest_proto_rawDescGZIP(), []int{0} +} + +func (x *RunManifest) GetBuildId() string { + if x != nil { + return x.BuildId + } + return "" +} + +func (x *RunManifest) GetVersion() int32 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *RunManifest) GetCreatedAtUnixNanos() uint64 { + if x != nil { + return x.CreatedAtUnixNanos + } + return 0 +} + +func (x *RunManifest) GetStartedAtUnixNanos() uint64 { + if x != nil { + return x.StartedAtUnixNanos + } + return 0 +} + +func (x *RunManifest) GetEndedAtUnixNanos() uint64 { + if x != nil { + return x.EndedAtUnixNanos + } + return 0 +} + +func (x *RunManifest) GetStatus() RunStatus { + if x != nil { + return x.Status + } + return RunStatus_RUN_STATUS_UNKNOWN +} + +func (x *RunManifest) GetTargets() map[string]*TargetManifest { + if x != nil { + return x.Targets + } + return nil +} + +func (x *RunManifest) GetCommands() map[string]*CommandManifest { + if x != nil { + return x.Commands + } + return nil +} + +func (x *RunManifest) GetMainTargetId() string { + if x != nil { + return x.MainTargetId + } + return "" +} + +func (x *RunManifest) GetFailure() *Failure { + if x != nil { + return x.Failure + } + return nil +} + +func (x *RunManifest) GetResumeToken() string { + if x != nil { + return x.ResumeToken + } + return "" +} + +func (x *RunManifest) GetIsCi() bool { + if x != nil { + return x.IsCi + } + return false +} + +func (x *RunManifest) GetOrgName() string { + if x != nil { + return x.OrgName + } + return "" +} + +func (x *RunManifest) GetProjectName() string { + if x != nil { + return x.ProjectName + } + return "" +} + +func (x *RunManifest) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +func (x *RunManifest) GetOrgId() string { + if x != nil { + return x.OrgId + } + return "" +} + +func (x *RunManifest) GetProjectId() string { + if x != nil { + return x.ProjectId + } + return "" +} + +func (x *RunManifest) GetGitConfigEmail() string { + if x != nil { + return x.GitConfigEmail + } + return "" +} + +func (x *RunManifest) GetGitAuthor() string { + if x != nil { + return x.GitAuthor + } + return "" +} + +type Failure struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type FailureType `protobuf:"varint,1,opt,name=type,proto3,enum=api.public.logstream.FailureType" json:"type,omitempty"` + TargetId string `protobuf:"bytes,2,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + CommandId string `protobuf:"bytes,3,opt,name=command_id,json=commandId,proto3" json:"command_id,omitempty"` + ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + Output []byte `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"` + HelpMessage string `protobuf:"bytes,6,opt,name=help_message,json=helpMessage,proto3" json:"help_message,omitempty"` +} + +func (x *Failure) Reset() { + *x = Failure{} + if protoimpl.UnsafeEnabled { + mi := &file_manifest_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Failure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Failure) ProtoMessage() {} + +func (x *Failure) ProtoReflect() protoreflect.Message { + mi := &file_manifest_proto_msgTypes[1] + 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 Failure.ProtoReflect.Descriptor instead. +func (*Failure) Descriptor() ([]byte, []int) { + return file_manifest_proto_rawDescGZIP(), []int{1} +} + +func (x *Failure) GetType() FailureType { + if x != nil { + return x.Type + } + return FailureType_FAILURE_TYPE_UNKNOWN +} + +func (x *Failure) GetTargetId() string { + if x != nil { + return x.TargetId + } + return "" +} + +func (x *Failure) GetCommandId() string { + if x != nil { + return x.CommandId + } + return "" +} + +func (x *Failure) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *Failure) GetOutput() []byte { + if x != nil { + return x.Output + } + return nil +} + +func (x *Failure) GetHelpMessage() string { + if x != nil { + return x.HelpMessage + } + return "" +} + +type TargetManifest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // e.g. +build + CanonicalName string `protobuf:"bytes,2,opt,name=canonical_name,json=canonicalName,proto3" json:"canonical_name,omitempty"` // e.g. github.com/foo/bar/buz:main+build + OverrideArgs []string `protobuf:"bytes,3,rep,name=override_args,json=overrideArgs,proto3" json:"override_args,omitempty"` + GitUrl string `protobuf:"bytes,10,opt,name=git_url,json=gitUrl,proto3" json:"git_url,omitempty"` + LocalPath string `protobuf:"bytes,11,opt,name=local_path,json=localPath,proto3" json:"local_path,omitempty"` + Tag string `protobuf:"bytes,12,opt,name=tag,proto3" json:"tag,omitempty"` + ImportRef string `protobuf:"bytes,13,opt,name=import_ref,json=importRef,proto3" json:"import_ref,omitempty"` + InitialPlatform string `protobuf:"bytes,4,opt,name=initial_platform,json=initialPlatform,proto3" json:"initial_platform,omitempty"` + FinalPlatform string `protobuf:"bytes,8,opt,name=final_platform,json=finalPlatform,proto3" json:"final_platform,omitempty"` + // runner is the runner identifier that this target runs on. Possible formats: + // * local: + // * bk: + // * sat:/ + Runner string `protobuf:"bytes,9,opt,name=runner,proto3" json:"runner,omitempty"` + Status RunStatus `protobuf:"varint,5,opt,name=status,proto3,enum=api.public.logstream.RunStatus" json:"status,omitempty"` + StartedAtUnixNanos uint64 `protobuf:"varint,6,opt,name=started_at_unix_nanos,json=startedAtUnixNanos,proto3" json:"started_at_unix_nanos,omitempty"` + EndedAtUnixNanos uint64 `protobuf:"varint,7,opt,name=ended_at_unix_nanos,json=endedAtUnixNanos,proto3" json:"ended_at_unix_nanos,omitempty"` + DependsOn []string `protobuf:"bytes,14,rep,name=depends_on,json=dependsOn,proto3" json:"depends_on,omitempty"` +} + +func (x *TargetManifest) Reset() { + *x = TargetManifest{} + if protoimpl.UnsafeEnabled { + mi := &file_manifest_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TargetManifest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TargetManifest) ProtoMessage() {} + +func (x *TargetManifest) ProtoReflect() protoreflect.Message { + mi := &file_manifest_proto_msgTypes[2] + 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 TargetManifest.ProtoReflect.Descriptor instead. +func (*TargetManifest) Descriptor() ([]byte, []int) { + return file_manifest_proto_rawDescGZIP(), []int{2} +} + +func (x *TargetManifest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *TargetManifest) GetCanonicalName() string { + if x != nil { + return x.CanonicalName + } + return "" +} + +func (x *TargetManifest) GetOverrideArgs() []string { + if x != nil { + return x.OverrideArgs + } + return nil +} + +func (x *TargetManifest) GetGitUrl() string { + if x != nil { + return x.GitUrl + } + return "" +} + +func (x *TargetManifest) GetLocalPath() string { + if x != nil { + return x.LocalPath + } + return "" +} + +func (x *TargetManifest) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *TargetManifest) GetImportRef() string { + if x != nil { + return x.ImportRef + } + return "" +} + +func (x *TargetManifest) GetInitialPlatform() string { + if x != nil { + return x.InitialPlatform + } + return "" +} + +func (x *TargetManifest) GetFinalPlatform() string { + if x != nil { + return x.FinalPlatform + } + return "" +} + +func (x *TargetManifest) GetRunner() string { + if x != nil { + return x.Runner + } + return "" +} + +func (x *TargetManifest) GetStatus() RunStatus { + if x != nil { + return x.Status + } + return RunStatus_RUN_STATUS_UNKNOWN +} + +func (x *TargetManifest) GetStartedAtUnixNanos() uint64 { + if x != nil { + return x.StartedAtUnixNanos + } + return 0 +} + +func (x *TargetManifest) GetEndedAtUnixNanos() uint64 { + if x != nil { + return x.EndedAtUnixNanos + } + return 0 +} + +func (x *TargetManifest) GetDependsOn() []string { + if x != nil { + return x.DependsOn + } + return nil +} + +type CommandTarget struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TargetId string `protobuf:"bytes,1,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + ReferencedName string `protobuf:"bytes,2,opt,name=referenced_name,json=referencedName,proto3" json:"referenced_name,omitempty"` +} + +func (x *CommandTarget) Reset() { + *x = CommandTarget{} + if protoimpl.UnsafeEnabled { + mi := &file_manifest_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommandTarget) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommandTarget) ProtoMessage() {} + +func (x *CommandTarget) ProtoReflect() protoreflect.Message { + mi := &file_manifest_proto_msgTypes[3] + 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 CommandTarget.ProtoReflect.Descriptor instead. +func (*CommandTarget) Descriptor() ([]byte, []int) { + return file_manifest_proto_rawDescGZIP(), []int{3} +} + +func (x *CommandTarget) GetTargetId() string { + if x != nil { + return x.TargetId + } + return "" +} + +func (x *CommandTarget) GetReferencedName() string { + if x != nil { + return x.ReferencedName + } + return "" +} + +type CommandManifest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // target_id is the ID of the target this command is part of + // (may be empty for commands that are not part of a target) + TargetId string `protobuf:"bytes,12,opt,name=target_id,json=targetId,proto3" json:"target_id,omitempty"` + // category is a grouping separate from target. This is used for things + // like "context", "output", or Dockerfile stages, which would + // not be part of an Earthly target. + Category string `protobuf:"bytes,14,opt,name=category,proto3" json:"category,omitempty"` + Platform string `protobuf:"bytes,13,opt,name=platform,proto3" json:"platform,omitempty"` + Status RunStatus `protobuf:"varint,2,opt,name=status,proto3,enum=api.public.logstream.RunStatus" json:"status,omitempty"` + IsCached bool `protobuf:"varint,3,opt,name=is_cached,json=isCached,proto3" json:"is_cached,omitempty"` + IsLocal bool `protobuf:"varint,5,opt,name=is_local,json=isLocal,proto3" json:"is_local,omitempty"` + IsInteractive bool `protobuf:"varint,15,opt,name=is_interactive,json=isInteractive,proto3" json:"is_interactive,omitempty"` + StartedAtUnixNanos uint64 `protobuf:"varint,6,opt,name=started_at_unix_nanos,json=startedAtUnixNanos,proto3" json:"started_at_unix_nanos,omitempty"` + EndedAtUnixNanos uint64 `protobuf:"varint,7,opt,name=ended_at_unix_nanos,json=endedAtUnixNanos,proto3" json:"ended_at_unix_nanos,omitempty"` + HasProgress bool `protobuf:"varint,8,opt,name=has_progress,json=hasProgress,proto3" json:"has_progress,omitempty"` + Progress int32 `protobuf:"varint,9,opt,name=progress,proto3" json:"progress,omitempty"` + // error_message is a string representation of an error related to this command. + // The presence of an error here might not mean that the command has failed, + // if the error is transient. + ErrorMessage string `protobuf:"bytes,10,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + SourceLocation *SourceLocation `protobuf:"bytes,11,opt,name=source_location,json=sourceLocation,proto3" json:"source_location,omitempty"` + // depends_on contains any targets that have been referenced by this command + // and the target name they were referenced with. + DependsOn []*CommandTarget `protobuf:"bytes,16,rep,name=depends_on,json=dependsOn,proto3" json:"depends_on,omitempty"` +} + +func (x *CommandManifest) Reset() { + *x = CommandManifest{} + if protoimpl.UnsafeEnabled { + mi := &file_manifest_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommandManifest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommandManifest) ProtoMessage() {} + +func (x *CommandManifest) ProtoReflect() protoreflect.Message { + mi := &file_manifest_proto_msgTypes[4] + 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 CommandManifest.ProtoReflect.Descriptor instead. +func (*CommandManifest) Descriptor() ([]byte, []int) { + return file_manifest_proto_rawDescGZIP(), []int{4} +} + +func (x *CommandManifest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CommandManifest) GetTargetId() string { + if x != nil { + return x.TargetId + } + return "" +} + +func (x *CommandManifest) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *CommandManifest) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *CommandManifest) GetStatus() RunStatus { + if x != nil { + return x.Status + } + return RunStatus_RUN_STATUS_UNKNOWN +} + +func (x *CommandManifest) GetIsCached() bool { + if x != nil { + return x.IsCached + } + return false +} + +func (x *CommandManifest) GetIsLocal() bool { + if x != nil { + return x.IsLocal + } + return false +} + +func (x *CommandManifest) GetIsInteractive() bool { + if x != nil { + return x.IsInteractive + } + return false +} + +func (x *CommandManifest) GetStartedAtUnixNanos() uint64 { + if x != nil { + return x.StartedAtUnixNanos + } + return 0 +} + +func (x *CommandManifest) GetEndedAtUnixNanos() uint64 { + if x != nil { + return x.EndedAtUnixNanos + } + return 0 +} + +func (x *CommandManifest) GetHasProgress() bool { + if x != nil { + return x.HasProgress + } + return false +} + +func (x *CommandManifest) GetProgress() int32 { + if x != nil { + return x.Progress + } + return 0 +} + +func (x *CommandManifest) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *CommandManifest) GetSourceLocation() *SourceLocation { + if x != nil { + return x.SourceLocation + } + return nil +} + +func (x *CommandManifest) GetDependsOn() []*CommandTarget { + if x != nil { + return x.DependsOn + } + return nil +} + +type SourceLocation struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // repository_url is the URL of the repository. + RepositoryUrl string `protobuf:"bytes,1,opt,name=repository_url,json=repositoryUrl,proto3" json:"repository_url,omitempty"` + // repository_hash is the Git sha hash of the repository. + RepositoryHash string `protobuf:"bytes,7,opt,name=repository_hash,json=repositoryHash,proto3" json:"repository_hash,omitempty"` + // file is the name of the Earthfile relative to the repository. + File string `protobuf:"bytes,2,opt,name=file,proto3" json:"file,omitempty"` + StartLine int32 `protobuf:"varint,3,opt,name=start_line,json=startLine,proto3" json:"start_line,omitempty"` + StartColumn int32 `protobuf:"varint,4,opt,name=start_column,json=startColumn,proto3" json:"start_column,omitempty"` + EndLine int32 `protobuf:"varint,5,opt,name=end_line,json=endLine,proto3" json:"end_line,omitempty"` + EndColumn int32 `protobuf:"varint,6,opt,name=end_column,json=endColumn,proto3" json:"end_column,omitempty"` +} + +func (x *SourceLocation) Reset() { + *x = SourceLocation{} + if protoimpl.UnsafeEnabled { + mi := &file_manifest_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SourceLocation) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SourceLocation) ProtoMessage() {} + +func (x *SourceLocation) ProtoReflect() protoreflect.Message { + mi := &file_manifest_proto_msgTypes[5] + 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 SourceLocation.ProtoReflect.Descriptor instead. +func (*SourceLocation) Descriptor() ([]byte, []int) { + return file_manifest_proto_rawDescGZIP(), []int{5} +} + +func (x *SourceLocation) GetRepositoryUrl() string { + if x != nil { + return x.RepositoryUrl + } + return "" +} + +func (x *SourceLocation) GetRepositoryHash() string { + if x != nil { + return x.RepositoryHash + } + return "" +} + +func (x *SourceLocation) GetFile() string { + if x != nil { + return x.File + } + return "" +} + +func (x *SourceLocation) GetStartLine() int32 { + if x != nil { + return x.StartLine + } + return 0 +} + +func (x *SourceLocation) GetStartColumn() int32 { + if x != nil { + return x.StartColumn + } + return 0 +} + +func (x *SourceLocation) GetEndLine() int32 { + if x != nil { + return x.EndLine + } + return 0 +} + +func (x *SourceLocation) GetEndColumn() int32 { + if x != nil { + return x.EndColumn + } + return 0 +} + +var File_manifest_proto protoreflect.FileDescriptor + +var file_manifest_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x14, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x22, 0xda, 0x07, 0x0a, 0x0b, 0x52, 0x75, 0x6e, 0x4d, 0x61, + 0x6e, 0x69, 0x66, 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, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x15, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, + 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x31, + 0x0a, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x75, 0x6e, 0x69, + 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, + 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x75, 0x6e, + 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x73, + 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, + 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x48, 0x0a, 0x07, 0x74, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x52, 0x75, 0x6e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x73, 0x12, 0x4b, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x18, + 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x52, 0x75, 0x6e, + 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, + 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x69, 0x6e, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, + 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x69, 0x73, 0x5f, 0x63, 0x69, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x69, 0x73, 0x43, 0x69, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x67, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x67, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x15, + 0x0a, 0x06, 0x6f, 0x72, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x6f, 0x72, 0x67, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, + 0x67, 0x69, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, + 0x0a, 0x0a, 0x67, 0x69, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x67, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x1a, 0x60, 0x0a, + 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 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, + 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x6e, 0x69, + 0x66, 0x65, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x62, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, + 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, + 0x02, 0x38, 0x01, 0x22, 0xdc, 0x01, 0x0a, 0x07, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, + 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x68, 0x65, 0x6c, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x65, 0x6c, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x22, 0xfd, 0x03, 0x0a, 0x0e, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x6e, + 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x6e, + 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x41, 0x72, 0x67, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x67, 0x69, 0x74, 0x5f, 0x75, 0x72, 0x6c, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x69, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x1d, + 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x50, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x61, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, + 0x1d, 0x0a, 0x0a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x66, 0x12, 0x29, + 0x0a, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, + 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x69, 0x6e, + 0x61, 0x6c, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x52, 0x75, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x31, 0x0a, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, + 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x12, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, + 0x61, 0x6e, 0x6f, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x5f, 0x75, 0x6e, 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, + 0x6e, 0x6f, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6f, + 0x6e, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, + 0x4f, 0x6e, 0x22, 0x55, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x72, + 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, + 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xfa, 0x04, 0x0a, 0x0f, 0x43, 0x6f, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x64, 0x12, 0x1a, + 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x52, 0x75, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x69, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0d, 0x69, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x31, + 0x0a, 0x15, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x75, 0x6e, 0x69, + 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, + 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x5f, 0x75, 0x6e, + 0x69, 0x78, 0x5f, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x41, 0x74, 0x55, 0x6e, 0x69, 0x78, 0x4e, 0x61, 0x6e, 0x6f, 0x73, + 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x4d, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6f, + 0x6e, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x09, 0x64, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x6e, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x07, 0x69, + 0x73, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x22, 0xf0, 0x01, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x55, 0x72, 0x6c, + 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, + 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6e, + 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x65, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x2a, 0xa4, 0x01, 0x0a, 0x09, 0x52, 0x75, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x55, 0x4e, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, + 0x1a, 0x0a, 0x16, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x52, + 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x52, 0x55, 0x4e, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x03, 0x12, + 0x16, 0x0a, 0x12, 0x52, 0x55, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, + 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x55, 0x4e, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x05, + 0x2a, 0x91, 0x03, 0x0a, 0x0b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x18, 0x0a, 0x14, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x46, 0x41, + 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, + 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x5a, 0x45, 0x52, 0x4f, 0x5f, 0x45, 0x58, 0x49, 0x54, 0x10, + 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, + 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x46, + 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x4f, 0x4d, 0x5f, + 0x4b, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x41, 0x49, 0x4c, + 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x55, 0x49, 0x4c, 0x44, 0x4b, 0x49, + 0x54, 0x5f, 0x43, 0x52, 0x41, 0x53, 0x48, 0x45, 0x44, 0x10, 0x06, 0x12, 0x23, 0x0a, 0x1f, 0x46, + 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, + 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x07, + 0x12, 0x21, 0x0a, 0x1d, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4e, 0x45, 0x45, 0x44, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x49, 0x4c, 0x45, 0x47, 0x45, + 0x44, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x47, 0x49, 0x54, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x46, 0x41, 0x49, + 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x4c, + 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x1e, 0x0a, 0x1a, 0x46, 0x41, 0x49, 0x4c, + 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, + 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4d, 0x10, 0x0b, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x41, 0x49, 0x4c, + 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x53, 0x4b, + 0x49, 0x50, 0x10, 0x0c, 0x42, 0x0d, 0x5a, 0x0b, 0x2e, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_manifest_proto_rawDescOnce sync.Once + file_manifest_proto_rawDescData = file_manifest_proto_rawDesc +) + +func file_manifest_proto_rawDescGZIP() []byte { + file_manifest_proto_rawDescOnce.Do(func() { + file_manifest_proto_rawDescData = protoimpl.X.CompressGZIP(file_manifest_proto_rawDescData) + }) + return file_manifest_proto_rawDescData +} + +var file_manifest_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_manifest_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_manifest_proto_goTypes = []interface{}{ + (RunStatus)(0), // 0: api.public.logstream.RunStatus + (FailureType)(0), // 1: api.public.logstream.FailureType + (*RunManifest)(nil), // 2: api.public.logstream.RunManifest + (*Failure)(nil), // 3: api.public.logstream.Failure + (*TargetManifest)(nil), // 4: api.public.logstream.TargetManifest + (*CommandTarget)(nil), // 5: api.public.logstream.CommandTarget + (*CommandManifest)(nil), // 6: api.public.logstream.CommandManifest + (*SourceLocation)(nil), // 7: api.public.logstream.SourceLocation + nil, // 8: api.public.logstream.RunManifest.TargetsEntry + nil, // 9: api.public.logstream.RunManifest.CommandsEntry +} +var file_manifest_proto_depIdxs = []int32{ + 0, // 0: api.public.logstream.RunManifest.status:type_name -> api.public.logstream.RunStatus + 8, // 1: api.public.logstream.RunManifest.targets:type_name -> api.public.logstream.RunManifest.TargetsEntry + 9, // 2: api.public.logstream.RunManifest.commands:type_name -> api.public.logstream.RunManifest.CommandsEntry + 3, // 3: api.public.logstream.RunManifest.failure:type_name -> api.public.logstream.Failure + 1, // 4: api.public.logstream.Failure.type:type_name -> api.public.logstream.FailureType + 0, // 5: api.public.logstream.TargetManifest.status:type_name -> api.public.logstream.RunStatus + 0, // 6: api.public.logstream.CommandManifest.status:type_name -> api.public.logstream.RunStatus + 7, // 7: api.public.logstream.CommandManifest.source_location:type_name -> api.public.logstream.SourceLocation + 5, // 8: api.public.logstream.CommandManifest.depends_on:type_name -> api.public.logstream.CommandTarget + 4, // 9: api.public.logstream.RunManifest.TargetsEntry.value:type_name -> api.public.logstream.TargetManifest + 6, // 10: api.public.logstream.RunManifest.CommandsEntry.value:type_name -> api.public.logstream.CommandManifest + 11, // [11:11] is the sub-list for method output_type + 11, // [11:11] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name +} + +func init() { file_manifest_proto_init() } +func file_manifest_proto_init() { + if File_manifest_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_manifest_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RunManifest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_manifest_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Failure); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_manifest_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TargetManifest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_manifest_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommandTarget); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_manifest_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommandManifest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_manifest_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SourceLocation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_manifest_proto_rawDesc, + NumEnums: 2, + NumMessages: 8, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_manifest_proto_goTypes, + DependencyIndexes: file_manifest_proto_depIdxs, + EnumInfos: file_manifest_proto_enumTypes, + MessageInfos: file_manifest_proto_msgTypes, + }.Build() + File_manifest_proto = out.File + file_manifest_proto_rawDesc = nil + file_manifest_proto_goTypes = nil + file_manifest_proto_depIdxs = nil +} diff --git a/logstream/manifest.proto b/logstream/manifest.proto new file mode 100644 index 0000000000..b738a612ed --- /dev/null +++ b/logstream/manifest.proto @@ -0,0 +1,142 @@ +syntax = "proto3"; +package api.public.logstream; +option go_package = "github.com/EarthBuild/earthbuild/logstream"; + +enum RunStatus { + RUN_STATUS_UNKNOWN = 0; + RUN_STATUS_NOT_STARTED = 1; + RUN_STATUS_IN_PROGRESS = 2; + RUN_STATUS_SUCCESS = 3; + RUN_STATUS_FAILURE = 4; + RUN_STATUS_CANCELED = 5; +} + +message RunManifest { + string build_id = 1; + int32 version = 2; + uint64 created_at_unix_nanos = 3; + uint64 started_at_unix_nanos = 4; + uint64 ended_at_unix_nanos = 5; + RunStatus status = 6; + map targets = 7; + map commands = 13; + string main_target_id = 8; + Failure failure = 9; + string resume_token = 16; + bool is_ci = 17; + + // org_name is the name of the organization that owns this run. + // May be empty for builds that don't have a PROJECT declaration. + string org_name = 14; + // project_name is the name of the project that owns this run. + // May be empty for builds that don't have a PROJECT declaration. + string project_name = 15; + + // The following are populated by the logstream server on delta ingestion. + + // The UUID of the user that ran the build. + string user_id = 10; + // The UUID of the organization that owns this run. + string org_id = 11; + // The UUID of the project that owns this run. + string project_id = 12; + + string git_config_email = 18; + string git_author = 19; +} + +enum FailureType { + FAILURE_TYPE_UNKNOWN = 0; + FAILURE_TYPE_OTHER = 1; + FAILURE_TYPE_NONZERO_EXIT = 2; + FAILURE_TYPE_FILE_NOT_FOUND = 3; + FAILURE_TYPE_SYNTAX = 4; + FAILURE_TYPE_OOM_KILLED = 5; + FAILURE_TYPE_BUILDKIT_CRASHED = 6; + FAILURE_TYPE_CONNECTION_FAILURE = 7; + FAILURE_TYPE_NEEDS_PRIVILEGED = 8; + FAILURE_TYPE_GIT = 9; + FAILURE_TYPE_RATE_LIMITED = 10; + FAILURE_TYPE_INVALID_PARAM = 11; + FAILURE_TYPE_AUTO_SKIP = 12; +} + +message Failure { + FailureType type = 1; + string target_id = 2; + string command_id = 3; + string error_message = 4; + bytes output = 5; + string help_message = 6; +} + +message TargetManifest { + string name = 1; // e.g. +build + string canonical_name = 2; // e.g. github.com/foo/bar/buz:main+build + repeated string override_args = 3; + string git_url = 10; + string local_path = 11; + string tag = 12; + string import_ref = 13; + string initial_platform = 4; + string final_platform = 8; + // runner is the runner identifier that this target runs on. Possible formats: + // * local: + // * bk: + // * sat:/ + string runner = 9; + RunStatus status = 5; + uint64 started_at_unix_nanos = 6; + uint64 ended_at_unix_nanos = 7; + repeated string depends_on = 14; +} + +message CommandTarget { + string target_id = 1; + string referenced_name = 2; +} + +message CommandManifest { + reserved 4; + reserved "is_push"; + + string name = 1; + // target_id is the ID of the target this command is part of + // (may be empty for commands that are not part of a target) + string target_id = 12; + // category is a grouping separate from target. This is used for things + // like "context", "output", or Dockerfile stages, which would + // not be part of an Earthly target. + string category = 14; + string platform = 13; + RunStatus status = 2; + bool is_cached = 3; + bool is_local = 5; + bool is_interactive = 15; + uint64 started_at_unix_nanos = 6; + uint64 ended_at_unix_nanos = 7; + bool has_progress = 8; + int32 progress = 9; + // error_message is a string representation of an error related to this command. + // The presence of an error here might not mean that the command has failed, + // if the error is transient. + string error_message = 10; + SourceLocation source_location = 11; + + // depends_on contains any targets that have been referenced by this command + // and the target name they were referenced with. + repeated CommandTarget depends_on = 16; +} + +message SourceLocation { + // repository_url is the URL of the repository. + string repository_url = 1; + // repository_hash is the Git sha hash of the repository. + string repository_hash = 7; + // file is the name of the Earthfile relative to the repository. + string file = 2; + int32 start_line = 3; + int32 start_column = 4; + int32 end_line = 5; + int32 end_column = 6; +} diff --git a/util/deltautil/apply.go b/util/deltautil/apply.go index 2960bbb963..04ef7c4772 100644 --- a/util/deltautil/apply.go +++ b/util/deltautil/apply.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - pb "github.com/earthly/cloud-api/logstream" + pb "github.com/EarthBuild/earthbuild/logstream" "google.golang.org/protobuf/proto" ) diff --git a/util/stringutil/proto_enum_test.go b/util/stringutil/proto_enum_test.go index 31e41fdab0..75cd4af742 100644 --- a/util/stringutil/proto_enum_test.go +++ b/util/stringutil/proto_enum_test.go @@ -3,7 +3,7 @@ package stringutil import ( "testing" - "github.com/earthly/cloud-api/logstream" + "github.com/EarthBuild/earthbuild/logstream" "github.com/stretchr/testify/assert" )