From f66e574c7a0ed436a10ff9853ac825e36e87cd4c Mon Sep 17 00:00:00 2001 From: mintaka Date: Wed, 9 Sep 2026 21:21:29 -0400 Subject: [PATCH] feat(secrets): add ListServerSecrets + the compass server-secret CLI noun MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `SetServerSecret`/`DeleteServerSecret` shipped as RPCs with no CLI verb, so nothing could write a reserved-prefix server secret's provider VALUE. That is load-bearing rather than cosmetic: `validateForgeSecret` resolves the PREFIXED key at startup and hard-fails boot when it is absent, so configuring the forge App ids on a deployment wedged the server with no CLI path to recover. Adds `compass server-secret set ` (value on stdin, never argv) and `compass server-secret list`, plus the `ListServerSecrets` RPC they need. The list prints the BARE name at line start, stripping either reserved prefix: the deployment's seed script gates its arming restart on a line-anchored `\n: ` match, so the stored prefixed form would miss every glob and re-arm on every converge. `is_set` is a provider probe here, unlike `ListSecrets` which hardcodes true. On the user path declare and set are one operation, but server-secret names are self-declared at every boot while the operator populates values separately, so declared-but-unset is routine and telling the two apart is the point of the verb. The probe reads SecretSpec's value-free report through a new `Resolver.Statuses`, not `Resolve`: `buildManifest` marks every declared name `required = true`, so a `Load`-based probe would fail wholesale in exactly the unset case it exists to describe, and would pull every deployment secret's value into memory to answer a names-and-flags question. A genuine provider fault stays `CodeInternal` rather than flattening to all-unset, so a broken provider cannot read as an unprovisioned one. `server-secret set` refuses a bare name that would shadow the gateway-family row. `list` strips either reserved prefix, so the master key prints as bare `MASTER_KEY`; wrapping that spelling back would send `SERVER_MASTER_KEY`, a different secret that clears the server's exact-name master-key guard — minting a shadow row while the real key stays unprovisioned and `list` printed the same bare name twice. The full gateway name still goes through, so the server stays the single authority on which names are writable. Both set paths now read stdin through one shared `readSecretValue`, so the size cap, newline trim, and empty-value rejection cannot drift between the verbs. Refs RIG-3597 Co-authored-by: Matt Wilkinson --- go/cmd/compass/main.go | 1 + go/cmd/compass/secret.go | 33 +- go/cmd/compass/server_secret.go | 196 ++++ go/cmd/compass/server_secret_test.go | 238 +++++ go/gen/compass/v1/compass.pb.go | 962 ++++++++++-------- .../v1/compassv1connect/compass.connect.go | 43 + go/internal/auth/admin_gate.go | 11 +- go/internal/runnerhub/secrets_test.go | 7 + go/internal/secrets/resolver.go | 95 ++ go/internal/secrets/resolver_test.go | 37 + go/internal/secrets/secrets.go | 14 + go/server/secrets_service.go | 58 ++ go/server/secrets_service_pgtest_test.go | 120 ++- go/server/serve_forge_test.go | 6 + .../src/gen/compass/v1/compass_pb.ts | 220 ++-- .../src/gen/compass/v1/compass_pb.ts | 220 ++-- proto/compass/v1/compass.proto | 22 + 17 files changed, 1717 insertions(+), 566 deletions(-) create mode 100644 go/cmd/compass/server_secret.go create mode 100644 go/cmd/compass/server_secret_test.go diff --git a/go/cmd/compass/main.go b/go/cmd/compass/main.go index 1c39965f0..7bed92082 100644 --- a/go/cmd/compass/main.go +++ b/go/cmd/compass/main.go @@ -54,6 +54,7 @@ func newRootCmd() *cobra.Command { root.AddCommand(newAgentConfigCmd()) root.AddCommand(newMessageCmd()) root.AddCommand(newSecretCmd()) + root.AddCommand(newServerSecretCmd()) root.AddCommand(newTokenCmd()) return root } diff --git a/go/cmd/compass/secret.go b/go/cmd/compass/secret.go index 2defa0484..899a88bf0 100644 --- a/go/cmd/compass/secret.go +++ b/go/cmd/compass/secret.go @@ -120,6 +120,28 @@ func newSecretDeleteCmd() *cobra.Command { // required and it is read from stdin. var errEmptySecretValue = errors.New("a secret value is required: pipe it on stdin (it is never taken from the command line)") +// readSecretValue reads a secret value from stdin, the ONE place both the user +// and server-secret set paths get it — so the size cap, the trailing-newline +// trim (a bare `echo` adds one and it is not part of the value), and the +// empty-value rejection cannot drift between the two verbs. +// +// stdin is the only source by design: a value on argv would be visible in the +// host process list. +func readSecretValue(in io.Reader) (string, error) { + raw, err := io.ReadAll(io.LimitReader(in, maxSecretBytes+2)) + if err != nil { + return "", fmt.Errorf("reading secret value from stdin: %w", err) + } + value := strings.TrimSuffix(string(raw), "\n") + if len(value) > maxSecretBytes { + return "", fmt.Errorf("secret value exceeds the %d-byte limit: pipe a smaller value on stdin", maxSecretBytes) + } + if value == "" { + return "", errEmptySecretValue + } + return value, nil +} + // secretSetArgs is the resolved `secret set` input: the name and the routing // flags, parsed and validated before any RPC. type secretSetArgs struct { @@ -196,16 +218,9 @@ func runSecretSet(ctx context.Context, client compassv1connect.SecretsServiceCli if err != nil { return err } - raw, err := io.ReadAll(io.LimitReader(in, maxSecretBytes+2)) + value, err := readSecretValue(in) if err != nil { - return fmt.Errorf("reading secret value from stdin: %w", err) - } - value := strings.TrimSuffix(string(raw), "\n") - if len(value) > maxSecretBytes { - return fmt.Errorf("secret value exceeds the %d-byte limit: pipe a smaller value on stdin", maxSecretBytes) - } - if value == "" { - return errEmptySecretValue + return err } ctx, cancel := context.WithTimeout(ctx, rpcTimeout) diff --git a/go/cmd/compass/server_secret.go b/go/cmd/compass/server_secret.go new file mode 100644 index 000000000..89f79b92b --- /dev/null +++ b/go/cmd/compass/server_secret.go @@ -0,0 +1,196 @@ +//go:build unix + +package main + +import ( + "context" + "fmt" + "io" + "strings" + + "connectrpc.com/connect" + "github.com/spf13/cobra" + + compassv1 "github.com/RigelBuild/compass/go/gen/compass/v1" + "github.com/RigelBuild/compass/go/gen/compass/v1/compassv1connect" + "github.com/RigelBuild/compass/go/internal/store" +) + +// newServerSecretCmd builds the server-secret noun: the DEPLOYMENT-owned secret +// surface (set/list), disjoint from the fleet `secret` noun by reserved name +// prefix. It carries no logic of its own; each verb is a child that dials the +// Server and drives one SecretsService RPC. A server secret value is read from +// stdin, never argv, so it cannot leak into the process table. +func newServerSecretCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "server-secret", + Short: "Manage deployment-owned server secrets (set / list)", + } + cmd.AddCommand(newServerSecretSetCmd(), newServerSecretListCmd()) + return cmd +} + +// newServerSecretSetCmd builds `server-secret set `: write a server +// secret's value. The value is read from stdin, never a flag or positional, so +// it cannot leak into the process table (the load-bearing convention shared +// with the fleet `secret set` verb and the bearer token). +// +// The name is accepted with OR without the reserved prefix, because the two +// sides spell it differently: the deployment's config carries the BARE name +// (the operator writes `forge.appId`-style config, not a registry key) while +// the server-secret registry carries the PREFIXED one (serve.go's +// serverSecretName wraps every declared name). Accepting both and sending the +// prefixed form means the operator can paste either spelling and still write +// the row the Server reads. +func newServerSecretSetCmd() *cobra.Command { + return &cobra.Command{ + Use: "set ", + Short: "Write a server secret's value (value read from stdin, admin)", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + client, err := dialSecretsClient(cmd) + if err != nil { + return err + } + return runServerSecretSet(cmd.Context(), client, args[0], cmd.InOrStdin(), cmd.OutOrStdout()) + }, + } +} + +// newServerSecretListCmd builds `server-secret list`: ListServerSecrets and +// render each declared server secret's name and set/unset state. It NEVER +// renders a value (there is none on the wire). An empty list renders a clear +// message, not an error. +func newServerSecretListCmd() *cobra.Command { + return &cobra.Command{ + Use: "list", + Short: "List declared server secrets with set/unset state (never values)", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, _ []string) error { + client, err := dialSecretsClient(cmd) + if err != nil { + return err + } + return runServerSecretList(cmd.Context(), client, cmd.OutOrStdout()) + }, + } +} + +// runServerSecretSet reads the value from in (trimming a single trailing +// newline and rejecting an empty value) and calls SetServerSecret under the +// prefixed name. The value is never taken from argv, so it cannot leak into the +// process table. +func runServerSecretSet(ctx context.Context, client compassv1connect.SecretsServiceClient, name string, in io.Reader, out io.Writer) error { + value, err := readSecretValue(in) + if err != nil { + return err + } + wire, err := serverSecretWireName(name) + if err != nil { + return err + } + + ctx, cancel := context.WithTimeout(ctx, rpcTimeout) + defer cancel() + if _, err := client.SetServerSecret(ctx, connect.NewRequest(&compassv1.SetServerSecretRequest{ + Name: wire, + Value: value, + })); err != nil { + return fmt.Errorf("setting server secret %s: %w", wire, err) + } + _, err = fmt.Fprintf(out, "set server secret %s\n", wire) + return err +} + +// serverSecretWireName maps the operator's spelling to the registry's. A name +// that already carries a reserved prefix is sent as-is (never double-prefixed); +// a bare one is wrapped, matching serve.go's serverSecretName. The store's +// HasServerSecretPrefix is the authority on what counts as prefixed, so the two +// doors cannot drift. +// +// A bare name that would SHADOW a gateway-family row is refused rather than +// wrapped. `list` strips either reserved prefix, so the master key prints as +// the bare `MASTER_KEY`; feeding that spelling back here would wrap it to +// `SERVER_MASTER_KEY`, which is a DIFFERENT secret. That name clears the +// server's master-key guard (it compares the exact GATEWAY_CREDENTIALS_ name), +// so the write would silently mint a shadow row, leave the real key untouched, +// and make `list` print the same bare name twice. Refusing is the only safe +// answer: wrapping writes a different secret than the operator named, with no +// error at any layer. +func serverSecretWireName(name string) (string, error) { + if store.HasServerSecretPrefix(name) { + return name, nil + } + if store.GatewayCredentialsPrefix+name == masterKeyCLIName { + return "", fmt.Errorf( + "%s is the bare spelling of %s, which is provisioned and rotated by the server; pass the full name if you meant a different secret", + name, masterKeyCLIName) + } + return store.ServerSecretPrefix + name, nil +} + +// masterKeyCLIName mirrors the server's reserved master-key name +// (secrets_service.go's masterKeyName). Duplicated as a const rather than +// imported because the server package is not a CLI dependency; the pgtest +// suite covers the server-side refusal, and this only has to recognise the +// bare spelling `list` prints. +const masterKeyCLIName = store.GatewayCredentialsPrefix + "MASTER_KEY" + +// runServerSecretList calls ListServerSecrets and renders each declared server +// secret. An empty list renders a clear message, not an error. +// +// Unlike the user path, declared does NOT imply set: the Server self-declares +// every server-secret NAME at boot while the operator populates the VALUES +// separately, so the set/unset column is the whole point of the verb. +func runServerSecretList(ctx context.Context, client compassv1connect.SecretsServiceClient, out io.Writer) error { + ctx, cancel := context.WithTimeout(ctx, rpcTimeout) + defer cancel() + resp, err := client.ListServerSecrets(ctx, connect.NewRequest(&compassv1.ListServerSecretsRequest{})) + if err != nil { + return fmt.Errorf("listing server secrets: %w", err) + } + secrets := resp.Msg.GetServerSecrets() + if len(secrets) == 0 { + _, err = fmt.Fprintln(out, "no server secrets declared for this deployment") + return err + } + for _, s := range secrets { + if err := renderServerSecretStatus(out, s); err != nil { + return err + } + } + return nil +} + +// renderServerSecretStatus prints one server secret as ": set|unset". +// It NEVER prints a value — none is carried on the wire. +// +// The reserved prefix is STRIPPED so the bare name — the spelling the operator +// configures — starts the line. That is load-bearing beyond readability: the +// deployment's seed script matches each secret with a line-anchored +// "\n: " glob, which the stored prefixed form would never hit. +// +// EITHER reserved prefix is stripped, not just SERVER_: the master-key family +// carries GATEWAY_CREDENTIALS_ (secrets_service.go's masterKeyName) and is a +// real server_secrets row, so it lists here too. Stripping only one would print +// that row with its prefix intact while every other row appeared bare — the +// same output column meaning two different spellings. +func renderServerSecretStatus(out io.Writer, s *compassv1.ServerSecretStatus) error { + state := "unset" + if s.GetIsSet() { + state = "set" + } + _, err := fmt.Fprintf(out, "%s: %s\n", bareServerSecretName(s.GetName()), state) + return err +} + +// bareServerSecretName strips whichever reserved server-secret prefix a stored +// name carries, returning the spelling the operator configured. +func bareServerSecretName(name string) string { + for _, p := range []string{store.ServerSecretPrefix, store.GatewayCredentialsPrefix} { + if bare, ok := strings.CutPrefix(name, p); ok { + return bare + } + } + return name +} diff --git a/go/cmd/compass/server_secret_test.go b/go/cmd/compass/server_secret_test.go new file mode 100644 index 000000000..e1b8c8675 --- /dev/null +++ b/go/cmd/compass/server_secret_test.go @@ -0,0 +1,238 @@ +//go:build unix + +package main + +import ( + "context" + "net/http" + "net/http/httptest" + "strings" + "testing" + + "connectrpc.com/connect" + + compassv1 "github.com/RigelBuild/compass/go/gen/compass/v1" + "github.com/RigelBuild/compass/go/gen/compass/v1/compassv1connect" +) + +// fakeServerSecrets is a fake SecretsService handler recording the request each +// server-secret verb constructs and returning a canned ListServerSecrets +// response, so the subcommand RPC wiring is tested without a live Server or +// Postgres (mirroring fakeSecrets for the user-facing verbs). +type fakeServerSecrets struct { + compassv1connect.UnimplementedSecretsServiceHandler + gotSet *compassv1.SetServerSecretRequest + setCalls int + list *compassv1.ListServerSecretsResponse + gotAuth string +} + +func (f *fakeServerSecrets) SetServerSecret(_ context.Context, req *connect.Request[compassv1.SetServerSecretRequest]) (*connect.Response[compassv1.SetServerSecretResponse], error) { + f.setCalls++ + f.gotSet = req.Msg + f.gotAuth = req.Header().Get("Authorization") + return connect.NewResponse(&compassv1.SetServerSecretResponse{}), nil +} + +func (f *fakeServerSecrets) ListServerSecrets(_ context.Context, req *connect.Request[compassv1.ListServerSecretsRequest]) (*connect.Response[compassv1.ListServerSecretsResponse], error) { + f.gotAuth = req.Header().Get("Authorization") + list := f.list + if list == nil { + list = &compassv1.ListServerSecretsResponse{} + } + return connect.NewResponse(list), nil +} + +// startFakeServerSecretsServer stands up the fake SecretsService over a +// plain-HTTP httptest server and returns a client wired to it with the bearer +// interceptor. +func startFakeServerSecretsServer(t *testing.T, fake *fakeServerSecrets) compassv1connect.SecretsServiceClient { + t.Helper() + path, handler := compassv1connect.NewSecretsServiceHandler(fake) + mux := http.NewServeMux() + mux.Handle(path, handler) + srv := httptest.NewServer(mux) + t.Cleanup(srv.Close) + client, err := newSecretsClient(connConfig{serverAddr: srv.URL, token: "test-token"}) + if err != nil { + t.Fatalf("newSecretsClient: %v", err) + } + return client +} + +// TestRunServerSecretList asserts list renders ": set|unset" with the +// reserved prefix stripped and the bare name at LINE START — the exact shape the +// deployment's seed script matches with a "\n: " glob — and that declared +// but unpopulated names render unset (declared != set on the server path). +func TestRunServerSecretList(t *testing.T) { + fake := &fakeServerSecrets{list: &compassv1.ListServerSecretsResponse{ServerSecrets: []*compassv1.ServerSecretStatus{ + {Name: "SERVER_FORGE_APP_PEM", IsSet: true}, + {Name: "SERVER_LINEAR_WEBHOOK_SECRET", IsSet: false}, + }}} + client := startFakeServerSecretsServer(t, fake) + + var out strings.Builder + if err := runServerSecretList(context.Background(), client, &out); err != nil { + t.Fatalf("runServerSecretList: %v", err) + } + got := out.String() + // The seed script's glob is line-anchored, so assert the newline-prefixed + // form. Prefixing the whole output with "\n" lets the first line match the + // same anchored pattern as every later one. + for _, want := range []string{ + "\nFORGE_APP_PEM: set\n", + "\nLINEAR_WEBHOOK_SECRET: unset\n", + } { + if !strings.Contains("\n"+got, want) { + t.Errorf("list output %q is missing line-anchored %q", got, want) + } + } + if strings.Contains(got, "SERVER_") { + t.Errorf("list output %q leaks the reserved prefix; the bare name must start the line", got) + } + if fake.gotAuth != "Bearer test-token" { + t.Errorf("Authorization = %q, want Bearer test-token", fake.gotAuth) + } +} + +// TestRunServerSecretListStripsGatewayPrefix pins that the OTHER reserved +// prefix is stripped too. The master-key family is a real server_secrets row +// (secrets_service.go's masterKeyName), so it lists here; stripping only +// SERVER_ would print it prefixed while every sibling printed bare, and the +// seed script's line-anchored glob would miss it. +func TestRunServerSecretListStripsGatewayPrefix(t *testing.T) { + fake := &fakeServerSecrets{list: &compassv1.ListServerSecretsResponse{ServerSecrets: []*compassv1.ServerSecretStatus{ + {Name: "GATEWAY_CREDENTIALS_MASTER_KEY", IsSet: true}, + }}} + client := startFakeServerSecretsServer(t, fake) + + var out strings.Builder + if err := runServerSecretList(context.Background(), client, &out); err != nil { + t.Fatalf("runServerSecretList: %v", err) + } + got := out.String() + if want := "\nMASTER_KEY: set\n"; !strings.Contains("\n"+got, want) { + t.Errorf("list output %q is missing line-anchored %q", got, want) + } + if strings.Contains(got, "GATEWAY_CREDENTIALS_") { + t.Errorf("list output %q leaks the reserved prefix; the bare name must start the line", got) + } +} + +// TestRunServerSecretListEmpty asserts an empty registry renders a clear +// message, not an error. +func TestRunServerSecretListEmpty(t *testing.T) { + fake := &fakeServerSecrets{} + client := startFakeServerSecretsServer(t, fake) + + var out strings.Builder + if err := runServerSecretList(context.Background(), client, &out); err != nil { + t.Fatalf("runServerSecretList: %v", err) + } + if !strings.Contains(out.String(), "no server secrets declared") { + t.Errorf("empty-list output %q does not report an empty registry", out.String()) + } +} + +// TestRunServerSecretSetPrefixesName asserts the value comes from stdin (never +// argv) and that a bare operator-facing name is sent PREFIXED on the wire, while +// an already-prefixed name is not double-prefixed. +func TestRunServerSecretSetPrefixesName(t *testing.T) { + tests := []struct { + name string + input string + want string + }{ + {name: "bare name is prefixed", input: "FORGE_APP_PEM", want: "SERVER_FORGE_APP_PEM"}, + {name: "prefixed name is unchanged", input: "SERVER_FORGE_APP_PEM", want: "SERVER_FORGE_APP_PEM"}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + fake := &fakeServerSecrets{} + client := startFakeServerSecretsServer(t, fake) + + var out strings.Builder + in := strings.NewReader("s3cr3t\n") + if err := runServerSecretSet(context.Background(), client, tt.input, in, &out); err != nil { + t.Fatalf("runServerSecretSet: %v", err) + } + if fake.gotSet == nil { + t.Fatal("SetServerSecret was not called") + } + if fake.gotSet.GetName() != tt.want { + t.Errorf("name = %q, want %q", fake.gotSet.GetName(), tt.want) + } + if fake.gotSet.GetValue() != "s3cr3t" { + t.Errorf("value = %q, want s3cr3t (trailing newline trimmed, from stdin)", fake.gotSet.GetValue()) + } + if fake.gotAuth != "Bearer test-token" { + t.Errorf("Authorization = %q, want Bearer test-token", fake.gotAuth) + } + }) + } +} + +// TestRunServerSecretSetRefusesBareMasterKey pins the round-trip hazard: `list` +// strips either reserved prefix, so the master key prints as bare MASTER_KEY. +// Wrapping that spelling would send SERVER_MASTER_KEY — a DIFFERENT secret that +// clears the server's exact-name master-key guard, minting a shadow row while +// the real key stays unprovisioned and `list` prints the same bare name twice. +// It must be refused before any RPC. +func TestRunServerSecretSetRefusesBareMasterKey(t *testing.T) { + fake := &fakeServerSecrets{} + client := startFakeServerSecretsServer(t, fake) + + var out strings.Builder + in := strings.NewReader("s3cr3t\n") + err := runServerSecretSet(context.Background(), client, "MASTER_KEY", in, &out) + if err == nil { + t.Fatal("bare MASTER_KEY was accepted; it must be refused rather than re-prefixed to a different secret") + } + if fake.gotSet != nil { + t.Errorf("SetServerSecret was called with %q; the refusal must precede any RPC", fake.gotSet.GetName()) + } + if !strings.Contains(err.Error(), masterKeyCLIName) { + t.Errorf("error %q does not name %s, so it is not actionable", err, masterKeyCLIName) + } +} + +// TestRunServerSecretSetAcceptsFullGatewayName asserts the refusal is narrow: +// the FULL gateway name still reaches the server, which is what fail-closes on +// it (secrets_service.go's masterKeyName guard). The CLI must not become a +// second, divergent authority on which names are writable. +func TestRunServerSecretSetAcceptsFullGatewayName(t *testing.T) { + fake := &fakeServerSecrets{} + client := startFakeServerSecretsServer(t, fake) + + var out strings.Builder + in := strings.NewReader("s3cr3t\n") + if err := runServerSecretSet(context.Background(), client, masterKeyCLIName, in, &out); err != nil { + t.Fatalf("runServerSecretSet: %v", err) + } + if fake.gotSet == nil { + t.Fatal("SetServerSecret was not called; the server must be the authority on this refusal") + } + if fake.gotSet.GetName() != masterKeyCLIName { + t.Errorf("name = %q, want %q unchanged", fake.gotSet.GetName(), masterKeyCLIName) + } +} + +// TestRunServerSecretSetEmptyStdin asserts an empty stdin value is rejected with +// the shared empty-value error BEFORE any RPC — a blank pipe must never clear a +// populated server secret. +func TestRunServerSecretSetEmptyStdin(t *testing.T) { + fake := &fakeServerSecrets{} + client := startFakeServerSecretsServer(t, fake) + + var out strings.Builder + err := runServerSecretSet(context.Background(), client, "FORGE_APP_PEM", strings.NewReader("\n"), &out) + if err == nil { + t.Fatal("runServerSecretSet with empty stdin = nil error, want rejection") + } + if !strings.Contains(err.Error(), "value is required") { + t.Errorf("error %q does not mention the required value", err.Error()) + } + if fake.setCalls != 0 { + t.Errorf("SetServerSecret called %d times despite an empty value", fake.setCalls) + } +} diff --git a/go/gen/compass/v1/compass.pb.go b/go/gen/compass/v1/compass.pb.go index 6df72b00c..a99e21172 100644 --- a/go/gen/compass/v1/compass.pb.go +++ b/go/gen/compass/v1/compass.pb.go @@ -1137,6 +1137,143 @@ func (*DeleteServerSecretResponse) Descriptor() ([]byte, []int) { return file_compass_v1_compass_proto_rawDescGZIP(), []int{10} } +type ListServerSecretsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListServerSecretsRequest) Reset() { + *x = ListServerSecretsRequest{} + mi := &file_compass_v1_compass_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListServerSecretsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListServerSecretsRequest) ProtoMessage() {} + +func (x *ListServerSecretsRequest) ProtoReflect() protoreflect.Message { + mi := &file_compass_v1_compass_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListServerSecretsRequest.ProtoReflect.Descriptor instead. +func (*ListServerSecretsRequest) Descriptor() ([]byte, []int) { + return file_compass_v1_compass_proto_rawDescGZIP(), []int{11} +} + +type ListServerSecretsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + ServerSecrets []*ServerSecretStatus `protobuf:"bytes,1,rep,name=server_secrets,json=serverSecrets,proto3" json:"server_secrets,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListServerSecretsResponse) Reset() { + *x = ListServerSecretsResponse{} + mi := &file_compass_v1_compass_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListServerSecretsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListServerSecretsResponse) ProtoMessage() {} + +func (x *ListServerSecretsResponse) ProtoReflect() protoreflect.Message { + mi := &file_compass_v1_compass_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListServerSecretsResponse.ProtoReflect.Descriptor instead. +func (*ListServerSecretsResponse) Descriptor() ([]byte, []int) { + return file_compass_v1_compass_proto_rawDescGZIP(), []int{12} +} + +func (x *ListServerSecretsResponse) GetServerSecrets() []*ServerSecretStatus { + if x != nil { + return x.ServerSecrets + } + return nil +} + +// A declared server secret's status — the name plus set/unset ONLY, and NEVER +// the value. A server secret is deployment-owned and never container-delivered, +// so there is no delivery/kind routing to carry either. `name` is the STORED +// name, carrying its reserved server-secret prefix; stripping the prefix for +// display is the client's job, so the wire form stays unambiguous. +type ServerSecretStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + IsSet bool `protobuf:"varint,2,opt,name=is_set,json=isSet,proto3" json:"is_set,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ServerSecretStatus) Reset() { + *x = ServerSecretStatus{} + mi := &file_compass_v1_compass_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ServerSecretStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ServerSecretStatus) ProtoMessage() {} + +func (x *ServerSecretStatus) ProtoReflect() protoreflect.Message { + mi := &file_compass_v1_compass_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ServerSecretStatus.ProtoReflect.Descriptor instead. +func (*ServerSecretStatus) Descriptor() ([]byte, []int) { + return file_compass_v1_compass_proto_rawDescGZIP(), []int{13} +} + +func (x *ServerSecretStatus) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ServerSecretStatus) GetIsSet() bool { + if x != nil { + return x.IsSet + } + return false +} + type GetServerInfoRequest struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1145,7 +1282,7 @@ type GetServerInfoRequest struct { func (x *GetServerInfoRequest) Reset() { *x = GetServerInfoRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[11] + mi := &file_compass_v1_compass_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1157,7 +1294,7 @@ func (x *GetServerInfoRequest) String() string { func (*GetServerInfoRequest) ProtoMessage() {} func (x *GetServerInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[11] + mi := &file_compass_v1_compass_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1170,7 +1307,7 @@ func (x *GetServerInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetServerInfoRequest.ProtoReflect.Descriptor instead. func (*GetServerInfoRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{11} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{14} } type GetServerInfoResponse struct { @@ -1185,7 +1322,7 @@ type GetServerInfoResponse struct { func (x *GetServerInfoResponse) Reset() { *x = GetServerInfoResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[12] + mi := &file_compass_v1_compass_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1197,7 +1334,7 @@ func (x *GetServerInfoResponse) String() string { func (*GetServerInfoResponse) ProtoMessage() {} func (x *GetServerInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[12] + mi := &file_compass_v1_compass_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1210,7 +1347,7 @@ func (x *GetServerInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetServerInfoResponse.ProtoReflect.Descriptor instead. func (*GetServerInfoResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{12} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{15} } func (x *GetServerInfoResponse) GetVersion() string { @@ -1235,7 +1372,7 @@ type WhoAmIRequest struct { func (x *WhoAmIRequest) Reset() { *x = WhoAmIRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[13] + mi := &file_compass_v1_compass_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1247,7 +1384,7 @@ func (x *WhoAmIRequest) String() string { func (*WhoAmIRequest) ProtoMessage() {} func (x *WhoAmIRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[13] + mi := &file_compass_v1_compass_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1260,7 +1397,7 @@ func (x *WhoAmIRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WhoAmIRequest.ProtoReflect.Descriptor instead. func (*WhoAmIRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{13} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{16} } type WhoAmIResponse struct { @@ -1274,7 +1411,7 @@ type WhoAmIResponse struct { func (x *WhoAmIResponse) Reset() { *x = WhoAmIResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[14] + mi := &file_compass_v1_compass_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1286,7 +1423,7 @@ func (x *WhoAmIResponse) String() string { func (*WhoAmIResponse) ProtoMessage() {} func (x *WhoAmIResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[14] + mi := &file_compass_v1_compass_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1299,7 +1436,7 @@ func (x *WhoAmIResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WhoAmIResponse.ProtoReflect.Descriptor instead. func (*WhoAmIResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{14} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{17} } func (x *WhoAmIResponse) GetAccountId() string { @@ -1328,7 +1465,7 @@ type SubscribeEventsRequest struct { func (x *SubscribeEventsRequest) Reset() { *x = SubscribeEventsRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[15] + mi := &file_compass_v1_compass_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1340,7 +1477,7 @@ func (x *SubscribeEventsRequest) String() string { func (*SubscribeEventsRequest) ProtoMessage() {} func (x *SubscribeEventsRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[15] + mi := &file_compass_v1_compass_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1353,7 +1490,7 @@ func (x *SubscribeEventsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeEventsRequest.ProtoReflect.Descriptor instead. func (*SubscribeEventsRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{15} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{18} } func (x *SubscribeEventsRequest) GetSinceSeq() uint64 { @@ -1422,7 +1559,7 @@ type SubscribeEventsResponse struct { func (x *SubscribeEventsResponse) Reset() { *x = SubscribeEventsResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[16] + mi := &file_compass_v1_compass_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1434,7 +1571,7 @@ func (x *SubscribeEventsResponse) String() string { func (*SubscribeEventsResponse) ProtoMessage() {} func (x *SubscribeEventsResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[16] + mi := &file_compass_v1_compass_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1447,7 +1584,7 @@ func (x *SubscribeEventsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeEventsResponse.ProtoReflect.Descriptor instead. func (*SubscribeEventsResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{16} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{19} } func (x *SubscribeEventsResponse) GetSeq() uint64 { @@ -1625,7 +1762,7 @@ type ListBoardIssuesRequest struct { func (x *ListBoardIssuesRequest) Reset() { *x = ListBoardIssuesRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[17] + mi := &file_compass_v1_compass_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1637,7 +1774,7 @@ func (x *ListBoardIssuesRequest) String() string { func (*ListBoardIssuesRequest) ProtoMessage() {} func (x *ListBoardIssuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[17] + mi := &file_compass_v1_compass_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1650,7 +1787,7 @@ func (x *ListBoardIssuesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBoardIssuesRequest.ProtoReflect.Descriptor instead. func (*ListBoardIssuesRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{17} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{20} } func (x *ListBoardIssuesRequest) GetSnapshotSeq() uint64 { @@ -1673,7 +1810,7 @@ type ListBoardIssuesResponse struct { func (x *ListBoardIssuesResponse) Reset() { *x = ListBoardIssuesResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[18] + mi := &file_compass_v1_compass_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1685,7 +1822,7 @@ func (x *ListBoardIssuesResponse) String() string { func (*ListBoardIssuesResponse) ProtoMessage() {} func (x *ListBoardIssuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[18] + mi := &file_compass_v1_compass_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1698,7 +1835,7 @@ func (x *ListBoardIssuesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListBoardIssuesResponse.ProtoReflect.Descriptor instead. func (*ListBoardIssuesResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{18} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{21} } func (x *ListBoardIssuesResponse) GetIssues() []*Issue { @@ -1718,7 +1855,7 @@ type ServerStatus struct { func (x *ServerStatus) Reset() { *x = ServerStatus{} - mi := &file_compass_v1_compass_proto_msgTypes[19] + mi := &file_compass_v1_compass_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1730,7 +1867,7 @@ func (x *ServerStatus) String() string { func (*ServerStatus) ProtoMessage() {} func (x *ServerStatus) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[19] + mi := &file_compass_v1_compass_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1743,7 +1880,7 @@ func (x *ServerStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerStatus.ProtoReflect.Descriptor instead. func (*ServerStatus) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{19} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{22} } func (x *ServerStatus) GetState() ServerState { @@ -1765,7 +1902,7 @@ type ResyncRequired struct { func (x *ResyncRequired) Reset() { *x = ResyncRequired{} - mi := &file_compass_v1_compass_proto_msgTypes[20] + mi := &file_compass_v1_compass_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1777,7 +1914,7 @@ func (x *ResyncRequired) String() string { func (*ResyncRequired) ProtoMessage() {} func (x *ResyncRequired) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[20] + mi := &file_compass_v1_compass_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1790,7 +1927,7 @@ func (x *ResyncRequired) ProtoReflect() protoreflect.Message { // Deprecated: Use ResyncRequired.ProtoReflect.Descriptor instead. func (*ResyncRequired) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{20} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{23} } // The lifecycle state of one agent session, pushed on every transition. @@ -1813,7 +1950,7 @@ type AgentSessionStatus struct { func (x *AgentSessionStatus) Reset() { *x = AgentSessionStatus{} - mi := &file_compass_v1_compass_proto_msgTypes[21] + mi := &file_compass_v1_compass_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1825,7 +1962,7 @@ func (x *AgentSessionStatus) String() string { func (*AgentSessionStatus) ProtoMessage() {} func (x *AgentSessionStatus) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[21] + mi := &file_compass_v1_compass_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1838,7 +1975,7 @@ func (x *AgentSessionStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentSessionStatus.ProtoReflect.Descriptor instead. func (*AgentSessionStatus) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{21} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{24} } func (x *AgentSessionStatus) GetSessionId() string { @@ -1878,7 +2015,7 @@ type AgentMessageChunk struct { func (x *AgentMessageChunk) Reset() { *x = AgentMessageChunk{} - mi := &file_compass_v1_compass_proto_msgTypes[22] + mi := &file_compass_v1_compass_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1890,7 +2027,7 @@ func (x *AgentMessageChunk) String() string { func (*AgentMessageChunk) ProtoMessage() {} func (x *AgentMessageChunk) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[22] + mi := &file_compass_v1_compass_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1903,7 +2040,7 @@ func (x *AgentMessageChunk) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentMessageChunk.ProtoReflect.Descriptor instead. func (*AgentMessageChunk) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{22} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{25} } func (x *AgentMessageChunk) GetSessionId() string { @@ -1944,7 +2081,7 @@ type AgentToolCall struct { func (x *AgentToolCall) Reset() { *x = AgentToolCall{} - mi := &file_compass_v1_compass_proto_msgTypes[23] + mi := &file_compass_v1_compass_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1956,7 +2093,7 @@ func (x *AgentToolCall) String() string { func (*AgentToolCall) ProtoMessage() {} func (x *AgentToolCall) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[23] + mi := &file_compass_v1_compass_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1969,7 +2106,7 @@ func (x *AgentToolCall) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentToolCall.ProtoReflect.Descriptor instead. func (*AgentToolCall) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{23} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{26} } func (x *AgentToolCall) GetSessionId() string { @@ -2012,7 +2149,7 @@ type AgentPlan struct { func (x *AgentPlan) Reset() { *x = AgentPlan{} - mi := &file_compass_v1_compass_proto_msgTypes[24] + mi := &file_compass_v1_compass_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2024,7 +2161,7 @@ func (x *AgentPlan) String() string { func (*AgentPlan) ProtoMessage() {} func (x *AgentPlan) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[24] + mi := &file_compass_v1_compass_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2037,7 +2174,7 @@ func (x *AgentPlan) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentPlan.ProtoReflect.Descriptor instead. func (*AgentPlan) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{24} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{27} } func (x *AgentPlan) GetSessionId() string { @@ -2065,7 +2202,7 @@ type AgentPlanEntry struct { func (x *AgentPlanEntry) Reset() { *x = AgentPlanEntry{} - mi := &file_compass_v1_compass_proto_msgTypes[25] + mi := &file_compass_v1_compass_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2077,7 +2214,7 @@ func (x *AgentPlanEntry) String() string { func (*AgentPlanEntry) ProtoMessage() {} func (x *AgentPlanEntry) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[25] + mi := &file_compass_v1_compass_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2090,7 +2227,7 @@ func (x *AgentPlanEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentPlanEntry.ProtoReflect.Descriptor instead. func (*AgentPlanEntry) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{25} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{28} } func (x *AgentPlanEntry) GetContent() string { @@ -2138,7 +2275,7 @@ type SessionEvent struct { func (x *SessionEvent) Reset() { *x = SessionEvent{} - mi := &file_compass_v1_compass_proto_msgTypes[26] + mi := &file_compass_v1_compass_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2150,7 +2287,7 @@ func (x *SessionEvent) String() string { func (*SessionEvent) ProtoMessage() {} func (x *SessionEvent) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[26] + mi := &file_compass_v1_compass_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2163,7 +2300,7 @@ func (x *SessionEvent) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionEvent.ProtoReflect.Descriptor instead. func (*SessionEvent) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{26} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{29} } func (x *SessionEvent) GetEventId() string { @@ -2325,7 +2462,7 @@ type SessionAssistantText struct { func (x *SessionAssistantText) Reset() { *x = SessionAssistantText{} - mi := &file_compass_v1_compass_proto_msgTypes[27] + mi := &file_compass_v1_compass_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2337,7 +2474,7 @@ func (x *SessionAssistantText) String() string { func (*SessionAssistantText) ProtoMessage() {} func (x *SessionAssistantText) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[27] + mi := &file_compass_v1_compass_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2350,7 +2487,7 @@ func (x *SessionAssistantText) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionAssistantText.ProtoReflect.Descriptor instead. func (*SessionAssistantText) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{27} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{30} } func (x *SessionAssistantText) GetText() string { @@ -2379,7 +2516,7 @@ type SessionThinking struct { func (x *SessionThinking) Reset() { *x = SessionThinking{} - mi := &file_compass_v1_compass_proto_msgTypes[28] + mi := &file_compass_v1_compass_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2391,7 +2528,7 @@ func (x *SessionThinking) String() string { func (*SessionThinking) ProtoMessage() {} func (x *SessionThinking) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[28] + mi := &file_compass_v1_compass_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2404,7 +2541,7 @@ func (x *SessionThinking) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionThinking.ProtoReflect.Descriptor instead. func (*SessionThinking) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{28} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{31} } func (x *SessionThinking) GetText() string { @@ -2434,7 +2571,7 @@ type SessionToolCall struct { func (x *SessionToolCall) Reset() { *x = SessionToolCall{} - mi := &file_compass_v1_compass_proto_msgTypes[29] + mi := &file_compass_v1_compass_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2446,7 +2583,7 @@ func (x *SessionToolCall) String() string { func (*SessionToolCall) ProtoMessage() {} func (x *SessionToolCall) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[29] + mi := &file_compass_v1_compass_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2459,7 +2596,7 @@ func (x *SessionToolCall) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionToolCall.ProtoReflect.Descriptor instead. func (*SessionToolCall) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{29} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{32} } func (x *SessionToolCall) GetToolCallId() string { @@ -2498,7 +2635,7 @@ type SessionToolCallUpdate struct { func (x *SessionToolCallUpdate) Reset() { *x = SessionToolCallUpdate{} - mi := &file_compass_v1_compass_proto_msgTypes[30] + mi := &file_compass_v1_compass_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2510,7 +2647,7 @@ func (x *SessionToolCallUpdate) String() string { func (*SessionToolCallUpdate) ProtoMessage() {} func (x *SessionToolCallUpdate) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[30] + mi := &file_compass_v1_compass_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2523,7 +2660,7 @@ func (x *SessionToolCallUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionToolCallUpdate.ProtoReflect.Descriptor instead. func (*SessionToolCallUpdate) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{30} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{33} } func (x *SessionToolCallUpdate) GetToolCallId() string { @@ -2566,7 +2703,7 @@ type SessionFileDiff struct { func (x *SessionFileDiff) Reset() { *x = SessionFileDiff{} - mi := &file_compass_v1_compass_proto_msgTypes[31] + mi := &file_compass_v1_compass_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2578,7 +2715,7 @@ func (x *SessionFileDiff) String() string { func (*SessionFileDiff) ProtoMessage() {} func (x *SessionFileDiff) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[31] + mi := &file_compass_v1_compass_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2591,7 +2728,7 @@ func (x *SessionFileDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionFileDiff.ProtoReflect.Descriptor instead. func (*SessionFileDiff) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{31} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{34} } func (x *SessionFileDiff) GetPath() string { @@ -2625,7 +2762,7 @@ type SessionPlan struct { func (x *SessionPlan) Reset() { *x = SessionPlan{} - mi := &file_compass_v1_compass_proto_msgTypes[32] + mi := &file_compass_v1_compass_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2637,7 +2774,7 @@ func (x *SessionPlan) String() string { func (*SessionPlan) ProtoMessage() {} func (x *SessionPlan) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[32] + mi := &file_compass_v1_compass_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2650,7 +2787,7 @@ func (x *SessionPlan) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionPlan.ProtoReflect.Descriptor instead. func (*SessionPlan) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{32} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{35} } func (x *SessionPlan) GetEntries() []*AgentPlanEntry { @@ -2672,7 +2809,7 @@ type SessionNotice struct { func (x *SessionNotice) Reset() { *x = SessionNotice{} - mi := &file_compass_v1_compass_proto_msgTypes[33] + mi := &file_compass_v1_compass_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2684,7 +2821,7 @@ func (x *SessionNotice) String() string { func (*SessionNotice) ProtoMessage() {} func (x *SessionNotice) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[33] + mi := &file_compass_v1_compass_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2697,7 +2834,7 @@ func (x *SessionNotice) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionNotice.ProtoReflect.Descriptor instead. func (*SessionNotice) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{33} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{36} } func (x *SessionNotice) GetText() string { @@ -2746,7 +2883,7 @@ type SessionInjection struct { func (x *SessionInjection) Reset() { *x = SessionInjection{} - mi := &file_compass_v1_compass_proto_msgTypes[34] + mi := &file_compass_v1_compass_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2758,7 +2895,7 @@ func (x *SessionInjection) String() string { func (*SessionInjection) ProtoMessage() {} func (x *SessionInjection) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[34] + mi := &file_compass_v1_compass_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2771,7 +2908,7 @@ func (x *SessionInjection) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionInjection.ProtoReflect.Descriptor instead. func (*SessionInjection) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{34} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{37} } func (x *SessionInjection) GetOpKind() SessionInjectionKind { @@ -2818,7 +2955,7 @@ type SessionError struct { func (x *SessionError) Reset() { *x = SessionError{} - mi := &file_compass_v1_compass_proto_msgTypes[35] + mi := &file_compass_v1_compass_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2830,7 +2967,7 @@ func (x *SessionError) String() string { func (*SessionError) ProtoMessage() {} func (x *SessionError) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[35] + mi := &file_compass_v1_compass_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2843,7 +2980,7 @@ func (x *SessionError) ProtoReflect() protoreflect.Message { // Deprecated: Use SessionError.ProtoReflect.Descriptor instead. func (*SessionError) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{35} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{38} } func (x *SessionError) GetKind() SessionErrorKind { @@ -2877,7 +3014,7 @@ type SubscribeAgentSessionRequest struct { func (x *SubscribeAgentSessionRequest) Reset() { *x = SubscribeAgentSessionRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[36] + mi := &file_compass_v1_compass_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2889,7 +3026,7 @@ func (x *SubscribeAgentSessionRequest) String() string { func (*SubscribeAgentSessionRequest) ProtoMessage() {} func (x *SubscribeAgentSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[36] + mi := &file_compass_v1_compass_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2902,7 +3039,7 @@ func (x *SubscribeAgentSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribeAgentSessionRequest.ProtoReflect.Descriptor instead. func (*SubscribeAgentSessionRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{36} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{39} } func (x *SubscribeAgentSessionRequest) GetSessionId() string { @@ -2926,7 +3063,7 @@ type AgentSessionFrame struct { func (x *AgentSessionFrame) Reset() { *x = AgentSessionFrame{} - mi := &file_compass_v1_compass_proto_msgTypes[37] + mi := &file_compass_v1_compass_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2938,7 +3075,7 @@ func (x *AgentSessionFrame) String() string { func (*AgentSessionFrame) ProtoMessage() {} func (x *AgentSessionFrame) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[37] + mi := &file_compass_v1_compass_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2951,7 +3088,7 @@ func (x *AgentSessionFrame) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentSessionFrame.ProtoReflect.Descriptor instead. func (*AgentSessionFrame) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{37} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{40} } func (x *AgentSessionFrame) GetSessionId() string { @@ -3029,7 +3166,7 @@ type ProvisionAgentWorkspaceRequest struct { func (x *ProvisionAgentWorkspaceRequest) Reset() { *x = ProvisionAgentWorkspaceRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[38] + mi := &file_compass_v1_compass_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3041,7 +3178,7 @@ func (x *ProvisionAgentWorkspaceRequest) String() string { func (*ProvisionAgentWorkspaceRequest) ProtoMessage() {} func (x *ProvisionAgentWorkspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[38] + mi := &file_compass_v1_compass_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3054,7 +3191,7 @@ func (x *ProvisionAgentWorkspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProvisionAgentWorkspaceRequest.ProtoReflect.Descriptor instead. func (*ProvisionAgentWorkspaceRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{38} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{41} } func (x *ProvisionAgentWorkspaceRequest) GetAgentHandle() string { @@ -3096,7 +3233,7 @@ type ProvisionAgentWorkspaceResponse struct { func (x *ProvisionAgentWorkspaceResponse) Reset() { *x = ProvisionAgentWorkspaceResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[39] + mi := &file_compass_v1_compass_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3108,7 +3245,7 @@ func (x *ProvisionAgentWorkspaceResponse) String() string { func (*ProvisionAgentWorkspaceResponse) ProtoMessage() {} func (x *ProvisionAgentWorkspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[39] + mi := &file_compass_v1_compass_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3121,7 +3258,7 @@ func (x *ProvisionAgentWorkspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProvisionAgentWorkspaceResponse.ProtoReflect.Descriptor instead. func (*ProvisionAgentWorkspaceResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{39} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{42} } func (x *ProvisionAgentWorkspaceResponse) GetContainerName() string { @@ -3148,7 +3285,7 @@ type RemoveAgentWorkspaceRequest struct { func (x *RemoveAgentWorkspaceRequest) Reset() { *x = RemoveAgentWorkspaceRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[40] + mi := &file_compass_v1_compass_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3160,7 +3297,7 @@ func (x *RemoveAgentWorkspaceRequest) String() string { func (*RemoveAgentWorkspaceRequest) ProtoMessage() {} func (x *RemoveAgentWorkspaceRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[40] + mi := &file_compass_v1_compass_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3173,7 +3310,7 @@ func (x *RemoveAgentWorkspaceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAgentWorkspaceRequest.ProtoReflect.Descriptor instead. func (*RemoveAgentWorkspaceRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{40} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{43} } func (x *RemoveAgentWorkspaceRequest) GetContainerName() string { @@ -3198,7 +3335,7 @@ type RemoveAgentWorkspaceResponse struct { func (x *RemoveAgentWorkspaceResponse) Reset() { *x = RemoveAgentWorkspaceResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[41] + mi := &file_compass_v1_compass_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3210,7 +3347,7 @@ func (x *RemoveAgentWorkspaceResponse) String() string { func (*RemoveAgentWorkspaceResponse) ProtoMessage() {} func (x *RemoveAgentWorkspaceResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[41] + mi := &file_compass_v1_compass_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3223,7 +3360,7 @@ func (x *RemoveAgentWorkspaceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAgentWorkspaceResponse.ProtoReflect.Descriptor instead. func (*RemoveAgentWorkspaceResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{41} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{44} } // StartAgentSession: bring the first-party agent in a provisioned container @@ -3244,7 +3381,7 @@ type StartAgentSessionRequest struct { func (x *StartAgentSessionRequest) Reset() { *x = StartAgentSessionRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[42] + mi := &file_compass_v1_compass_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3256,7 +3393,7 @@ func (x *StartAgentSessionRequest) String() string { func (*StartAgentSessionRequest) ProtoMessage() {} func (x *StartAgentSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[42] + mi := &file_compass_v1_compass_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3269,7 +3406,7 @@ func (x *StartAgentSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartAgentSessionRequest.ProtoReflect.Descriptor instead. func (*StartAgentSessionRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{42} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{45} } func (x *StartAgentSessionRequest) GetContainerName() string { @@ -3297,7 +3434,7 @@ type StartAgentSessionResponse struct { func (x *StartAgentSessionResponse) Reset() { *x = StartAgentSessionResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[43] + mi := &file_compass_v1_compass_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3309,7 +3446,7 @@ func (x *StartAgentSessionResponse) String() string { func (*StartAgentSessionResponse) ProtoMessage() {} func (x *StartAgentSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[43] + mi := &file_compass_v1_compass_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3322,7 +3459,7 @@ func (x *StartAgentSessionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartAgentSessionResponse.ProtoReflect.Descriptor instead. func (*StartAgentSessionResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{43} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{46} } func (x *StartAgentSessionResponse) GetSessionId() string { @@ -3353,7 +3490,7 @@ type SpawnAgentRequest struct { func (x *SpawnAgentRequest) Reset() { *x = SpawnAgentRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[44] + mi := &file_compass_v1_compass_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3365,7 +3502,7 @@ func (x *SpawnAgentRequest) String() string { func (*SpawnAgentRequest) ProtoMessage() {} func (x *SpawnAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[44] + mi := &file_compass_v1_compass_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3378,7 +3515,7 @@ func (x *SpawnAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SpawnAgentRequest.ProtoReflect.Descriptor instead. func (*SpawnAgentRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{44} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{47} } func (x *SpawnAgentRequest) GetAgentHandle() string { @@ -3410,7 +3547,7 @@ type SpawnAgentResponse struct { func (x *SpawnAgentResponse) Reset() { *x = SpawnAgentResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[45] + mi := &file_compass_v1_compass_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3422,7 +3559,7 @@ func (x *SpawnAgentResponse) String() string { func (*SpawnAgentResponse) ProtoMessage() {} func (x *SpawnAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[45] + mi := &file_compass_v1_compass_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3435,7 +3572,7 @@ func (x *SpawnAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SpawnAgentResponse.ProtoReflect.Descriptor instead. func (*SpawnAgentResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{45} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{48} } func (x *SpawnAgentResponse) GetSessionId() string { @@ -3461,7 +3598,7 @@ type StopAgentSessionRequest struct { func (x *StopAgentSessionRequest) Reset() { *x = StopAgentSessionRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[46] + mi := &file_compass_v1_compass_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3473,7 +3610,7 @@ func (x *StopAgentSessionRequest) String() string { func (*StopAgentSessionRequest) ProtoMessage() {} func (x *StopAgentSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[46] + mi := &file_compass_v1_compass_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3486,7 +3623,7 @@ func (x *StopAgentSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StopAgentSessionRequest.ProtoReflect.Descriptor instead. func (*StopAgentSessionRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{46} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{49} } func (x *StopAgentSessionRequest) GetSessionId() string { @@ -3504,7 +3641,7 @@ type StopAgentSessionResponse struct { func (x *StopAgentSessionResponse) Reset() { *x = StopAgentSessionResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[47] + mi := &file_compass_v1_compass_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3516,7 +3653,7 @@ func (x *StopAgentSessionResponse) String() string { func (*StopAgentSessionResponse) ProtoMessage() {} func (x *StopAgentSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[47] + mi := &file_compass_v1_compass_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3529,7 +3666,7 @@ func (x *StopAgentSessionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StopAgentSessionResponse.ProtoReflect.Descriptor instead. func (*StopAgentSessionResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{47} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{50} } type ReloadAgentSessionRequest struct { @@ -3541,7 +3678,7 @@ type ReloadAgentSessionRequest struct { func (x *ReloadAgentSessionRequest) Reset() { *x = ReloadAgentSessionRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[48] + mi := &file_compass_v1_compass_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3553,7 +3690,7 @@ func (x *ReloadAgentSessionRequest) String() string { func (*ReloadAgentSessionRequest) ProtoMessage() {} func (x *ReloadAgentSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[48] + mi := &file_compass_v1_compass_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3566,7 +3703,7 @@ func (x *ReloadAgentSessionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReloadAgentSessionRequest.ProtoReflect.Descriptor instead. func (*ReloadAgentSessionRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{48} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{51} } func (x *ReloadAgentSessionRequest) GetSessionId() string { @@ -3586,7 +3723,7 @@ type ReloadAgentSessionResponse struct { func (x *ReloadAgentSessionResponse) Reset() { *x = ReloadAgentSessionResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[49] + mi := &file_compass_v1_compass_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3598,7 +3735,7 @@ func (x *ReloadAgentSessionResponse) String() string { func (*ReloadAgentSessionResponse) ProtoMessage() {} func (x *ReloadAgentSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[49] + mi := &file_compass_v1_compass_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3611,7 +3748,7 @@ func (x *ReloadAgentSessionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReloadAgentSessionResponse.ProtoReflect.Descriptor instead. func (*ReloadAgentSessionResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{49} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{52} } func (x *ReloadAgentSessionResponse) GetSessionId() string { @@ -3632,7 +3769,7 @@ type GetAgentStatusRequest struct { func (x *GetAgentStatusRequest) Reset() { *x = GetAgentStatusRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[50] + mi := &file_compass_v1_compass_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3644,7 +3781,7 @@ func (x *GetAgentStatusRequest) String() string { func (*GetAgentStatusRequest) ProtoMessage() {} func (x *GetAgentStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[50] + mi := &file_compass_v1_compass_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3657,7 +3794,7 @@ func (x *GetAgentStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentStatusRequest.ProtoReflect.Descriptor instead. func (*GetAgentStatusRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{50} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{53} } func (x *GetAgentStatusRequest) GetSessionId() string { @@ -3676,7 +3813,7 @@ type GetAgentStatusResponse struct { func (x *GetAgentStatusResponse) Reset() { *x = GetAgentStatusResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[51] + mi := &file_compass_v1_compass_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3688,7 +3825,7 @@ func (x *GetAgentStatusResponse) String() string { func (*GetAgentStatusResponse) ProtoMessage() {} func (x *GetAgentStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[51] + mi := &file_compass_v1_compass_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3701,7 +3838,7 @@ func (x *GetAgentStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentStatusResponse.ProtoReflect.Descriptor instead. func (*GetAgentStatusResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{51} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{54} } func (x *GetAgentStatusResponse) GetStatuses() []*AgentSessionStatus { @@ -3724,7 +3861,7 @@ type IssueTokenRequest struct { func (x *IssueTokenRequest) Reset() { *x = IssueTokenRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[52] + mi := &file_compass_v1_compass_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3736,7 +3873,7 @@ func (x *IssueTokenRequest) String() string { func (*IssueTokenRequest) ProtoMessage() {} func (x *IssueTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[52] + mi := &file_compass_v1_compass_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3749,7 +3886,7 @@ func (x *IssueTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueTokenRequest.ProtoReflect.Descriptor instead. func (*IssueTokenRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{52} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{55} } func (x *IssueTokenRequest) GetAccountHandle() string { @@ -3771,7 +3908,7 @@ type IssueTokenResponse struct { func (x *IssueTokenResponse) Reset() { *x = IssueTokenResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[53] + mi := &file_compass_v1_compass_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3783,7 +3920,7 @@ func (x *IssueTokenResponse) String() string { func (*IssueTokenResponse) ProtoMessage() {} func (x *IssueTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[53] + mi := &file_compass_v1_compass_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3796,7 +3933,7 @@ func (x *IssueTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use IssueTokenResponse.ProtoReflect.Descriptor instead. func (*IssueTokenResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{53} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{56} } func (x *IssueTokenResponse) GetToken() string { @@ -3820,7 +3957,7 @@ type RevokeTokenRequest struct { func (x *RevokeTokenRequest) Reset() { *x = RevokeTokenRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[54] + mi := &file_compass_v1_compass_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3832,7 +3969,7 @@ func (x *RevokeTokenRequest) String() string { func (*RevokeTokenRequest) ProtoMessage() {} func (x *RevokeTokenRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[54] + mi := &file_compass_v1_compass_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3845,7 +3982,7 @@ func (x *RevokeTokenRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeTokenRequest.ProtoReflect.Descriptor instead. func (*RevokeTokenRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{54} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{57} } func (x *RevokeTokenRequest) GetToken() string { @@ -3863,7 +4000,7 @@ type RevokeTokenResponse struct { func (x *RevokeTokenResponse) Reset() { *x = RevokeTokenResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[55] + mi := &file_compass_v1_compass_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3875,7 +4012,7 @@ func (x *RevokeTokenResponse) String() string { func (*RevokeTokenResponse) ProtoMessage() {} func (x *RevokeTokenResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[55] + mi := &file_compass_v1_compass_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3888,7 +4025,7 @@ func (x *RevokeTokenResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeTokenResponse.ProtoReflect.Descriptor instead. func (*RevokeTokenResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{55} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{58} } // PutAgentConfig: declare the fleet config bundle. The caller's identity is the @@ -3904,7 +4041,7 @@ type PutAgentConfigRequest struct { func (x *PutAgentConfigRequest) Reset() { *x = PutAgentConfigRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[56] + mi := &file_compass_v1_compass_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3916,7 +4053,7 @@ func (x *PutAgentConfigRequest) String() string { func (*PutAgentConfigRequest) ProtoMessage() {} func (x *PutAgentConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[56] + mi := &file_compass_v1_compass_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3929,7 +4066,7 @@ func (x *PutAgentConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PutAgentConfigRequest.ProtoReflect.Descriptor instead. func (*PutAgentConfigRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{56} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{59} } func (x *PutAgentConfigRequest) GetBundle() []byte { @@ -3951,7 +4088,7 @@ type PutAgentConfigResponse struct { func (x *PutAgentConfigResponse) Reset() { *x = PutAgentConfigResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[57] + mi := &file_compass_v1_compass_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3963,7 +4100,7 @@ func (x *PutAgentConfigResponse) String() string { func (*PutAgentConfigResponse) ProtoMessage() {} func (x *PutAgentConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[57] + mi := &file_compass_v1_compass_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3976,7 +4113,7 @@ func (x *PutAgentConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PutAgentConfigResponse.ProtoReflect.Descriptor instead. func (*PutAgentConfigResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{57} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{60} } func (x *PutAgentConfigResponse) GetVersion() string { @@ -3994,7 +4131,7 @@ type GetAgentConfigInfoRequest struct { func (x *GetAgentConfigInfoRequest) Reset() { *x = GetAgentConfigInfoRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[58] + mi := &file_compass_v1_compass_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4006,7 +4143,7 @@ func (x *GetAgentConfigInfoRequest) String() string { func (*GetAgentConfigInfoRequest) ProtoMessage() {} func (x *GetAgentConfigInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[58] + mi := &file_compass_v1_compass_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4019,7 +4156,7 @@ func (x *GetAgentConfigInfoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentConfigInfoRequest.ProtoReflect.Descriptor instead. func (*GetAgentConfigInfoRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{58} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{61} } // GetAgentConfigInfo: the current bundle's version and member names by top dir — @@ -4054,7 +4191,7 @@ type GetAgentConfigInfoResponse struct { func (x *GetAgentConfigInfoResponse) Reset() { *x = GetAgentConfigInfoResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[59] + mi := &file_compass_v1_compass_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4066,7 +4203,7 @@ func (x *GetAgentConfigInfoResponse) String() string { func (*GetAgentConfigInfoResponse) ProtoMessage() {} func (x *GetAgentConfigInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[59] + mi := &file_compass_v1_compass_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4079,7 +4216,7 @@ func (x *GetAgentConfigInfoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentConfigInfoResponse.ProtoReflect.Descriptor instead. func (*GetAgentConfigInfoResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{59} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{62} } func (x *GetAgentConfigInfoResponse) GetVersion() string { @@ -4160,7 +4297,7 @@ type DeleteAgentConfigRequest struct { func (x *DeleteAgentConfigRequest) Reset() { *x = DeleteAgentConfigRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[60] + mi := &file_compass_v1_compass_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4172,7 +4309,7 @@ func (x *DeleteAgentConfigRequest) String() string { func (*DeleteAgentConfigRequest) ProtoMessage() {} func (x *DeleteAgentConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[60] + mi := &file_compass_v1_compass_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4185,7 +4322,7 @@ func (x *DeleteAgentConfigRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAgentConfigRequest.ProtoReflect.Descriptor instead. func (*DeleteAgentConfigRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{60} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{63} } type DeleteAgentConfigResponse struct { @@ -4196,7 +4333,7 @@ type DeleteAgentConfigResponse struct { func (x *DeleteAgentConfigResponse) Reset() { *x = DeleteAgentConfigResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[61] + mi := &file_compass_v1_compass_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4208,7 +4345,7 @@ func (x *DeleteAgentConfigResponse) String() string { func (*DeleteAgentConfigResponse) ProtoMessage() {} func (x *DeleteAgentConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[61] + mi := &file_compass_v1_compass_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4221,7 +4358,7 @@ func (x *DeleteAgentConfigResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteAgentConfigResponse.ProtoReflect.Descriptor instead. func (*DeleteAgentConfigResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{61} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{64} } // One candidate in a stable name's ordered chain: an upstream (provider, @@ -4239,7 +4376,7 @@ type ModelCandidate struct { func (x *ModelCandidate) Reset() { *x = ModelCandidate{} - mi := &file_compass_v1_compass_proto_msgTypes[62] + mi := &file_compass_v1_compass_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4251,7 +4388,7 @@ func (x *ModelCandidate) String() string { func (*ModelCandidate) ProtoMessage() {} func (x *ModelCandidate) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[62] + mi := &file_compass_v1_compass_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4264,7 +4401,7 @@ func (x *ModelCandidate) ProtoReflect() protoreflect.Message { // Deprecated: Use ModelCandidate.ProtoReflect.Descriptor instead. func (*ModelCandidate) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{62} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{65} } func (x *ModelCandidate) GetProvider() string { @@ -4301,7 +4438,7 @@ type ModelMetadata struct { func (x *ModelMetadata) Reset() { *x = ModelMetadata{} - mi := &file_compass_v1_compass_proto_msgTypes[63] + mi := &file_compass_v1_compass_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4313,7 +4450,7 @@ func (x *ModelMetadata) String() string { func (*ModelMetadata) ProtoMessage() {} func (x *ModelMetadata) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[63] + mi := &file_compass_v1_compass_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4326,7 +4463,7 @@ func (x *ModelMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use ModelMetadata.ProtoReflect.Descriptor instead. func (*ModelMetadata) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{63} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{66} } func (x *ModelMetadata) GetContextWindow() int64 { @@ -4370,7 +4507,7 @@ type ModelRegistryEntry struct { func (x *ModelRegistryEntry) Reset() { *x = ModelRegistryEntry{} - mi := &file_compass_v1_compass_proto_msgTypes[64] + mi := &file_compass_v1_compass_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4382,7 +4519,7 @@ func (x *ModelRegistryEntry) String() string { func (*ModelRegistryEntry) ProtoMessage() {} func (x *ModelRegistryEntry) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[64] + mi := &file_compass_v1_compass_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4395,7 +4532,7 @@ func (x *ModelRegistryEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use ModelRegistryEntry.ProtoReflect.Descriptor instead. func (*ModelRegistryEntry) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{64} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{67} } func (x *ModelRegistryEntry) GetDisplayName() string { @@ -4430,7 +4567,7 @@ type ModelRegistry struct { func (x *ModelRegistry) Reset() { *x = ModelRegistry{} - mi := &file_compass_v1_compass_proto_msgTypes[65] + mi := &file_compass_v1_compass_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4442,7 +4579,7 @@ func (x *ModelRegistry) String() string { func (*ModelRegistry) ProtoMessage() {} func (x *ModelRegistry) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[65] + mi := &file_compass_v1_compass_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4455,7 +4592,7 @@ func (x *ModelRegistry) ProtoReflect() protoreflect.Message { // Deprecated: Use ModelRegistry.ProtoReflect.Descriptor instead. func (*ModelRegistry) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{65} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{68} } func (x *ModelRegistry) GetEntries() map[string]*ModelRegistryEntry { @@ -4481,7 +4618,7 @@ type PutModelRegistryRequest struct { func (x *PutModelRegistryRequest) Reset() { *x = PutModelRegistryRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[66] + mi := &file_compass_v1_compass_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4493,7 +4630,7 @@ func (x *PutModelRegistryRequest) String() string { func (*PutModelRegistryRequest) ProtoMessage() {} func (x *PutModelRegistryRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[66] + mi := &file_compass_v1_compass_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4506,7 +4643,7 @@ func (x *PutModelRegistryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PutModelRegistryRequest.ProtoReflect.Descriptor instead. func (*PutModelRegistryRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{66} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{69} } func (x *PutModelRegistryRequest) GetRegistry() *ModelRegistry { @@ -4533,7 +4670,7 @@ type PutModelRegistryResponse struct { func (x *PutModelRegistryResponse) Reset() { *x = PutModelRegistryResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[67] + mi := &file_compass_v1_compass_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4545,7 +4682,7 @@ func (x *PutModelRegistryResponse) String() string { func (*PutModelRegistryResponse) ProtoMessage() {} func (x *PutModelRegistryResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[67] + mi := &file_compass_v1_compass_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4558,7 +4695,7 @@ func (x *PutModelRegistryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PutModelRegistryResponse.ProtoReflect.Descriptor instead. func (*PutModelRegistryResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{67} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{70} } func (x *PutModelRegistryResponse) GetVersion() int64 { @@ -4576,7 +4713,7 @@ type GetModelRegistryRequest struct { func (x *GetModelRegistryRequest) Reset() { *x = GetModelRegistryRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[68] + mi := &file_compass_v1_compass_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4588,7 +4725,7 @@ func (x *GetModelRegistryRequest) String() string { func (*GetModelRegistryRequest) ProtoMessage() {} func (x *GetModelRegistryRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[68] + mi := &file_compass_v1_compass_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4601,7 +4738,7 @@ func (x *GetModelRegistryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetModelRegistryRequest.ProtoReflect.Descriptor instead. func (*GetModelRegistryRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{68} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{71} } // GetModelRegistry: the current registry version and payload. An unconfigured @@ -4616,7 +4753,7 @@ type GetModelRegistryResponse struct { func (x *GetModelRegistryResponse) Reset() { *x = GetModelRegistryResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[69] + mi := &file_compass_v1_compass_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4628,7 +4765,7 @@ func (x *GetModelRegistryResponse) String() string { func (*GetModelRegistryResponse) ProtoMessage() {} func (x *GetModelRegistryResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[69] + mi := &file_compass_v1_compass_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4641,7 +4778,7 @@ func (x *GetModelRegistryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetModelRegistryResponse.ProtoReflect.Descriptor instead. func (*GetModelRegistryResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{69} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{72} } func (x *GetModelRegistryResponse) GetVersion() int64 { @@ -4666,7 +4803,7 @@ type DeleteModelRegistryRequest struct { func (x *DeleteModelRegistryRequest) Reset() { *x = DeleteModelRegistryRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[70] + mi := &file_compass_v1_compass_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4678,7 +4815,7 @@ func (x *DeleteModelRegistryRequest) String() string { func (*DeleteModelRegistryRequest) ProtoMessage() {} func (x *DeleteModelRegistryRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[70] + mi := &file_compass_v1_compass_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4691,7 +4828,7 @@ func (x *DeleteModelRegistryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteModelRegistryRequest.ProtoReflect.Descriptor instead. func (*DeleteModelRegistryRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{70} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{73} } type DeleteModelRegistryResponse struct { @@ -4702,7 +4839,7 @@ type DeleteModelRegistryResponse struct { func (x *DeleteModelRegistryResponse) Reset() { *x = DeleteModelRegistryResponse{} - mi := &file_compass_v1_compass_proto_msgTypes[71] + mi := &file_compass_v1_compass_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4714,7 +4851,7 @@ func (x *DeleteModelRegistryResponse) String() string { func (*DeleteModelRegistryResponse) ProtoMessage() {} func (x *DeleteModelRegistryResponse) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[71] + mi := &file_compass_v1_compass_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4727,7 +4864,7 @@ func (x *DeleteModelRegistryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteModelRegistryResponse.ProtoReflect.Descriptor instead. func (*DeleteModelRegistryResponse) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{71} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{74} } // The Compass agent attribution parsed from the owner header at ingestion — a @@ -4749,7 +4886,7 @@ type AgentAttribution struct { func (x *AgentAttribution) Reset() { *x = AgentAttribution{} - mi := &file_compass_v1_compass_proto_msgTypes[72] + mi := &file_compass_v1_compass_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4761,7 +4898,7 @@ func (x *AgentAttribution) String() string { func (*AgentAttribution) ProtoMessage() {} func (x *AgentAttribution) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[72] + mi := &file_compass_v1_compass_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4774,7 +4911,7 @@ func (x *AgentAttribution) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentAttribution.ProtoReflect.Descriptor instead. func (*AgentAttribution) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{72} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{75} } func (x *AgentAttribution) GetAgentHandle() string { @@ -4794,7 +4931,7 @@ type ForgeRef struct { func (x *ForgeRef) Reset() { *x = ForgeRef{} - mi := &file_compass_v1_compass_proto_msgTypes[73] + mi := &file_compass_v1_compass_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4806,7 +4943,7 @@ func (x *ForgeRef) String() string { func (*ForgeRef) ProtoMessage() {} func (x *ForgeRef) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[73] + mi := &file_compass_v1_compass_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4819,7 +4956,7 @@ func (x *ForgeRef) ProtoReflect() protoreflect.Message { // Deprecated: Use ForgeRef.ProtoReflect.Descriptor instead. func (*ForgeRef) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{73} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{76} } func (x *ForgeRef) GetProvider() ForgeProvider { @@ -4879,7 +5016,7 @@ type Issue struct { func (x *Issue) Reset() { *x = Issue{} - mi := &file_compass_v1_compass_proto_msgTypes[74] + mi := &file_compass_v1_compass_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4891,7 +5028,7 @@ func (x *Issue) String() string { func (*Issue) ProtoMessage() {} func (x *Issue) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[74] + mi := &file_compass_v1_compass_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4904,7 +5041,7 @@ func (x *Issue) ProtoReflect() protoreflect.Message { // Deprecated: Use Issue.ProtoReflect.Descriptor instead. func (*Issue) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{74} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{77} } func (x *Issue) GetId() string { @@ -5066,7 +5203,7 @@ type PullRequest struct { func (x *PullRequest) Reset() { *x = PullRequest{} - mi := &file_compass_v1_compass_proto_msgTypes[75] + mi := &file_compass_v1_compass_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5078,7 +5215,7 @@ func (x *PullRequest) String() string { func (*PullRequest) ProtoMessage() {} func (x *PullRequest) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[75] + mi := &file_compass_v1_compass_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5091,7 +5228,7 @@ func (x *PullRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PullRequest.ProtoReflect.Descriptor instead. func (*PullRequest) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{75} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{78} } func (x *PullRequest) GetForge() *ForgeRef { @@ -5212,7 +5349,7 @@ type ChecksSummary struct { func (x *ChecksSummary) Reset() { *x = ChecksSummary{} - mi := &file_compass_v1_compass_proto_msgTypes[76] + mi := &file_compass_v1_compass_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5224,7 +5361,7 @@ func (x *ChecksSummary) String() string { func (*ChecksSummary) ProtoMessage() {} func (x *ChecksSummary) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[76] + mi := &file_compass_v1_compass_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5237,7 +5374,7 @@ func (x *ChecksSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use ChecksSummary.ProtoReflect.Descriptor instead. func (*ChecksSummary) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{76} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{79} } func (x *ChecksSummary) GetHeadSha() string { @@ -5273,7 +5410,7 @@ type Check struct { func (x *Check) Reset() { *x = Check{} - mi := &file_compass_v1_compass_proto_msgTypes[77] + mi := &file_compass_v1_compass_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5285,7 +5422,7 @@ func (x *Check) String() string { func (*Check) ProtoMessage() {} func (x *Check) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[77] + mi := &file_compass_v1_compass_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5298,7 +5435,7 @@ func (x *Check) ProtoReflect() protoreflect.Message { // Deprecated: Use Check.ProtoReflect.Descriptor instead. func (*Check) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{77} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{80} } func (x *Check) GetName() string { @@ -5342,7 +5479,7 @@ type ChangedStats struct { func (x *ChangedStats) Reset() { *x = ChangedStats{} - mi := &file_compass_v1_compass_proto_msgTypes[78] + mi := &file_compass_v1_compass_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5354,7 +5491,7 @@ func (x *ChangedStats) String() string { func (*ChangedStats) ProtoMessage() {} func (x *ChangedStats) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[78] + mi := &file_compass_v1_compass_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5367,7 +5504,7 @@ func (x *ChangedStats) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangedStats.ProtoReflect.Descriptor instead. func (*ChangedStats) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{78} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{81} } func (x *ChangedStats) GetFiles() uint32 { @@ -5405,7 +5542,7 @@ type TrackerRef struct { func (x *TrackerRef) Reset() { *x = TrackerRef{} - mi := &file_compass_v1_compass_proto_msgTypes[79] + mi := &file_compass_v1_compass_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5417,7 +5554,7 @@ func (x *TrackerRef) String() string { func (*TrackerRef) ProtoMessage() {} func (x *TrackerRef) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[79] + mi := &file_compass_v1_compass_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5430,7 +5567,7 @@ func (x *TrackerRef) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackerRef.ProtoReflect.Descriptor instead. func (*TrackerRef) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{79} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{82} } func (x *TrackerRef) GetKind() string { @@ -5479,7 +5616,7 @@ type Review struct { func (x *Review) Reset() { *x = Review{} - mi := &file_compass_v1_compass_proto_msgTypes[80] + mi := &file_compass_v1_compass_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5491,7 +5628,7 @@ func (x *Review) String() string { func (*Review) ProtoMessage() {} func (x *Review) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[80] + mi := &file_compass_v1_compass_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5504,7 +5641,7 @@ func (x *Review) ProtoReflect() protoreflect.Message { // Deprecated: Use Review.ProtoReflect.Descriptor instead. func (*Review) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{80} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{83} } func (x *Review) GetAuthor() string { @@ -5546,7 +5683,7 @@ type ReviewThread struct { func (x *ReviewThread) Reset() { *x = ReviewThread{} - mi := &file_compass_v1_compass_proto_msgTypes[81] + mi := &file_compass_v1_compass_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5558,7 +5695,7 @@ func (x *ReviewThread) String() string { func (*ReviewThread) ProtoMessage() {} func (x *ReviewThread) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[81] + mi := &file_compass_v1_compass_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5571,7 +5708,7 @@ func (x *ReviewThread) ProtoReflect() protoreflect.Message { // Deprecated: Use ReviewThread.ProtoReflect.Descriptor instead. func (*ReviewThread) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{81} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{84} } func (x *ReviewThread) GetPath() string { @@ -5606,7 +5743,7 @@ type Comment struct { func (x *Comment) Reset() { *x = Comment{} - mi := &file_compass_v1_compass_proto_msgTypes[82] + mi := &file_compass_v1_compass_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5618,7 +5755,7 @@ func (x *Comment) String() string { func (*Comment) ProtoMessage() {} func (x *Comment) ProtoReflect() protoreflect.Message { - mi := &file_compass_v1_compass_proto_msgTypes[82] + mi := &file_compass_v1_compass_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5631,7 +5768,7 @@ func (x *Comment) ProtoReflect() protoreflect.Message { // Deprecated: Use Comment.ProtoReflect.Descriptor instead. func (*Comment) Descriptor() ([]byte, []int) { - return file_compass_v1_compass_proto_rawDescGZIP(), []int{82} + return file_compass_v1_compass_proto_rawDescGZIP(), []int{85} } func (x *Comment) GetAuthor() string { @@ -5688,7 +5825,13 @@ const file_compass_v1_compass_proto_rawDesc = "" + "\x17SetServerSecretResponse\"/\n" + "\x19DeleteServerSecretRequest\x12\x12\n" + "\x04name\x18\x01 \x01(\tR\x04name\"\x1c\n" + - "\x1aDeleteServerSecretResponse\"\x16\n" + + "\x1aDeleteServerSecretResponse\"\x1a\n" + + "\x18ListServerSecretsRequest\"b\n" + + "\x19ListServerSecretsResponse\x12E\n" + + "\x0eserver_secrets\x18\x01 \x03(\v2\x1e.compass.v1.ServerSecretStatusR\rserverSecrets\"?\n" + + "\x12ServerSecretStatus\x12\x12\n" + + "\x04name\x18\x01 \x01(\tR\x04name\x12\x15\n" + + "\x06is_set\x18\x02 \x01(\bR\x05isSet\"\x16\n" + "\x14GetServerInfoRequest\"R\n" + "\x15GetServerInfoResponse\x12\x18\n" + "\aversion\x18\x01 \x01(\tR\aversion\x12\x1f\n" + @@ -6069,13 +6212,14 @@ const file_compass_v1_compass_proto_rawDesc = "" + "\x11DeleteAgentConfig\x12$.compass.v1.DeleteAgentConfigRequest\x1a%.compass.v1.DeleteAgentConfigResponse\x12]\n" + "\x10PutModelRegistry\x12#.compass.v1.PutModelRegistryRequest\x1a$.compass.v1.PutModelRegistryResponse\x12]\n" + "\x10GetModelRegistry\x12#.compass.v1.GetModelRegistryRequest\x1a$.compass.v1.GetModelRegistryResponse\x12f\n" + - "\x13DeleteModelRegistry\x12&.compass.v1.DeleteModelRegistryRequest\x1a'.compass.v1.DeleteModelRegistryResponse2\xbe\x03\n" + + "\x13DeleteModelRegistry\x12&.compass.v1.DeleteModelRegistryRequest\x1a'.compass.v1.DeleteModelRegistryResponse2\xa0\x04\n" + "\x0eSecretsService\x12H\n" + "\tSetSecret\x12\x1c.compass.v1.SetSecretRequest\x1a\x1d.compass.v1.SetSecretResponse\x12N\n" + "\vListSecrets\x12\x1e.compass.v1.ListSecretsRequest\x1a\x1f.compass.v1.ListSecretsResponse\x12Q\n" + "\fDeleteSecret\x12\x1f.compass.v1.DeleteSecretRequest\x1a .compass.v1.DeleteSecretResponse\x12Z\n" + "\x0fSetServerSecret\x12\".compass.v1.SetServerSecretRequest\x1a#.compass.v1.SetServerSecretResponse\x12c\n" + - "\x12DeleteServerSecret\x12%.compass.v1.DeleteServerSecretRequest\x1a&.compass.v1.DeleteServerSecretResponseb\x06proto3" + "\x12DeleteServerSecret\x12%.compass.v1.DeleteServerSecretRequest\x1a&.compass.v1.DeleteServerSecretResponse\x12`\n" + + "\x11ListServerSecrets\x12$.compass.v1.ListServerSecretsRequest\x1a%.compass.v1.ListServerSecretsResponseb\x06proto3" var ( file_compass_v1_compass_proto_rawDescOnce sync.Once @@ -6090,7 +6234,7 @@ func file_compass_v1_compass_proto_rawDescGZIP() []byte { } var file_compass_v1_compass_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_compass_v1_compass_proto_msgTypes = make([]protoimpl.MessageInfo, 84) +var file_compass_v1_compass_proto_msgTypes = make([]protoimpl.MessageInfo, 87) var file_compass_v1_compass_proto_goTypes = []any{ (SecretDelivery)(0), // 0: compass.v1.SecretDelivery (SecretKind)(0), // 1: compass.v1.SecretKind @@ -6113,80 +6257,83 @@ var file_compass_v1_compass_proto_goTypes = []any{ (*SetServerSecretResponse)(nil), // 18: compass.v1.SetServerSecretResponse (*DeleteServerSecretRequest)(nil), // 19: compass.v1.DeleteServerSecretRequest (*DeleteServerSecretResponse)(nil), // 20: compass.v1.DeleteServerSecretResponse - (*GetServerInfoRequest)(nil), // 21: compass.v1.GetServerInfoRequest - (*GetServerInfoResponse)(nil), // 22: compass.v1.GetServerInfoResponse - (*WhoAmIRequest)(nil), // 23: compass.v1.WhoAmIRequest - (*WhoAmIResponse)(nil), // 24: compass.v1.WhoAmIResponse - (*SubscribeEventsRequest)(nil), // 25: compass.v1.SubscribeEventsRequest - (*SubscribeEventsResponse)(nil), // 26: compass.v1.SubscribeEventsResponse - (*ListBoardIssuesRequest)(nil), // 27: compass.v1.ListBoardIssuesRequest - (*ListBoardIssuesResponse)(nil), // 28: compass.v1.ListBoardIssuesResponse - (*ServerStatus)(nil), // 29: compass.v1.ServerStatus - (*ResyncRequired)(nil), // 30: compass.v1.ResyncRequired - (*AgentSessionStatus)(nil), // 31: compass.v1.AgentSessionStatus - (*AgentMessageChunk)(nil), // 32: compass.v1.AgentMessageChunk - (*AgentToolCall)(nil), // 33: compass.v1.AgentToolCall - (*AgentPlan)(nil), // 34: compass.v1.AgentPlan - (*AgentPlanEntry)(nil), // 35: compass.v1.AgentPlanEntry - (*SessionEvent)(nil), // 36: compass.v1.SessionEvent - (*SessionAssistantText)(nil), // 37: compass.v1.SessionAssistantText - (*SessionThinking)(nil), // 38: compass.v1.SessionThinking - (*SessionToolCall)(nil), // 39: compass.v1.SessionToolCall - (*SessionToolCallUpdate)(nil), // 40: compass.v1.SessionToolCallUpdate - (*SessionFileDiff)(nil), // 41: compass.v1.SessionFileDiff - (*SessionPlan)(nil), // 42: compass.v1.SessionPlan - (*SessionNotice)(nil), // 43: compass.v1.SessionNotice - (*SessionInjection)(nil), // 44: compass.v1.SessionInjection - (*SessionError)(nil), // 45: compass.v1.SessionError - (*SubscribeAgentSessionRequest)(nil), // 46: compass.v1.SubscribeAgentSessionRequest - (*AgentSessionFrame)(nil), // 47: compass.v1.AgentSessionFrame - (*ProvisionAgentWorkspaceRequest)(nil), // 48: compass.v1.ProvisionAgentWorkspaceRequest - (*ProvisionAgentWorkspaceResponse)(nil), // 49: compass.v1.ProvisionAgentWorkspaceResponse - (*RemoveAgentWorkspaceRequest)(nil), // 50: compass.v1.RemoveAgentWorkspaceRequest - (*RemoveAgentWorkspaceResponse)(nil), // 51: compass.v1.RemoveAgentWorkspaceResponse - (*StartAgentSessionRequest)(nil), // 52: compass.v1.StartAgentSessionRequest - (*StartAgentSessionResponse)(nil), // 53: compass.v1.StartAgentSessionResponse - (*SpawnAgentRequest)(nil), // 54: compass.v1.SpawnAgentRequest - (*SpawnAgentResponse)(nil), // 55: compass.v1.SpawnAgentResponse - (*StopAgentSessionRequest)(nil), // 56: compass.v1.StopAgentSessionRequest - (*StopAgentSessionResponse)(nil), // 57: compass.v1.StopAgentSessionResponse - (*ReloadAgentSessionRequest)(nil), // 58: compass.v1.ReloadAgentSessionRequest - (*ReloadAgentSessionResponse)(nil), // 59: compass.v1.ReloadAgentSessionResponse - (*GetAgentStatusRequest)(nil), // 60: compass.v1.GetAgentStatusRequest - (*GetAgentStatusResponse)(nil), // 61: compass.v1.GetAgentStatusResponse - (*IssueTokenRequest)(nil), // 62: compass.v1.IssueTokenRequest - (*IssueTokenResponse)(nil), // 63: compass.v1.IssueTokenResponse - (*RevokeTokenRequest)(nil), // 64: compass.v1.RevokeTokenRequest - (*RevokeTokenResponse)(nil), // 65: compass.v1.RevokeTokenResponse - (*PutAgentConfigRequest)(nil), // 66: compass.v1.PutAgentConfigRequest - (*PutAgentConfigResponse)(nil), // 67: compass.v1.PutAgentConfigResponse - (*GetAgentConfigInfoRequest)(nil), // 68: compass.v1.GetAgentConfigInfoRequest - (*GetAgentConfigInfoResponse)(nil), // 69: compass.v1.GetAgentConfigInfoResponse - (*DeleteAgentConfigRequest)(nil), // 70: compass.v1.DeleteAgentConfigRequest - (*DeleteAgentConfigResponse)(nil), // 71: compass.v1.DeleteAgentConfigResponse - (*ModelCandidate)(nil), // 72: compass.v1.ModelCandidate - (*ModelMetadata)(nil), // 73: compass.v1.ModelMetadata - (*ModelRegistryEntry)(nil), // 74: compass.v1.ModelRegistryEntry - (*ModelRegistry)(nil), // 75: compass.v1.ModelRegistry - (*PutModelRegistryRequest)(nil), // 76: compass.v1.PutModelRegistryRequest - (*PutModelRegistryResponse)(nil), // 77: compass.v1.PutModelRegistryResponse - (*GetModelRegistryRequest)(nil), // 78: compass.v1.GetModelRegistryRequest - (*GetModelRegistryResponse)(nil), // 79: compass.v1.GetModelRegistryResponse - (*DeleteModelRegistryRequest)(nil), // 80: compass.v1.DeleteModelRegistryRequest - (*DeleteModelRegistryResponse)(nil), // 81: compass.v1.DeleteModelRegistryResponse - (*AgentAttribution)(nil), // 82: compass.v1.AgentAttribution - (*ForgeRef)(nil), // 83: compass.v1.ForgeRef - (*Issue)(nil), // 84: compass.v1.Issue - (*PullRequest)(nil), // 85: compass.v1.PullRequest - (*ChecksSummary)(nil), // 86: compass.v1.ChecksSummary - (*Check)(nil), // 87: compass.v1.Check - (*ChangedStats)(nil), // 88: compass.v1.ChangedStats - (*TrackerRef)(nil), // 89: compass.v1.TrackerRef - (*Review)(nil), // 90: compass.v1.Review - (*ReviewThread)(nil), // 91: compass.v1.ReviewThread - (*Comment)(nil), // 92: compass.v1.Comment - nil, // 93: compass.v1.ModelRegistry.EntriesEntry - (*timestamppb.Timestamp)(nil), // 94: google.protobuf.Timestamp + (*ListServerSecretsRequest)(nil), // 21: compass.v1.ListServerSecretsRequest + (*ListServerSecretsResponse)(nil), // 22: compass.v1.ListServerSecretsResponse + (*ServerSecretStatus)(nil), // 23: compass.v1.ServerSecretStatus + (*GetServerInfoRequest)(nil), // 24: compass.v1.GetServerInfoRequest + (*GetServerInfoResponse)(nil), // 25: compass.v1.GetServerInfoResponse + (*WhoAmIRequest)(nil), // 26: compass.v1.WhoAmIRequest + (*WhoAmIResponse)(nil), // 27: compass.v1.WhoAmIResponse + (*SubscribeEventsRequest)(nil), // 28: compass.v1.SubscribeEventsRequest + (*SubscribeEventsResponse)(nil), // 29: compass.v1.SubscribeEventsResponse + (*ListBoardIssuesRequest)(nil), // 30: compass.v1.ListBoardIssuesRequest + (*ListBoardIssuesResponse)(nil), // 31: compass.v1.ListBoardIssuesResponse + (*ServerStatus)(nil), // 32: compass.v1.ServerStatus + (*ResyncRequired)(nil), // 33: compass.v1.ResyncRequired + (*AgentSessionStatus)(nil), // 34: compass.v1.AgentSessionStatus + (*AgentMessageChunk)(nil), // 35: compass.v1.AgentMessageChunk + (*AgentToolCall)(nil), // 36: compass.v1.AgentToolCall + (*AgentPlan)(nil), // 37: compass.v1.AgentPlan + (*AgentPlanEntry)(nil), // 38: compass.v1.AgentPlanEntry + (*SessionEvent)(nil), // 39: compass.v1.SessionEvent + (*SessionAssistantText)(nil), // 40: compass.v1.SessionAssistantText + (*SessionThinking)(nil), // 41: compass.v1.SessionThinking + (*SessionToolCall)(nil), // 42: compass.v1.SessionToolCall + (*SessionToolCallUpdate)(nil), // 43: compass.v1.SessionToolCallUpdate + (*SessionFileDiff)(nil), // 44: compass.v1.SessionFileDiff + (*SessionPlan)(nil), // 45: compass.v1.SessionPlan + (*SessionNotice)(nil), // 46: compass.v1.SessionNotice + (*SessionInjection)(nil), // 47: compass.v1.SessionInjection + (*SessionError)(nil), // 48: compass.v1.SessionError + (*SubscribeAgentSessionRequest)(nil), // 49: compass.v1.SubscribeAgentSessionRequest + (*AgentSessionFrame)(nil), // 50: compass.v1.AgentSessionFrame + (*ProvisionAgentWorkspaceRequest)(nil), // 51: compass.v1.ProvisionAgentWorkspaceRequest + (*ProvisionAgentWorkspaceResponse)(nil), // 52: compass.v1.ProvisionAgentWorkspaceResponse + (*RemoveAgentWorkspaceRequest)(nil), // 53: compass.v1.RemoveAgentWorkspaceRequest + (*RemoveAgentWorkspaceResponse)(nil), // 54: compass.v1.RemoveAgentWorkspaceResponse + (*StartAgentSessionRequest)(nil), // 55: compass.v1.StartAgentSessionRequest + (*StartAgentSessionResponse)(nil), // 56: compass.v1.StartAgentSessionResponse + (*SpawnAgentRequest)(nil), // 57: compass.v1.SpawnAgentRequest + (*SpawnAgentResponse)(nil), // 58: compass.v1.SpawnAgentResponse + (*StopAgentSessionRequest)(nil), // 59: compass.v1.StopAgentSessionRequest + (*StopAgentSessionResponse)(nil), // 60: compass.v1.StopAgentSessionResponse + (*ReloadAgentSessionRequest)(nil), // 61: compass.v1.ReloadAgentSessionRequest + (*ReloadAgentSessionResponse)(nil), // 62: compass.v1.ReloadAgentSessionResponse + (*GetAgentStatusRequest)(nil), // 63: compass.v1.GetAgentStatusRequest + (*GetAgentStatusResponse)(nil), // 64: compass.v1.GetAgentStatusResponse + (*IssueTokenRequest)(nil), // 65: compass.v1.IssueTokenRequest + (*IssueTokenResponse)(nil), // 66: compass.v1.IssueTokenResponse + (*RevokeTokenRequest)(nil), // 67: compass.v1.RevokeTokenRequest + (*RevokeTokenResponse)(nil), // 68: compass.v1.RevokeTokenResponse + (*PutAgentConfigRequest)(nil), // 69: compass.v1.PutAgentConfigRequest + (*PutAgentConfigResponse)(nil), // 70: compass.v1.PutAgentConfigResponse + (*GetAgentConfigInfoRequest)(nil), // 71: compass.v1.GetAgentConfigInfoRequest + (*GetAgentConfigInfoResponse)(nil), // 72: compass.v1.GetAgentConfigInfoResponse + (*DeleteAgentConfigRequest)(nil), // 73: compass.v1.DeleteAgentConfigRequest + (*DeleteAgentConfigResponse)(nil), // 74: compass.v1.DeleteAgentConfigResponse + (*ModelCandidate)(nil), // 75: compass.v1.ModelCandidate + (*ModelMetadata)(nil), // 76: compass.v1.ModelMetadata + (*ModelRegistryEntry)(nil), // 77: compass.v1.ModelRegistryEntry + (*ModelRegistry)(nil), // 78: compass.v1.ModelRegistry + (*PutModelRegistryRequest)(nil), // 79: compass.v1.PutModelRegistryRequest + (*PutModelRegistryResponse)(nil), // 80: compass.v1.PutModelRegistryResponse + (*GetModelRegistryRequest)(nil), // 81: compass.v1.GetModelRegistryRequest + (*GetModelRegistryResponse)(nil), // 82: compass.v1.GetModelRegistryResponse + (*DeleteModelRegistryRequest)(nil), // 83: compass.v1.DeleteModelRegistryRequest + (*DeleteModelRegistryResponse)(nil), // 84: compass.v1.DeleteModelRegistryResponse + (*AgentAttribution)(nil), // 85: compass.v1.AgentAttribution + (*ForgeRef)(nil), // 86: compass.v1.ForgeRef + (*Issue)(nil), // 87: compass.v1.Issue + (*PullRequest)(nil), // 88: compass.v1.PullRequest + (*ChecksSummary)(nil), // 89: compass.v1.ChecksSummary + (*Check)(nil), // 90: compass.v1.Check + (*ChangedStats)(nil), // 91: compass.v1.ChangedStats + (*TrackerRef)(nil), // 92: compass.v1.TrackerRef + (*Review)(nil), // 93: compass.v1.Review + (*ReviewThread)(nil), // 94: compass.v1.ReviewThread + (*Comment)(nil), // 95: compass.v1.Comment + nil, // 96: compass.v1.ModelRegistry.EntriesEntry + (*timestamppb.Timestamp)(nil), // 97: google.protobuf.Timestamp } var file_compass_v1_compass_proto_depIdxs = []int32{ 0, // 0: compass.v1.SetSecretRequest.delivery:type_name -> compass.v1.SecretDelivery @@ -6194,112 +6341,115 @@ var file_compass_v1_compass_proto_depIdxs = []int32{ 14, // 2: compass.v1.ListSecretsResponse.secrets:type_name -> compass.v1.SecretStatus 0, // 3: compass.v1.SecretStatus.delivery:type_name -> compass.v1.SecretDelivery 1, // 4: compass.v1.SecretStatus.kind:type_name -> compass.v1.SecretKind - 29, // 5: compass.v1.SubscribeEventsResponse.server_status:type_name -> compass.v1.ServerStatus - 30, // 6: compass.v1.SubscribeEventsResponse.resync_required:type_name -> compass.v1.ResyncRequired - 31, // 7: compass.v1.SubscribeEventsResponse.agent_session_status:type_name -> compass.v1.AgentSessionStatus - 32, // 8: compass.v1.SubscribeEventsResponse.agent_message_chunk:type_name -> compass.v1.AgentMessageChunk - 33, // 9: compass.v1.SubscribeEventsResponse.agent_tool_call:type_name -> compass.v1.AgentToolCall - 34, // 10: compass.v1.SubscribeEventsResponse.agent_plan:type_name -> compass.v1.AgentPlan - 84, // 11: compass.v1.SubscribeEventsResponse.issue:type_name -> compass.v1.Issue - 84, // 12: compass.v1.ListBoardIssuesResponse.issues:type_name -> compass.v1.Issue - 2, // 13: compass.v1.ServerStatus.state:type_name -> compass.v1.ServerState - 3, // 14: compass.v1.AgentSessionStatus.state:type_name -> compass.v1.AgentSessionState - 4, // 15: compass.v1.AgentToolCall.status:type_name -> compass.v1.AgentToolCallStatus - 35, // 16: compass.v1.AgentPlan.entries:type_name -> compass.v1.AgentPlanEntry - 5, // 17: compass.v1.AgentPlanEntry.status:type_name -> compass.v1.AgentPlanEntryStatus - 37, // 18: compass.v1.SessionEvent.assistant_text:type_name -> compass.v1.SessionAssistantText - 38, // 19: compass.v1.SessionEvent.thinking:type_name -> compass.v1.SessionThinking - 39, // 20: compass.v1.SessionEvent.tool_call:type_name -> compass.v1.SessionToolCall - 40, // 21: compass.v1.SessionEvent.tool_call_update:type_name -> compass.v1.SessionToolCallUpdate - 42, // 22: compass.v1.SessionEvent.plan:type_name -> compass.v1.SessionPlan - 43, // 23: compass.v1.SessionEvent.notice:type_name -> compass.v1.SessionNotice - 44, // 24: compass.v1.SessionEvent.session_injection:type_name -> compass.v1.SessionInjection - 45, // 25: compass.v1.SessionEvent.session_error:type_name -> compass.v1.SessionError - 4, // 26: compass.v1.SessionToolCall.status:type_name -> compass.v1.AgentToolCallStatus - 4, // 27: compass.v1.SessionToolCallUpdate.status:type_name -> compass.v1.AgentToolCallStatus - 41, // 28: compass.v1.SessionToolCallUpdate.diffs:type_name -> compass.v1.SessionFileDiff - 35, // 29: compass.v1.SessionPlan.entries:type_name -> compass.v1.AgentPlanEntry - 6, // 30: compass.v1.SessionInjection.op_kind:type_name -> compass.v1.SessionInjectionKind - 7, // 31: compass.v1.SessionError.kind:type_name -> compass.v1.SessionErrorKind - 36, // 32: compass.v1.AgentSessionFrame.event:type_name -> compass.v1.SessionEvent - 3, // 33: compass.v1.AgentSessionFrame.state:type_name -> compass.v1.AgentSessionState - 31, // 34: compass.v1.GetAgentStatusResponse.statuses:type_name -> compass.v1.AgentSessionStatus - 72, // 35: compass.v1.ModelRegistryEntry.candidates:type_name -> compass.v1.ModelCandidate - 73, // 36: compass.v1.ModelRegistryEntry.metadata:type_name -> compass.v1.ModelMetadata - 93, // 37: compass.v1.ModelRegistry.entries:type_name -> compass.v1.ModelRegistry.EntriesEntry - 75, // 38: compass.v1.PutModelRegistryRequest.registry:type_name -> compass.v1.ModelRegistry - 75, // 39: compass.v1.GetModelRegistryResponse.registry:type_name -> compass.v1.ModelRegistry - 9, // 40: compass.v1.ForgeRef.provider:type_name -> compass.v1.ForgeProvider - 83, // 41: compass.v1.Issue.forge:type_name -> compass.v1.ForgeRef - 82, // 42: compass.v1.Issue.agent:type_name -> compass.v1.AgentAttribution - 94, // 43: compass.v1.Issue.updated_at:type_name -> google.protobuf.Timestamp - 8, // 44: compass.v1.Issue.state:type_name -> compass.v1.IssueState - 85, // 45: compass.v1.Issue.prs:type_name -> compass.v1.PullRequest - 89, // 46: compass.v1.Issue.tracker:type_name -> compass.v1.TrackerRef - 83, // 47: compass.v1.PullRequest.forge:type_name -> compass.v1.ForgeRef - 82, // 48: compass.v1.PullRequest.agent:type_name -> compass.v1.AgentAttribution - 88, // 49: compass.v1.PullRequest.changed:type_name -> compass.v1.ChangedStats - 86, // 50: compass.v1.PullRequest.checks:type_name -> compass.v1.ChecksSummary - 90, // 51: compass.v1.PullRequest.reviews:type_name -> compass.v1.Review - 91, // 52: compass.v1.PullRequest.threads:type_name -> compass.v1.ReviewThread - 87, // 53: compass.v1.ChecksSummary.checks:type_name -> compass.v1.Check - 92, // 54: compass.v1.ReviewThread.comments:type_name -> compass.v1.Comment - 74, // 55: compass.v1.ModelRegistry.EntriesEntry.value:type_name -> compass.v1.ModelRegistryEntry - 21, // 56: compass.v1.CompassService.GetServerInfo:input_type -> compass.v1.GetServerInfoRequest - 23, // 57: compass.v1.CompassService.WhoAmI:input_type -> compass.v1.WhoAmIRequest - 25, // 58: compass.v1.CompassService.SubscribeEvents:input_type -> compass.v1.SubscribeEventsRequest - 27, // 59: compass.v1.CompassService.ListBoardIssues:input_type -> compass.v1.ListBoardIssuesRequest - 48, // 60: compass.v1.CompassService.ProvisionAgentWorkspace:input_type -> compass.v1.ProvisionAgentWorkspaceRequest - 52, // 61: compass.v1.CompassService.StartAgentSession:input_type -> compass.v1.StartAgentSessionRequest - 54, // 62: compass.v1.CompassService.SpawnAgent:input_type -> compass.v1.SpawnAgentRequest - 56, // 63: compass.v1.CompassService.StopAgentSession:input_type -> compass.v1.StopAgentSessionRequest - 50, // 64: compass.v1.CompassService.RemoveAgentWorkspace:input_type -> compass.v1.RemoveAgentWorkspaceRequest - 58, // 65: compass.v1.CompassService.ReloadAgentSession:input_type -> compass.v1.ReloadAgentSessionRequest - 60, // 66: compass.v1.CompassService.GetAgentStatus:input_type -> compass.v1.GetAgentStatusRequest - 46, // 67: compass.v1.CompassService.SubscribeAgentSession:input_type -> compass.v1.SubscribeAgentSessionRequest - 62, // 68: compass.v1.CompassService.IssueToken:input_type -> compass.v1.IssueTokenRequest - 64, // 69: compass.v1.CompassService.RevokeToken:input_type -> compass.v1.RevokeTokenRequest - 66, // 70: compass.v1.CompassService.PutAgentConfig:input_type -> compass.v1.PutAgentConfigRequest - 68, // 71: compass.v1.CompassService.GetAgentConfigInfo:input_type -> compass.v1.GetAgentConfigInfoRequest - 70, // 72: compass.v1.CompassService.DeleteAgentConfig:input_type -> compass.v1.DeleteAgentConfigRequest - 76, // 73: compass.v1.CompassService.PutModelRegistry:input_type -> compass.v1.PutModelRegistryRequest - 78, // 74: compass.v1.CompassService.GetModelRegistry:input_type -> compass.v1.GetModelRegistryRequest - 80, // 75: compass.v1.CompassService.DeleteModelRegistry:input_type -> compass.v1.DeleteModelRegistryRequest - 10, // 76: compass.v1.SecretsService.SetSecret:input_type -> compass.v1.SetSecretRequest - 12, // 77: compass.v1.SecretsService.ListSecrets:input_type -> compass.v1.ListSecretsRequest - 15, // 78: compass.v1.SecretsService.DeleteSecret:input_type -> compass.v1.DeleteSecretRequest - 17, // 79: compass.v1.SecretsService.SetServerSecret:input_type -> compass.v1.SetServerSecretRequest - 19, // 80: compass.v1.SecretsService.DeleteServerSecret:input_type -> compass.v1.DeleteServerSecretRequest - 22, // 81: compass.v1.CompassService.GetServerInfo:output_type -> compass.v1.GetServerInfoResponse - 24, // 82: compass.v1.CompassService.WhoAmI:output_type -> compass.v1.WhoAmIResponse - 26, // 83: compass.v1.CompassService.SubscribeEvents:output_type -> compass.v1.SubscribeEventsResponse - 28, // 84: compass.v1.CompassService.ListBoardIssues:output_type -> compass.v1.ListBoardIssuesResponse - 49, // 85: compass.v1.CompassService.ProvisionAgentWorkspace:output_type -> compass.v1.ProvisionAgentWorkspaceResponse - 53, // 86: compass.v1.CompassService.StartAgentSession:output_type -> compass.v1.StartAgentSessionResponse - 55, // 87: compass.v1.CompassService.SpawnAgent:output_type -> compass.v1.SpawnAgentResponse - 57, // 88: compass.v1.CompassService.StopAgentSession:output_type -> compass.v1.StopAgentSessionResponse - 51, // 89: compass.v1.CompassService.RemoveAgentWorkspace:output_type -> compass.v1.RemoveAgentWorkspaceResponse - 59, // 90: compass.v1.CompassService.ReloadAgentSession:output_type -> compass.v1.ReloadAgentSessionResponse - 61, // 91: compass.v1.CompassService.GetAgentStatus:output_type -> compass.v1.GetAgentStatusResponse - 47, // 92: compass.v1.CompassService.SubscribeAgentSession:output_type -> compass.v1.AgentSessionFrame - 63, // 93: compass.v1.CompassService.IssueToken:output_type -> compass.v1.IssueTokenResponse - 65, // 94: compass.v1.CompassService.RevokeToken:output_type -> compass.v1.RevokeTokenResponse - 67, // 95: compass.v1.CompassService.PutAgentConfig:output_type -> compass.v1.PutAgentConfigResponse - 69, // 96: compass.v1.CompassService.GetAgentConfigInfo:output_type -> compass.v1.GetAgentConfigInfoResponse - 71, // 97: compass.v1.CompassService.DeleteAgentConfig:output_type -> compass.v1.DeleteAgentConfigResponse - 77, // 98: compass.v1.CompassService.PutModelRegistry:output_type -> compass.v1.PutModelRegistryResponse - 79, // 99: compass.v1.CompassService.GetModelRegistry:output_type -> compass.v1.GetModelRegistryResponse - 81, // 100: compass.v1.CompassService.DeleteModelRegistry:output_type -> compass.v1.DeleteModelRegistryResponse - 11, // 101: compass.v1.SecretsService.SetSecret:output_type -> compass.v1.SetSecretResponse - 13, // 102: compass.v1.SecretsService.ListSecrets:output_type -> compass.v1.ListSecretsResponse - 16, // 103: compass.v1.SecretsService.DeleteSecret:output_type -> compass.v1.DeleteSecretResponse - 18, // 104: compass.v1.SecretsService.SetServerSecret:output_type -> compass.v1.SetServerSecretResponse - 20, // 105: compass.v1.SecretsService.DeleteServerSecret:output_type -> compass.v1.DeleteServerSecretResponse - 81, // [81:106] is the sub-list for method output_type - 56, // [56:81] is the sub-list for method input_type - 56, // [56:56] is the sub-list for extension type_name - 56, // [56:56] is the sub-list for extension extendee - 0, // [0:56] is the sub-list for field type_name + 23, // 5: compass.v1.ListServerSecretsResponse.server_secrets:type_name -> compass.v1.ServerSecretStatus + 32, // 6: compass.v1.SubscribeEventsResponse.server_status:type_name -> compass.v1.ServerStatus + 33, // 7: compass.v1.SubscribeEventsResponse.resync_required:type_name -> compass.v1.ResyncRequired + 34, // 8: compass.v1.SubscribeEventsResponse.agent_session_status:type_name -> compass.v1.AgentSessionStatus + 35, // 9: compass.v1.SubscribeEventsResponse.agent_message_chunk:type_name -> compass.v1.AgentMessageChunk + 36, // 10: compass.v1.SubscribeEventsResponse.agent_tool_call:type_name -> compass.v1.AgentToolCall + 37, // 11: compass.v1.SubscribeEventsResponse.agent_plan:type_name -> compass.v1.AgentPlan + 87, // 12: compass.v1.SubscribeEventsResponse.issue:type_name -> compass.v1.Issue + 87, // 13: compass.v1.ListBoardIssuesResponse.issues:type_name -> compass.v1.Issue + 2, // 14: compass.v1.ServerStatus.state:type_name -> compass.v1.ServerState + 3, // 15: compass.v1.AgentSessionStatus.state:type_name -> compass.v1.AgentSessionState + 4, // 16: compass.v1.AgentToolCall.status:type_name -> compass.v1.AgentToolCallStatus + 38, // 17: compass.v1.AgentPlan.entries:type_name -> compass.v1.AgentPlanEntry + 5, // 18: compass.v1.AgentPlanEntry.status:type_name -> compass.v1.AgentPlanEntryStatus + 40, // 19: compass.v1.SessionEvent.assistant_text:type_name -> compass.v1.SessionAssistantText + 41, // 20: compass.v1.SessionEvent.thinking:type_name -> compass.v1.SessionThinking + 42, // 21: compass.v1.SessionEvent.tool_call:type_name -> compass.v1.SessionToolCall + 43, // 22: compass.v1.SessionEvent.tool_call_update:type_name -> compass.v1.SessionToolCallUpdate + 45, // 23: compass.v1.SessionEvent.plan:type_name -> compass.v1.SessionPlan + 46, // 24: compass.v1.SessionEvent.notice:type_name -> compass.v1.SessionNotice + 47, // 25: compass.v1.SessionEvent.session_injection:type_name -> compass.v1.SessionInjection + 48, // 26: compass.v1.SessionEvent.session_error:type_name -> compass.v1.SessionError + 4, // 27: compass.v1.SessionToolCall.status:type_name -> compass.v1.AgentToolCallStatus + 4, // 28: compass.v1.SessionToolCallUpdate.status:type_name -> compass.v1.AgentToolCallStatus + 44, // 29: compass.v1.SessionToolCallUpdate.diffs:type_name -> compass.v1.SessionFileDiff + 38, // 30: compass.v1.SessionPlan.entries:type_name -> compass.v1.AgentPlanEntry + 6, // 31: compass.v1.SessionInjection.op_kind:type_name -> compass.v1.SessionInjectionKind + 7, // 32: compass.v1.SessionError.kind:type_name -> compass.v1.SessionErrorKind + 39, // 33: compass.v1.AgentSessionFrame.event:type_name -> compass.v1.SessionEvent + 3, // 34: compass.v1.AgentSessionFrame.state:type_name -> compass.v1.AgentSessionState + 34, // 35: compass.v1.GetAgentStatusResponse.statuses:type_name -> compass.v1.AgentSessionStatus + 75, // 36: compass.v1.ModelRegistryEntry.candidates:type_name -> compass.v1.ModelCandidate + 76, // 37: compass.v1.ModelRegistryEntry.metadata:type_name -> compass.v1.ModelMetadata + 96, // 38: compass.v1.ModelRegistry.entries:type_name -> compass.v1.ModelRegistry.EntriesEntry + 78, // 39: compass.v1.PutModelRegistryRequest.registry:type_name -> compass.v1.ModelRegistry + 78, // 40: compass.v1.GetModelRegistryResponse.registry:type_name -> compass.v1.ModelRegistry + 9, // 41: compass.v1.ForgeRef.provider:type_name -> compass.v1.ForgeProvider + 86, // 42: compass.v1.Issue.forge:type_name -> compass.v1.ForgeRef + 85, // 43: compass.v1.Issue.agent:type_name -> compass.v1.AgentAttribution + 97, // 44: compass.v1.Issue.updated_at:type_name -> google.protobuf.Timestamp + 8, // 45: compass.v1.Issue.state:type_name -> compass.v1.IssueState + 88, // 46: compass.v1.Issue.prs:type_name -> compass.v1.PullRequest + 92, // 47: compass.v1.Issue.tracker:type_name -> compass.v1.TrackerRef + 86, // 48: compass.v1.PullRequest.forge:type_name -> compass.v1.ForgeRef + 85, // 49: compass.v1.PullRequest.agent:type_name -> compass.v1.AgentAttribution + 91, // 50: compass.v1.PullRequest.changed:type_name -> compass.v1.ChangedStats + 89, // 51: compass.v1.PullRequest.checks:type_name -> compass.v1.ChecksSummary + 93, // 52: compass.v1.PullRequest.reviews:type_name -> compass.v1.Review + 94, // 53: compass.v1.PullRequest.threads:type_name -> compass.v1.ReviewThread + 90, // 54: compass.v1.ChecksSummary.checks:type_name -> compass.v1.Check + 95, // 55: compass.v1.ReviewThread.comments:type_name -> compass.v1.Comment + 77, // 56: compass.v1.ModelRegistry.EntriesEntry.value:type_name -> compass.v1.ModelRegistryEntry + 24, // 57: compass.v1.CompassService.GetServerInfo:input_type -> compass.v1.GetServerInfoRequest + 26, // 58: compass.v1.CompassService.WhoAmI:input_type -> compass.v1.WhoAmIRequest + 28, // 59: compass.v1.CompassService.SubscribeEvents:input_type -> compass.v1.SubscribeEventsRequest + 30, // 60: compass.v1.CompassService.ListBoardIssues:input_type -> compass.v1.ListBoardIssuesRequest + 51, // 61: compass.v1.CompassService.ProvisionAgentWorkspace:input_type -> compass.v1.ProvisionAgentWorkspaceRequest + 55, // 62: compass.v1.CompassService.StartAgentSession:input_type -> compass.v1.StartAgentSessionRequest + 57, // 63: compass.v1.CompassService.SpawnAgent:input_type -> compass.v1.SpawnAgentRequest + 59, // 64: compass.v1.CompassService.StopAgentSession:input_type -> compass.v1.StopAgentSessionRequest + 53, // 65: compass.v1.CompassService.RemoveAgentWorkspace:input_type -> compass.v1.RemoveAgentWorkspaceRequest + 61, // 66: compass.v1.CompassService.ReloadAgentSession:input_type -> compass.v1.ReloadAgentSessionRequest + 63, // 67: compass.v1.CompassService.GetAgentStatus:input_type -> compass.v1.GetAgentStatusRequest + 49, // 68: compass.v1.CompassService.SubscribeAgentSession:input_type -> compass.v1.SubscribeAgentSessionRequest + 65, // 69: compass.v1.CompassService.IssueToken:input_type -> compass.v1.IssueTokenRequest + 67, // 70: compass.v1.CompassService.RevokeToken:input_type -> compass.v1.RevokeTokenRequest + 69, // 71: compass.v1.CompassService.PutAgentConfig:input_type -> compass.v1.PutAgentConfigRequest + 71, // 72: compass.v1.CompassService.GetAgentConfigInfo:input_type -> compass.v1.GetAgentConfigInfoRequest + 73, // 73: compass.v1.CompassService.DeleteAgentConfig:input_type -> compass.v1.DeleteAgentConfigRequest + 79, // 74: compass.v1.CompassService.PutModelRegistry:input_type -> compass.v1.PutModelRegistryRequest + 81, // 75: compass.v1.CompassService.GetModelRegistry:input_type -> compass.v1.GetModelRegistryRequest + 83, // 76: compass.v1.CompassService.DeleteModelRegistry:input_type -> compass.v1.DeleteModelRegistryRequest + 10, // 77: compass.v1.SecretsService.SetSecret:input_type -> compass.v1.SetSecretRequest + 12, // 78: compass.v1.SecretsService.ListSecrets:input_type -> compass.v1.ListSecretsRequest + 15, // 79: compass.v1.SecretsService.DeleteSecret:input_type -> compass.v1.DeleteSecretRequest + 17, // 80: compass.v1.SecretsService.SetServerSecret:input_type -> compass.v1.SetServerSecretRequest + 19, // 81: compass.v1.SecretsService.DeleteServerSecret:input_type -> compass.v1.DeleteServerSecretRequest + 21, // 82: compass.v1.SecretsService.ListServerSecrets:input_type -> compass.v1.ListServerSecretsRequest + 25, // 83: compass.v1.CompassService.GetServerInfo:output_type -> compass.v1.GetServerInfoResponse + 27, // 84: compass.v1.CompassService.WhoAmI:output_type -> compass.v1.WhoAmIResponse + 29, // 85: compass.v1.CompassService.SubscribeEvents:output_type -> compass.v1.SubscribeEventsResponse + 31, // 86: compass.v1.CompassService.ListBoardIssues:output_type -> compass.v1.ListBoardIssuesResponse + 52, // 87: compass.v1.CompassService.ProvisionAgentWorkspace:output_type -> compass.v1.ProvisionAgentWorkspaceResponse + 56, // 88: compass.v1.CompassService.StartAgentSession:output_type -> compass.v1.StartAgentSessionResponse + 58, // 89: compass.v1.CompassService.SpawnAgent:output_type -> compass.v1.SpawnAgentResponse + 60, // 90: compass.v1.CompassService.StopAgentSession:output_type -> compass.v1.StopAgentSessionResponse + 54, // 91: compass.v1.CompassService.RemoveAgentWorkspace:output_type -> compass.v1.RemoveAgentWorkspaceResponse + 62, // 92: compass.v1.CompassService.ReloadAgentSession:output_type -> compass.v1.ReloadAgentSessionResponse + 64, // 93: compass.v1.CompassService.GetAgentStatus:output_type -> compass.v1.GetAgentStatusResponse + 50, // 94: compass.v1.CompassService.SubscribeAgentSession:output_type -> compass.v1.AgentSessionFrame + 66, // 95: compass.v1.CompassService.IssueToken:output_type -> compass.v1.IssueTokenResponse + 68, // 96: compass.v1.CompassService.RevokeToken:output_type -> compass.v1.RevokeTokenResponse + 70, // 97: compass.v1.CompassService.PutAgentConfig:output_type -> compass.v1.PutAgentConfigResponse + 72, // 98: compass.v1.CompassService.GetAgentConfigInfo:output_type -> compass.v1.GetAgentConfigInfoResponse + 74, // 99: compass.v1.CompassService.DeleteAgentConfig:output_type -> compass.v1.DeleteAgentConfigResponse + 80, // 100: compass.v1.CompassService.PutModelRegistry:output_type -> compass.v1.PutModelRegistryResponse + 82, // 101: compass.v1.CompassService.GetModelRegistry:output_type -> compass.v1.GetModelRegistryResponse + 84, // 102: compass.v1.CompassService.DeleteModelRegistry:output_type -> compass.v1.DeleteModelRegistryResponse + 11, // 103: compass.v1.SecretsService.SetSecret:output_type -> compass.v1.SetSecretResponse + 13, // 104: compass.v1.SecretsService.ListSecrets:output_type -> compass.v1.ListSecretsResponse + 16, // 105: compass.v1.SecretsService.DeleteSecret:output_type -> compass.v1.DeleteSecretResponse + 18, // 106: compass.v1.SecretsService.SetServerSecret:output_type -> compass.v1.SetServerSecretResponse + 20, // 107: compass.v1.SecretsService.DeleteServerSecret:output_type -> compass.v1.DeleteServerSecretResponse + 22, // 108: compass.v1.SecretsService.ListServerSecrets:output_type -> compass.v1.ListServerSecretsResponse + 83, // [83:109] is the sub-list for method output_type + 57, // [57:83] is the sub-list for method input_type + 57, // [57:57] is the sub-list for extension type_name + 57, // [57:57] is the sub-list for extension extendee + 0, // [0:57] is the sub-list for field type_name } func init() { file_compass_v1_compass_proto_init() } @@ -6307,7 +6457,7 @@ func file_compass_v1_compass_proto_init() { if File_compass_v1_compass_proto != nil { return } - file_compass_v1_compass_proto_msgTypes[16].OneofWrappers = []any{ + file_compass_v1_compass_proto_msgTypes[19].OneofWrappers = []any{ (*SubscribeEventsResponse_ServerStatus)(nil), (*SubscribeEventsResponse_ResyncRequired)(nil), (*SubscribeEventsResponse_AgentSessionStatus)(nil), @@ -6316,7 +6466,7 @@ func file_compass_v1_compass_proto_init() { (*SubscribeEventsResponse_AgentPlan)(nil), (*SubscribeEventsResponse_Issue)(nil), } - file_compass_v1_compass_proto_msgTypes[26].OneofWrappers = []any{ + file_compass_v1_compass_proto_msgTypes[29].OneofWrappers = []any{ (*SessionEvent_AssistantText)(nil), (*SessionEvent_Thinking)(nil), (*SessionEvent_ToolCall)(nil), @@ -6326,16 +6476,16 @@ func file_compass_v1_compass_proto_init() { (*SessionEvent_SessionInjection)(nil), (*SessionEvent_SessionError)(nil), } - file_compass_v1_compass_proto_msgTypes[31].OneofWrappers = []any{} - file_compass_v1_compass_proto_msgTypes[33].OneofWrappers = []any{} - file_compass_v1_compass_proto_msgTypes[35].OneofWrappers = []any{} + file_compass_v1_compass_proto_msgTypes[34].OneofWrappers = []any{} + file_compass_v1_compass_proto_msgTypes[36].OneofWrappers = []any{} + file_compass_v1_compass_proto_msgTypes[38].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_compass_v1_compass_proto_rawDesc), len(file_compass_v1_compass_proto_rawDesc)), NumEnums: 10, - NumMessages: 84, + NumMessages: 87, NumExtensions: 0, NumServices: 2, }, diff --git a/go/gen/compass/v1/compassv1connect/compass.connect.go b/go/gen/compass/v1/compassv1connect/compass.connect.go index a18d44761..24c14bf12 100644 --- a/go/gen/compass/v1/compassv1connect/compass.connect.go +++ b/go/gen/compass/v1/compassv1connect/compass.connect.go @@ -117,6 +117,9 @@ const ( // SecretsServiceDeleteServerSecretProcedure is the fully-qualified name of the SecretsService's // DeleteServerSecret RPC. SecretsServiceDeleteServerSecretProcedure = "/compass.v1.SecretsService/DeleteServerSecret" + // SecretsServiceListServerSecretsProcedure is the fully-qualified name of the SecretsService's + // ListServerSecrets RPC. + SecretsServiceListServerSecretsProcedure = "/compass.v1.SecretsService/ListServerSecrets" ) // CompassServiceClient is a client for the compass.v1.CompassService service. @@ -947,6 +950,14 @@ type SecretsServiceClient interface { // master-key name is rejected (rotation is separate machinery, never a raw // overwrite or delete). DeleteServerSecret(context.Context, *connect.Request[v1.DeleteServerSecretRequest]) (*connect.Response[v1.DeleteServerSecretResponse], error) + // List declared SERVER secrets by name with set/unset — names only, NEVER + // values. Admin-only, like its server-secret siblings: the rows are + // deployment-owned, so there is no per-account authorization to fall back on. + // Unlike ListSecrets, `is_set` is a PROVIDER PROBE, not a registry read: a + // server secret's row is self-declared at every boot while its value lives in + // the SecretSpec provider and is populated separately, so a declared name is + // routinely unset and the two states must be distinguishable. + ListServerSecrets(context.Context, *connect.Request[v1.ListServerSecretsRequest]) (*connect.Response[v1.ListServerSecretsResponse], error) } // NewSecretsServiceClient constructs a client for the compass.v1.SecretsService service. By @@ -990,6 +1001,12 @@ func NewSecretsServiceClient(httpClient connect.HTTPClient, baseURL string, opts connect.WithSchema(secretsServiceMethods.ByName("DeleteServerSecret")), connect.WithClientOptions(opts...), ), + listServerSecrets: connect.NewClient[v1.ListServerSecretsRequest, v1.ListServerSecretsResponse]( + httpClient, + baseURL+SecretsServiceListServerSecretsProcedure, + connect.WithSchema(secretsServiceMethods.ByName("ListServerSecrets")), + connect.WithClientOptions(opts...), + ), } } @@ -1000,6 +1017,7 @@ type secretsServiceClient struct { deleteSecret *connect.Client[v1.DeleteSecretRequest, v1.DeleteSecretResponse] setServerSecret *connect.Client[v1.SetServerSecretRequest, v1.SetServerSecretResponse] deleteServerSecret *connect.Client[v1.DeleteServerSecretRequest, v1.DeleteServerSecretResponse] + listServerSecrets *connect.Client[v1.ListServerSecretsRequest, v1.ListServerSecretsResponse] } // SetSecret calls compass.v1.SecretsService.SetSecret. @@ -1027,6 +1045,11 @@ func (c *secretsServiceClient) DeleteServerSecret(ctx context.Context, req *conn return c.deleteServerSecret.CallUnary(ctx, req) } +// ListServerSecrets calls compass.v1.SecretsService.ListServerSecrets. +func (c *secretsServiceClient) ListServerSecrets(ctx context.Context, req *connect.Request[v1.ListServerSecretsRequest]) (*connect.Response[v1.ListServerSecretsResponse], error) { + return c.listServerSecrets.CallUnary(ctx, req) +} + // SecretsServiceHandler is an implementation of the compass.v1.SecretsService service. type SecretsServiceHandler interface { // Declare a secret's registry row (name/delivery/kind/routing) and write its @@ -1047,6 +1070,14 @@ type SecretsServiceHandler interface { // master-key name is rejected (rotation is separate machinery, never a raw // overwrite or delete). DeleteServerSecret(context.Context, *connect.Request[v1.DeleteServerSecretRequest]) (*connect.Response[v1.DeleteServerSecretResponse], error) + // List declared SERVER secrets by name with set/unset — names only, NEVER + // values. Admin-only, like its server-secret siblings: the rows are + // deployment-owned, so there is no per-account authorization to fall back on. + // Unlike ListSecrets, `is_set` is a PROVIDER PROBE, not a registry read: a + // server secret's row is self-declared at every boot while its value lives in + // the SecretSpec provider and is populated separately, so a declared name is + // routinely unset and the two states must be distinguishable. + ListServerSecrets(context.Context, *connect.Request[v1.ListServerSecretsRequest]) (*connect.Response[v1.ListServerSecretsResponse], error) } // NewSecretsServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -1086,6 +1117,12 @@ func NewSecretsServiceHandler(svc SecretsServiceHandler, opts ...connect.Handler connect.WithSchema(secretsServiceMethods.ByName("DeleteServerSecret")), connect.WithHandlerOptions(opts...), ) + secretsServiceListServerSecretsHandler := connect.NewUnaryHandler( + SecretsServiceListServerSecretsProcedure, + svc.ListServerSecrets, + connect.WithSchema(secretsServiceMethods.ByName("ListServerSecrets")), + connect.WithHandlerOptions(opts...), + ) return "/compass.v1.SecretsService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case SecretsServiceSetSecretProcedure: @@ -1098,6 +1135,8 @@ func NewSecretsServiceHandler(svc SecretsServiceHandler, opts ...connect.Handler secretsServiceSetServerSecretHandler.ServeHTTP(w, r) case SecretsServiceDeleteServerSecretProcedure: secretsServiceDeleteServerSecretHandler.ServeHTTP(w, r) + case SecretsServiceListServerSecretsProcedure: + secretsServiceListServerSecretsHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -1126,3 +1165,7 @@ func (UnimplementedSecretsServiceHandler) SetServerSecret(context.Context, *conn func (UnimplementedSecretsServiceHandler) DeleteServerSecret(context.Context, *connect.Request[v1.DeleteServerSecretRequest]) (*connect.Response[v1.DeleteServerSecretResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("compass.v1.SecretsService.DeleteServerSecret is not implemented")) } + +func (UnimplementedSecretsServiceHandler) ListServerSecrets(context.Context, *connect.Request[v1.ListServerSecretsRequest]) (*connect.Response[v1.ListServerSecretsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("compass.v1.SecretsService.ListServerSecrets is not implemented")) +} diff --git a/go/internal/auth/admin_gate.go b/go/internal/auth/admin_gate.go index 393437126..36d6a90d1 100644 --- a/go/internal/auth/admin_gate.go +++ b/go/internal/auth/admin_gate.go @@ -127,14 +127,17 @@ func classifyProcedure(procedure string) (privilege, bool) { compassv1connect.SecretsServiceDeleteSecretProcedure: return authenticatedOpen{}, true - // The SERVER-secret write RPCs are ADMIN-only, unlike their user-facing - // siblings above. They write the separate server_secrets registry, whose + // The SERVER-secret RPCs are ADMIN-only, unlike their user-facing siblings + // above. They read and write the separate server_secrets registry, whose // rows are deployment-owned (forge App PEMs, webhook secrets, the // gateway master-key family) rather than account-owned — there is no // per-account authorization to fall back on, so the door gate is the - // authorization. + // authorization. The LIST is gated as tightly as the writes: the declared + // server-secret names are the deployment's own inventory, not something an + // agent token has any business enumerating. case compassv1connect.SecretsServiceSetServerSecretProcedure, - compassv1connect.SecretsServiceDeleteServerSecretProcedure: + compassv1connect.SecretsServiceDeleteServerSecretProcedure, + compassv1connect.SecretsServiceListServerSecretsProcedure: return adminOnly{}, true default: diff --git a/go/internal/runnerhub/secrets_test.go b/go/internal/runnerhub/secrets_test.go index cffd03216..e0054f3b1 100644 --- a/go/internal/runnerhub/secrets_test.go +++ b/go/internal/runnerhub/secrets_test.go @@ -46,6 +46,13 @@ func (f *fakeResolverSecrets) Resolve(_ context.Context, _ string) ([]secrets.Re func (f *fakeResolverSecrets) Set(_ context.Context, _, _, _ string) error { return nil } func (f *fakeResolverSecrets) Delete(_ context.Context, _ string) error { return nil } +// Statuses satisfies the Resolver interface. These tests exercise the container +// secrets-delivery seam, which never lists set/unset state, so it returns +// nothing rather than modelling a provider probe. +func (f *fakeResolverSecrets) Statuses(_ context.Context, _ string) ([]secrets.SecretStatus, error) { + return nil, nil +} + // runnerResolverForFetch is the token resolver the FetchSecrets door uses: it // accepts a single Runner token and rejects everything else, modelling the real // kind-gate contract the seam tests already rely on. diff --git a/go/internal/secrets/resolver.go b/go/internal/secrets/resolver.go index 78d75b66f..1b8fa6fd7 100644 --- a/go/internal/secrets/resolver.go +++ b/go/internal/secrets/resolver.go @@ -29,6 +29,13 @@ const defaultProfile = "default" // that floor guard and the resolver agree on which binary that is. const defaultCLI = "secretspec" +// reportStatusResolved is the SecretSpec report status meaning the provider +// holds a value for a declared secret. The report's other statuses +// ("missing_required", "missing_optional") both mean no value is present, so +// the status path tests for this one rather than enumerating the misses — a new +// miss status upstream then reads as unset, which is the safe direction. +const reportStatusResolved = "resolved" + // declarations is the read surface the Resolver needs from the store: the whole // declared set. store.Store satisfies it. An interface (not the concrete // *store.Store) so the pure resolve logic is unit-testable with a fake, without @@ -56,6 +63,17 @@ type Resolver interface { Set(ctx context.Context, name, value, reason string) error // Delete removes a value from the provider for a name. Delete(ctx context.Context, name string) error + // Statuses reports, per declared secret, whether the provider currently + // holds a value for it — names + set/unset, NEVER a value. It is the + // value-free counterpart to Resolve, for the caller that needs to + // distinguish "declared" from "populated" without reading any value. + // + // Unlike Resolve it does NOT fail when a declared secret is unpopulated: an + // absent required value is reported as IsSet=false, not an error. That is + // the whole point — a server secret's row is self-declared at boot while its + // value is populated separately, so declared-but-unset is a normal state + // that must be observable rather than a resolve fault. + Statuses(ctx context.Context, reason string) ([]SecretStatus, error) } // SpecResolver is the SecretSpec-backed Resolver. It reads the names registry @@ -210,6 +228,83 @@ func (r *SpecResolver) Resolve(ctx context.Context, reason string) ([]ResolvedSe return out, nil } +// Statuses reports each declared secret's value-free set/unset state, reading +// the SecretSpec RESOLUTION REPORT rather than resolving values. reason is +// recorded in the SecretSpec audit log exactly as on the resolve path. An empty +// registry reports an empty set with no provider call. +// +// Report, not Load, is the primitive this needs, for two independent reasons: +// +// - buildManifest declares every name required = true, so Load fails +// WHOLESALE with a MissingRequiredError (and a nil set) the moment ONE +// declared secret is unpopulated. That is the common state for a server +// secret — the row is self-declared at boot, the value populated +// separately — so a Load-based status path would error out in precisely the +// case it exists to describe. Report instead reports a missing required +// secret as a per-secret status, so it describes a profile even when its +// secrets are not all available. +// - Report never returns a value. Load would pull every deployment secret's +// VALUE into this process just to answer a names-and-flags question, the +// same read the user-facing list path deliberately refuses. +// +// Report is a SecretSpec 0.20+ surface (both the SDK method and the underlying +// libsecretspec report mode); hostcheck.SecretSpecFloor is the floor that keeps +// it available, so it is not an optional capability to feature-detect here. +// +// A genuine provider fault (a *secretspec.Error — provider unreachable, bad +// manifest, reason policy refused) is returned as an error, never flattened +// into an all-unset report: a broken provider must not read as an +// unprovisioned one. +func (r *SpecResolver) Statuses(ctx context.Context, reason string) ([]SecretStatus, error) { + decls, err := r.store.DeclaredSecrets(ctx) + if err != nil { + return nil, fmt.Errorf("secrets: read registry: %w", err) + } + if len(decls) == 0 { + return nil, nil + } + profile := r.resolvedProfile() + manifestPath, err := r.writeManifest(profile, decls) + if err != nil { + return nil, err + } + // Same transient-input discipline as Resolve: a per-call temp manifest, so + // concurrent callers never share one path. The remove error is discarded + // deliberately — the file is already abandoned and the registry, not this + // file, is the durable source, so a failed unlink of a temp file is not + // actionable to the caller. + defer func() { _ = os.Remove(manifestPath) }() + + b := secretspec.New().WithPath(manifestPath).WithReason(reason) + if r.provider != "" { + b = b.WithProvider(r.provider) + } + b = b.WithProfile(profile) + report, err := b.Report() + if err != nil { + // *secretspec.Error carries a value-free message (kind + message), so + // wrapping cannot leak a value. + return nil, fmt.Errorf("secrets: report: %w", err) + } + + // Index the report by name: it is a slice, and the declared set is the + // authority on WHICH names to answer for, so this reports one status per + // declaration rather than whatever order the provider enumerated. + set := make(map[string]bool, len(report.Secrets)) + for _, s := range report.Secrets { + set[s.Name] = s.Status == reportStatusResolved + } + out := make([]SecretStatus, 0, len(decls)) + for _, d := range decls { + // A declared name absent from the report is unset, not an error: the + // report enumerates the manifest we just wrote from these same + // declarations, so an absence means the provider holds nothing for it — + // which is exactly what IsSet=false says. + out = append(out, SecretStatus{Name: d.Name, IsSet: set[d.Name]}) + } + return out, nil +} + // Set writes value into the provider for name via the pinned CLI, feeding the // value on stdin (never argv, so it is not visible in the host process list). // The SDK is read-shaped, so the write path shells the CLI. name must be a diff --git a/go/internal/secrets/resolver_test.go b/go/internal/secrets/resolver_test.go index 84e19c02f..051f2497f 100644 --- a/go/internal/secrets/resolver_test.go +++ b/go/internal/secrets/resolver_test.go @@ -9,6 +9,7 @@ package secrets import ( "context" + "errors" "io" "os" "os/exec" @@ -186,6 +187,42 @@ func TestResolveEmptyRegistry(t *testing.T) { // without the cdylib staged. } +// TestStatusesEmptyRegistry mirrors TestResolveEmptyRegistry for the status +// path: an empty registry short-circuits to an empty report with no provider +// call, so listing a fleet that has declared nothing never touches the FFI +// library or writes a manifest. +func TestStatusesEmptyRegistry(t *testing.T) { + fake := &fakeDeclarations{decls: nil} + r := NewSpecResolver(fake, "/tmp/state-does-not-need-to-exist") + + out, err := r.Statuses(context.Background(), "test") + if err != nil { + t.Fatalf("Statuses on empty registry: %v", err) + } + if out != nil { + t.Errorf("Statuses on empty registry = %v, want nil", out) + } + if !fake.called { + t.Error("Statuses did not read the declared set") + } +} + +// TestStatusesRegistryReadFailurePropagates asserts a registry fault surfaces as +// an error rather than an empty status set. An empty list is indistinguishable +// from "nothing declared", which would read as a healthy fleet with no secrets. +func TestStatusesRegistryReadFailurePropagates(t *testing.T) { + fake := &fakeDeclarations{err: errors.New("registry boom")} + r := NewSpecResolver(fake, "/tmp/state-does-not-need-to-exist") + + out, err := r.Statuses(context.Background(), "test") + if err == nil { + t.Fatal("Statuses swallowed a registry read failure; an empty set reads as a healthy empty fleet") + } + if out != nil { + t.Errorf("Statuses = %v on error, want nil", out) + } +} + // TestWriteManifestConcurrentDistinctPaths guards the F4 fix: each writeManifest // call must produce its OWN file, so concurrent resolves never share one path // and race the write-to-Load interval. The prior implementation wrote a single diff --git a/go/internal/secrets/secrets.go b/go/internal/secrets/secrets.go index 8d7d806ac..50ce2c8ff 100644 --- a/go/internal/secrets/secrets.go +++ b/go/internal/secrets/secrets.go @@ -155,6 +155,20 @@ func (s ResolvedSecret) String() string { // GoString redacts Value under %#v as well, so a struct dump can't leak it. func (s ResolvedSecret) GoString() string { return s.String() } +// SecretStatus is one declared secret's value-free status: its name and whether +// the provider currently holds a value for it. It carries NO value field by +// construction, so a status can never leak one however it is logged or +// formatted — the reason the status path exists alongside ResolvedSecret rather +// than being derived from it. +type SecretStatus struct { + Name string + // IsSet reports whether the provider holds a value for Name. False means + // the name is declared in the registry but unpopulated in the provider — + // a normal state for a server secret, whose row is self-declared at boot + // while the operator populates the value separately. + IsSet bool +} + // deliveryFromStore maps the persisted store delivery enum to this package's. func deliveryFromStore(d store.SecretDelivery) DeliveryKind { if d == store.SecretDeliveryEnv { diff --git a/go/server/secrets_service.go b/go/server/secrets_service.go index 65fd7fa0a..932343a76 100644 --- a/go/server/secrets_service.go +++ b/go/server/secrets_service.go @@ -352,6 +352,64 @@ func (s *secretsService) DeleteServerSecret( return connect.NewResponse(&compassv1.DeleteServerSecretResponse{}), nil } +// ListServerSecrets returns every declared SERVER secret's name with its +// set/unset state — names only, NEVER a value. Admin-only at the door +// (classifyProcedure), the same gate as its Set/Delete siblings and for the +// same reason: the rows are deployment-owned, so there is no per-account +// authorization to fall back on. +// +// is_set is a PROVIDER PROBE here, unlike ListSecrets which hardcodes true. +// That asymmetry is structural, not an inconsistency: on the user path declare +// and set are ONE operation (declare-then-set in SetSecret), so a declared row +// implies a written value. Server-secret names are instead SELF-DECLARED at +// every boot (declareServerSecretNames) while the operator populates the values +// separately, so declared-but-unset is a routine state — and telling the two +// apart is the entire purpose of this verb. The probe reads the value-free +// SecretSpec report (serverResolver.Statuses), so no value is ever resolved to +// answer it. +// +// A provider fault is CodeInternal, deliberately NOT an all-unset list: the +// caller must be able to tell a broken provider from an unprovisioned one, +// since the remedy for each is the opposite of the other. +func (s *secretsService) ListServerSecrets( + ctx context.Context, + _ *connect.Request[compassv1.ListServerSecretsRequest], +) (*connect.Response[compassv1.ListServerSecretsResponse], error) { + if _, err := s.requireCaller(ctx); err != nil { + return nil, err + } + if s.serverResolver == nil { + return nil, connect.NewError(connect.CodeUnavailable, errNoServerResolver) + } + decls, err := s.store.DeclaredServerSecrets(ctx) + if err != nil { + return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("listing declared server secrets: %w", err)) + } + if len(decls) == 0 { + return connect.NewResponse(&compassv1.ListServerSecretsResponse{}), nil + } + // The audit reason names this RPC specifically, matching the Set path's + // form, so the provider's log distinguishes a status probe from a write. + statuses, err := s.serverResolver.Statuses(ctx, "compass: server secret status probe via ListServerSecrets RPC") + if err != nil { + return nil, connect.NewError(connect.CodeInternal, fmt.Errorf("probing server secret values: %w", err)) + } + isSet := make(map[string]bool, len(statuses)) + for _, st := range statuses { + isSet[st.Name] = st.IsSet + } + // The REGISTRY drives the output, not the probe: the declared set is what + // this verb enumerates, and a declared name the probe did not report is + // unset rather than omitted. + out := make([]*compassv1.ServerSecretStatus, 0, len(decls)) + for _, d := range decls { + // Name goes out EXACTLY as stored, carrying its reserved prefix. The + // prefix strip is the CLI's, so the wire form stays unambiguous. + out = append(out, &compassv1.ServerSecretStatus{Name: d.Name, IsSet: isSet[d.Name]}) + } + return connect.NewResponse(&compassv1.ListServerSecretsResponse{ServerSecrets: out}), nil +} + // requireCaller returns the authenticated caller id, or CodeUnauthenticated when // none is in context (a door-wiring bug: an interceptor must attach one on every // door — fail closed, mirroring SubscribeAgentSession). diff --git a/go/server/secrets_service_pgtest_test.go b/go/server/secrets_service_pgtest_test.go index aa8dac424..223045c8c 100644 --- a/go/server/secrets_service_pgtest_test.go +++ b/go/server/secrets_service_pgtest_test.go @@ -36,13 +36,26 @@ import ( // recordingResolver is a fake secrets.Resolver for the SecretsService tests. Set // and Delete record their calls and succeed; Resolve fails loudly, so a test that // wires this into ListSecrets proves the list path never resolves values to -// compute is_set (record §906-908 / brief item 7). +// compute is_set (record §906-908 / brief item 7). Statuses returns a scripted +// value-free report — the server-secret list path's probe — and can be scripted +// to fail so a test proves a provider fault is not flattened into all-unset. type recordingResolver struct { setErr error setNames []string setReasons []string deleteNames []string resolveHit bool + statuses []secrets.SecretStatus + statusesErr error + statusHit bool +} + +func (r *recordingResolver) Statuses(_ context.Context, _ string) ([]secrets.SecretStatus, error) { + r.statusHit = true + if r.statusesErr != nil { + return nil, r.statusesErr + } + return r.statuses, nil } func (r *recordingResolver) Resolve(_ context.Context, _ string) ([]secrets.ResolvedSecret, error) { @@ -525,3 +538,108 @@ func TestSetServerSecretDoesNotBumpSecretsVersion(t *testing.T) { t.Fatalf("signaler fired %d times, want 0 for a server secret", n) } } + +func listServerReq(bearer string) *connect.Request[compassv1.ListServerSecretsRequest] { + req := connect.NewRequest(&compassv1.ListServerSecretsRequest{}) + req.Header().Set("Authorization", "Bearer "+bearer) + return req +} + +// TestListServerSecretsReportsDeclaredButUnset is the core contract of the verb +// and the regression guard on HOW is_set is computed. A server secret's names +// are self-declared at boot while the operator populates values separately, so +// declared-but-unset is routine — and distinguishing it from set is the entire +// point. +// +// This is written to FAIL under the naive "resolve the declared set" route: the +// generated manifest marks every declared name required=true, so a value- +// resolving probe fails WHOLESALE (MissingRequiredError, nil set) the moment one +// declared name is unpopulated, erroring the whole call instead of reporting the +// mixed state below. A value-free report has no such failure mode. +func TestListServerSecretsReportsDeclaredButUnset(t *testing.T) { + f := newSecretsFixture(t) + ctx := context.Background() + + // Declare two names through the real write path, then script the provider + // probe so exactly one of them holds a value. + for _, name := range []string{"SERVER_APP_PEM", "SERVER_WEBHOOK_SECRET"} { + if _, err := f.client.SetServerSecret(ctx, setServerReq(f.adminToken, name, "v")); err != nil { + t.Fatalf("SetServerSecret(%s): %v", name, err) + } + } + f.serverResolver.statuses = []secrets.SecretStatus{ + {Name: "SERVER_APP_PEM", IsSet: true}, + {Name: "SERVER_WEBHOOK_SECRET", IsSet: false}, + } + + resp, err := f.client.ListServerSecrets(ctx, listServerReq(f.adminToken)) + if err != nil { + t.Fatalf("ListServerSecrets: %v", err) + } + got := map[string]bool{} + for _, s := range resp.Msg.GetServerSecrets() { + got[s.GetName()] = s.GetIsSet() + } + if len(got) != 2 { + t.Fatalf("got %d statuses, want 2: %v", len(got), got) + } + // Names go out in their STORED, prefixed form — the CLI does the strip. + if !got["SERVER_APP_PEM"] { + t.Error("SERVER_APP_PEM reported unset; the provider holds its value") + } + if got["SERVER_WEBHOOK_SECRET"] { + t.Error("SERVER_WEBHOOK_SECRET reported set; it is declared but unpopulated") + } + if !f.serverResolver.statusHit { + t.Error("is_set was not computed from a provider probe; a declared server secret's value is populated separately, so the registry row alone cannot answer it") + } + if f.serverResolver.resolveHit { + t.Error("ListServerSecrets resolved VALUES to compute is_set — the probe must be value-free") + } +} + +// TestListServerSecretsProviderFailureIsNotAllUnset pins the distinction an +// operator's remedy depends on: a broken provider must not look like an +// unprovisioned one. Reporting everything unset on a probe fault would send the +// operator to re-populate secrets that are in fact already there. +func TestListServerSecretsProviderFailureIsNotAllUnset(t *testing.T) { + f := newSecretsFixture(t) + ctx := context.Background() + + if _, err := f.client.SetServerSecret(ctx, setServerReq(f.adminToken, "SERVER_APP_PEM", "v")); err != nil { + t.Fatalf("SetServerSecret: %v", err) + } + f.serverResolver.statusesErr = errors.New("provider unreachable") + + resp, err := f.client.ListServerSecrets(ctx, listServerReq(f.adminToken)) + if err == nil { + t.Fatalf("want an error on a provider fault, got a list: %v", resp.Msg.GetServerSecrets()) + } + if got := connect.CodeOf(err); got != connect.CodeInternal { + t.Fatalf("want CodeInternal, got %v (err=%v)", got, err) + } +} + +// TestListServerSecretsAdminOnly gates the LIST as tightly as the writes: the +// declared server-secret names are the deployment's own inventory, not +// something a plain user or an agent token may enumerate. +func TestListServerSecretsAdminOnly(t *testing.T) { + f := newSecretsFixture(t) + ctx := context.Background() + + for _, tc := range []struct { + name string + token string + }{ + {"user", f.userToken}, + {"agent", f.agentToken}, + } { + _, err := f.client.ListServerSecrets(ctx, listServerReq(tc.token)) + if got := connect.CodeOf(err); got != connect.CodePermissionDenied { + t.Fatalf("%s token: want CodePermissionDenied, got %v (err=%v)", tc.name, got, err) + } + } + if _, err := f.client.ListServerSecrets(ctx, listServerReq(f.adminToken)); err != nil { + t.Fatalf("admin token: %v", err) + } +} diff --git a/go/server/serve_forge_test.go b/go/server/serve_forge_test.go index d33304df6..419f4cd71 100644 --- a/go/server/serve_forge_test.go +++ b/go/server/serve_forge_test.go @@ -45,6 +45,12 @@ func (r *fakeResolver) Resolve(_ context.Context, _ string) ([]secrets.ResolvedS func (r *fakeResolver) Set(context.Context, string, string, string) error { return nil } func (r *fakeResolver) Delete(context.Context, string) error { return nil } +// Statuses is unused on the forge paths, which read values; it exists to satisfy +// secrets.Resolver. +func (r *fakeResolver) Statuses(context.Context, string) ([]secrets.SecretStatus, error) { + return nil, nil +} + func TestForgeConfigEnableAndDefaults(t *testing.T) { t.Run("board ingestion disabled by default", func(t *testing.T) { if (ForgeConfig{}).boardIngestionEnabled() { diff --git a/packages/compass-agent/src/gen/compass/v1/compass_pb.ts b/packages/compass-agent/src/gen/compass/v1/compass_pb.ts index c88c7189c..2abbef53e 100644 --- a/packages/compass-agent/src/gen/compass/v1/compass_pb.ts +++ b/packages/compass-agent/src/gen/compass/v1/compass_pb.ts @@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file compass/v1/compass.proto. */ export const file_compass_v1_compass: GenFile = /*@__PURE__*/ - fileDesc("Chhjb21wYXNzL3YxL2NvbXBhc3MucHJvdG8SCmNvbXBhc3MudjEiqAEKEFNldFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRISCgV2YWx1ZRgCIAEoCUIDgAEBEiwKCGRlbGl2ZXJ5GAMgASgOMhouY29tcGFzcy52MS5TZWNyZXREZWxpdmVyeRIkCgRraW5kGAQgASgOMhYuY29tcGFzcy52MS5TZWNyZXRLaW5kEhAKCHByb3ZpZGVyGAUgASgJEgwKBGhvc3QYBiABKAkiEwoRU2V0U2VjcmV0UmVzcG9uc2UiFAoSTGlzdFNlY3JldHNSZXF1ZXN0IkAKE0xpc3RTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLmNvbXBhc3MudjEuU2VjcmV0U3RhdHVzIqABCgxTZWNyZXRTdGF0dXMSDAoEbmFtZRgBIAEoCRIOCgZpc19zZXQYAiABKAgSLAoIZGVsaXZlcnkYAyABKA4yGi5jb21wYXNzLnYxLlNlY3JldERlbGl2ZXJ5EiQKBGtpbmQYBCABKA4yFi5jb21wYXNzLnYxLlNlY3JldEtpbmQSEAoIcHJvdmlkZXIYBSABKAkSDAoEaG9zdBgGIAEoCSIjChNEZWxldGVTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkiFgoURGVsZXRlU2VjcmV0UmVzcG9uc2UiOgoWU2V0U2VydmVyU2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJQgOAAQEiGQoXU2V0U2VydmVyU2VjcmV0UmVzcG9uc2UiKQoZRGVsZXRlU2VydmVyU2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJIhwKGkRlbGV0ZVNlcnZlclNlY3JldFJlc3BvbnNlIhYKFEdldFNlcnZlckluZm9SZXF1ZXN0Ij0KFUdldFNlcnZlckluZm9SZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJEhMKC2FwaV92ZXJzaW9uGAIgASgJIg8KDVdob0FtSVJlcXVlc3QiJAoOV2hvQW1JUmVzcG9uc2USEgoKYWNjb3VudF9pZBgBIAEoCSJDChZTdWJzY3JpYmVFdmVudHNSZXF1ZXN0EhEKCXNpbmNlX3NlcRgBIAEoBBIWCg5pbnN0YW5jZV9lcG9jaBgCIAEoBCLiAwoXU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2USCwoDc2VxGAEgASgEEhIKCmF0X3VuaXhfbXMYAiABKAMSFgoOaW5zdGFuY2VfZXBvY2gYAyABKAQSFAoMc25hcHNob3Rfc2VxGAQgASgEEjEKDXNlcnZlcl9zdGF0dXMYCiABKAsyGC5jb21wYXNzLnYxLlNlcnZlclN0YXR1c0gAEjUKD3Jlc3luY19yZXF1aXJlZBgLIAEoCzIaLmNvbXBhc3MudjEuUmVzeW5jUmVxdWlyZWRIABI+ChRhZ2VudF9zZXNzaW9uX3N0YXR1cxgMIAEoCzIeLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdHVzSAASPAoTYWdlbnRfbWVzc2FnZV9jaHVuaxgNIAEoCzIdLmNvbXBhc3MudjEuQWdlbnRNZXNzYWdlQ2h1bmtIABI0Cg9hZ2VudF90b29sX2NhbGwYDiABKAsyGS5jb21wYXNzLnYxLkFnZW50VG9vbENhbGxIABIrCgphZ2VudF9wbGFuGA8gASgLMhUuY29tcGFzcy52MS5BZ2VudFBsYW5IABIiCgVpc3N1ZRgQIAEoCzIRLmNvbXBhc3MudjEuSXNzdWVIAEIJCgdwYXlsb2FkIi4KFkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QSFAoMc25hcHNob3Rfc2VxGAEgASgEIjwKF0xpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEiEKBmlzc3VlcxgBIAMoCzIRLmNvbXBhc3MudjEuSXNzdWUiNgoMU2VydmVyU3RhdHVzEiYKBXN0YXRlGAEgASgOMhcuY29tcGFzcy52MS5TZXJ2ZXJTdGF0ZSIQCg5SZXN5bmNSZXF1aXJlZCJwChJBZ2VudFNlc3Npb25TdGF0dXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIsCgVzdGF0ZRgCIAEoDjIdLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdGUSGAoQYWdlbnRfYWNjb3VudF9pZBgDIAEoCSJJChFBZ2VudE1lc3NhZ2VDaHVuaxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHRleHQYAiABKAkSEgoKaXNfdGhvdWdodBgDIAEoCCJ5Cg1BZ2VudFRvb2xDYWxsEhIKCnNlc3Npb25faWQYASABKAkSFAoMdG9vbF9jYWxsX2lkGAIgASgJEg0KBXRpdGxlGAMgASgJEi8KBnN0YXR1cxgEIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cyJMCglBZ2VudFBsYW4SEgoKc2Vzc2lvbl9pZBgBIAEoCRIrCgdlbnRyaWVzGAIgAygLMhouY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeSJTCg5BZ2VudFBsYW5FbnRyeRIPCgdjb250ZW50GAEgASgJEjAKBnN0YXR1cxgCIAEoDjIgLmNvbXBhc3MudjEuQWdlbnRQbGFuRW50cnlTdGF0dXMi3wMKDFNlc3Npb25FdmVudBIQCghldmVudF9pZBgBIAEoCRISCgphdF91bml4X21zGAIgASgDEjoKDmFzc2lzdGFudF90ZXh0GAMgASgLMiAuY29tcGFzcy52MS5TZXNzaW9uQXNzaXN0YW50VGV4dEgAEi8KCHRoaW5raW5nGAQgASgLMhsuY29tcGFzcy52MS5TZXNzaW9uVGhpbmtpbmdIABIwCgl0b29sX2NhbGwYBSABKAsyGy5jb21wYXNzLnYxLlNlc3Npb25Ub29sQ2FsbEgAEj0KEHRvb2xfY2FsbF91cGRhdGUYBiABKAsyIS5jb21wYXNzLnYxLlNlc3Npb25Ub29sQ2FsbFVwZGF0ZUgAEicKBHBsYW4YByABKAsyFy5jb21wYXNzLnYxLlNlc3Npb25QbGFuSAASKwoGbm90aWNlGAggASgLMhkuY29tcGFzcy52MS5TZXNzaW9uTm90aWNlSAASOQoRc2Vzc2lvbl9pbmplY3Rpb24YCSABKAsyHC5jb21wYXNzLnYxLlNlc3Npb25JbmplY3Rpb25IABIxCg1zZXNzaW9uX2Vycm9yGAogASgLMhguY29tcGFzcy52MS5TZXNzaW9uRXJyb3JIAEIHCgVldmVudCI4ChRTZXNzaW9uQXNzaXN0YW50VGV4dBIMCgR0ZXh0GAEgASgJEhIKCm1lc3NhZ2VfaWQYAiABKAkiMwoPU2Vzc2lvblRoaW5raW5nEgwKBHRleHQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCSJnCg9TZXNzaW9uVG9vbENhbGwSFAoMdG9vbF9jYWxsX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEi8KBnN0YXR1cxgDIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cyKaAQoVU2Vzc2lvblRvb2xDYWxsVXBkYXRlEhQKDHRvb2xfY2FsbF9pZBgBIAEoCRIvCgZzdGF0dXMYAiABKA4yHy5jb21wYXNzLnYxLkFnZW50VG9vbENhbGxTdGF0dXMSDgoGb3V0cHV0GAMgASgJEioKBWRpZmZzGAQgAygLMhsuY29tcGFzcy52MS5TZXNzaW9uRmlsZURpZmYiVQoPU2Vzc2lvbkZpbGVEaWZmEgwKBHBhdGgYASABKAkSFQoIb2xkX3RleHQYAiABKAlIAIgBARIQCghuZXdfdGV4dBgDIAEoCUILCglfb2xkX3RleHQiOgoLU2Vzc2lvblBsYW4SKwoHZW50cmllcxgBIAMoCzIaLmNvbXBhc3MudjEuQWdlbnRQbGFuRW50cnkiOQoNU2Vzc2lvbk5vdGljZRIMCgR0ZXh0GAEgASgJEhEKBGxpbmsYAiABKAlIAIgBAUIHCgVfbGluayKDAQoQU2Vzc2lvbkluamVjdGlvbhIxCgdvcF9raW5kGAEgASgOMiAuY29tcGFzcy52MS5TZXNzaW9uSW5qZWN0aW9uS2luZBISCgptZXNzYWdlX2lkGAIgASgJEhMKC2Zyb21faGFuZGxlGAMgASgJEhMKC3RyYWNlcGFyZW50GAQgASgJImsKDFNlc3Npb25FcnJvchIqCgRraW5kGAEgASgOMhwuY29tcGFzcy52MS5TZXNzaW9uRXJyb3JLaW5kEg8KB21lc3NhZ2UYAiABKAkSEwoGc3RhdHVzGAMgASgFSACIAQFCCQoHX3N0YXR1cyIyChxTdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkifgoRQWdlbnRTZXNzaW9uRnJhbWUSEgoKc2Vzc2lvbl9pZBgBIAEoCRInCgVldmVudBgCIAEoCzIYLmNvbXBhc3MudjEuU2Vzc2lvbkV2ZW50EiwKBXN0YXRlGAMgASgOMh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0ZSJwCh5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QSFAoMYWdlbnRfaGFuZGxlGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAIgASgJEg8KB3BlcnNvbmEYAyABKAkSDAoEcm9sZRgEIAEoCSI5Ch9Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlc3BvbnNlEhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJIlAKG1JlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBIWCg5jb250YWluZXJfbmFtZRgBIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgCIAEoCSIeChxSZW1vdmVBZ2VudFdvcmtzcGFjZVJlc3BvbnNlImMKGFN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBIWCg5jb250YWluZXJfbmFtZRgBIAEoCRIZChFyZXN1bWVfc2Vzc2lvbl9pZBgDIAEoCUoECAIQA1IOaW5pdGlhbF9wcm9tcHQiLwoZU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJIloKEVNwYXduQWdlbnRSZXF1ZXN0EhQKDGFnZW50X2hhbmRsZRgBIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgDIAEoCUoECAIQA1IOaW5pdGlhbF9wcm9tcHQiQAoSU3Bhd25BZ2VudFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFgoOY29udGFpbmVyX25hbWUYAiABKAkiLQoXU3RvcEFnZW50U2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSIaChhTdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2UiLwoZUmVsb2FkQWdlbnRTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIjAKGlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkiKwoVR2V0QWdlbnRTdGF0dXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiSgoWR2V0QWdlbnRTdGF0dXNSZXNwb25zZRIwCghzdGF0dXNlcxgBIAMoCzIeLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdHVzIisKEUlzc3VlVG9rZW5SZXF1ZXN0EhYKDmFjY291bnRfaGFuZGxlGAEgASgJIiMKEklzc3VlVG9rZW5SZXNwb25zZRINCgV0b2tlbhgBIAEoCSIoChJSZXZva2VUb2tlblJlcXVlc3QSEgoFdG9rZW4YASABKAlCA4ABASIVChNSZXZva2VUb2tlblJlc3BvbnNlIicKFVB1dEFnZW50Q29uZmlnUmVxdWVzdBIOCgZidW5kbGUYASABKAwiKQoWUHV0QWdlbnRDb25maWdSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJIhsKGUdldEFnZW50Q29uZmlnSW5mb1JlcXVlc3Qi2gEKGkdldEFnZW50Q29uZmlnSW5mb1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSDgoGc2tpbGxzGAIgAygJEhIKCmV4dGVuc2lvbnMYAyADKAkSEwoLbWNwX3NlcnZlcnMYBCADKAkSFAoMaGFzX3NldHRpbmdzGAUgASgIEhUKDWhhc19hZ2VudHNfbWQYBiABKAgSDQoFcnVsZXMYByADKAkSEQoJc3ViYWdlbnRzGAggAygJEhIKCmhhc19tb2RlbHMYCSABKAgSDwoHcHJvbXB0cxgKIAMoCSIaChhEZWxldGVBZ2VudENvbmZpZ1JlcXVlc3QiGwoZRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZSI0Cg5Nb2RlbENhbmRpZGF0ZRIQCghwcm92aWRlchgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCSJxCg1Nb2RlbE1ldGFkYXRhEhYKDmNvbnRleHRfd2luZG93GAEgASgDEhwKFGlucHV0X2Nvc3RfbWljcm9fdXNkGAIgASgDEh0KFW91dHB1dF9jb3N0X21pY3JvX3VzZBgDIAEoAxILCgNhcGkYBCABKAkihwEKEk1vZGVsUmVnaXN0cnlFbnRyeRIUCgxkaXNwbGF5X25hbWUYASABKAkSLgoKY2FuZGlkYXRlcxgCIAMoCzIaLmNvbXBhc3MudjEuTW9kZWxDYW5kaWRhdGUSKwoIbWV0YWRhdGEYAyABKAsyGS5jb21wYXNzLnYxLk1vZGVsTWV0YWRhdGEimAEKDU1vZGVsUmVnaXN0cnkSNwoHZW50cmllcxgBIAMoCzImLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeS5FbnRyaWVzRW50cnkaTgoMRW50cmllc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoCzIeLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeUVudHJ5OgI4ASJgChdQdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBIrCghyZWdpc3RyeRgBIAEoCzIZLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeRIYChBleHBlY3RlZF92ZXJzaW9uGAIgASgDIisKGFB1dE1vZGVsUmVnaXN0cnlSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgDIhkKF0dldE1vZGVsUmVnaXN0cnlSZXF1ZXN0IlgKGEdldE1vZGVsUmVnaXN0cnlSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgDEisKCHJlZ2lzdHJ5GAIgASgLMhkuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5IhwKGkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXF1ZXN0Ih0KG0RlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZSIoChBBZ2VudEF0dHJpYnV0aW9uEhQKDGFnZW50X2hhbmRsZRgBIAEoCSJFCghGb3JnZVJlZhIrCghwcm92aWRlchgBIAEoDjIZLmNvbXBhc3MudjEuRm9yZ2VQcm92aWRlchIMCgRob3N0GAIgASgJItQDCgVJc3N1ZRIKCgJpZBgBIAEoCRIjCgVmb3JnZRgCIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgDIAEoCRIOCgZudW1iZXIYBCABKA0SDQoFdGl0bGUYBSABKAkSDAoEYm9keRgGIAEoCRITCgtmb3JnZV9zdGF0ZRgHIAEoCRILCgN1cmwYCCABKAkSKwoFYWdlbnQYCSABKAsyHC5jb21wYXNzLnYxLkFnZW50QXR0cmlidXRpb24SFQoNZm9yZ2VfYWNjb3VudBgKIAEoCRIOCgZsYWJlbHMYCyADKAkSLgoKdXBkYXRlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJQoFc3RhdGUYDCABKA4yFi5jb21wYXNzLnYxLklzc3VlU3RhdGUSEAoIcHJpb3JpdHkYDSABKAkSEAoIYXNzaWduZWUYDiABKAkSDwoHc3VtbWFyeRgPIAEoCRIOCgZicmFuY2gYECABKAkSJAoDcHJzGBEgAygLMhcuY29tcGFzcy52MS5QdWxsUmVxdWVzdBInCgd0cmFja2VyGBIgASgLMhYuY29tcGFzcy52MS5UcmFja2VyUmVmIp4DCgtQdWxsUmVxdWVzdBIjCgVmb3JnZRgBIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgCIAEoCRIOCgZudW1iZXIYAyABKA0SDQoFdGl0bGUYBCABKAkSEwoLZm9yZ2Vfc3RhdGUYBSABKAkSCwoDdXJsGAYgASgJEhAKCGhlYWRfcmVmGAcgASgJEhAKCGJhc2VfcmVmGAggASgJEisKBWFnZW50GAkgASgLMhwuY29tcGFzcy52MS5BZ2VudEF0dHJpYnV0aW9uEhUKDWZvcmdlX2FjY291bnQYCiABKAkSDQoFZHJhZnQYCyABKAgSKQoHY2hhbmdlZBgMIAEoCzIYLmNvbXBhc3MudjEuQ2hhbmdlZFN0YXRzEikKBmNoZWNrcxgNIAEoCzIZLmNvbXBhc3MudjEuQ2hlY2tzU3VtbWFyeRIjCgdyZXZpZXdzGA4gAygLMhIuY29tcGFzcy52MS5SZXZpZXcSKQoHdGhyZWFkcxgPIAMoCzIYLmNvbXBhc3MudjEuUmV2aWV3VGhyZWFkIlMKDUNoZWNrc1N1bW1hcnkSEAoIaGVhZF9zaGEYASABKAkSDQoFc3RhdGUYAiABKAkSIQoGY2hlY2tzGAMgAygLMhEuY29tcGFzcy52MS5DaGVjayJDCgVDaGVjaxIMCgRuYW1lGAEgASgJEg0KBXN0YXRlGAIgASgJEgsKA3VybBgDIAEoCRIQCghyZXF1aXJlZBgEIAEoCCJDCgxDaGFuZ2VkU3RhdHMSDQoFZmlsZXMYASABKA0SEQoJYWRkaXRpb25zGAIgASgNEhEKCWRlbGV0aW9ucxgDIAEoDSJDCgpUcmFja2VyUmVmEgwKBGtpbmQYASABKAkSCgoCaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEgsKA3VybBgEIAEoCSJHCgZSZXZpZXcSDgoGYXV0aG9yGAEgASgJEg4KBmlzX2JvdBgCIAEoCBIPCgd2ZXJkaWN0GAMgASgJEgwKBGJvZHkYBCABKAkiVQoMUmV2aWV3VGhyZWFkEgwKBHBhdGgYASABKAkSEAoIcmVzb2x2ZWQYAiABKAgSJQoIY29tbWVudHMYAyADKAsyEy5jb21wYXNzLnYxLkNvbW1lbnQiNwoHQ29tbWVudBIOCgZhdXRob3IYASABKAkSDgoGaXNfYm90GAIgASgIEgwKBGJvZHkYAyABKAkqZAoOU2VjcmV0RGVsaXZlcnkSHwobU0VDUkVUX0RFTElWRVJZX1VOU1BFQ0lGSUVEEAASGAoUU0VDUkVUX0RFTElWRVJZX0ZJTEUQARIXChNTRUNSRVRfREVMSVZFUllfRU5WEAIqcAoKU2VjcmV0S2luZBIbChdTRUNSRVRfS0lORF9VTlNQRUNJRklFRBAAEhcKE1NFQ1JFVF9LSU5EX0dFTkVSSUMQARIYChRTRUNSRVRfS0lORF9QUk9WSURFUhACEhIKDlNFQ1JFVF9LSU5EX0dIEAMqQwoLU2VydmVyU3RhdGUSHAoYU0VSVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASFgoSU0VSVkVSX1NUQVRFX1JFQURZEAEqggIKEUFnZW50U2Vzc2lvblN0YXRlEiMKH0FHRU5UX1NFU1NJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIgChxBR0VOVF9TRVNTSU9OX1NUQVRFX1NUQVJUSU5HEAESHQoZQUdFTlRfU0VTU0lPTl9TVEFURV9SRUFEWRACEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfV09SS0lORxADEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfU1RPUFBFRBAEEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfRVJST1JFRBAFEiQKIEFHRU5UX1NFU1NJT05fU1RBVEVfRElTQ09OTkVDVEVEEAYq0gEKE0FnZW50VG9vbENhbGxTdGF0dXMSJgoiQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfUEVORElORxABEiYKIkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfSU5fUFJPR1JFU1MQAhIkCiBBR0VOVF9UT09MX0NBTExfU1RBVFVTX0NPTVBMRVRFRBADEiEKHUFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfRkFJTEVEEAQqtAEKFEFnZW50UGxhbkVudHJ5U3RhdHVzEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIwofQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfUEVORElORxABEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX0lOX1BST0dSRVNTEAISJQohQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfQ09NUExFVEVEEAMqhAEKFFNlc3Npb25JbmplY3Rpb25LaW5kEiYKIlNFU1NJT05fSU5KRUNUSU9OX0tJTkRfVU5TUEVDSUZJRUQQABIgChxTRVNTSU9OX0lOSkVDVElPTl9LSU5EX1NURUVSEAESIgoeU0VTU0lPTl9JTkpFQ1RJT05fS0lORF9ERUxJVkVSEAIqdAoQU2Vzc2lvbkVycm9yS2luZBIiCh5TRVNTSU9OX0VSUk9SX0tJTkRfVU5TUEVDSUZJRUQQABIcChhTRVNTSU9OX0VSUk9SX0tJTkRfRVJST1IQARIeChpTRVNTSU9OX0VSUk9SX0tJTkRfQUJPUlRFRBACKvEBCgpJc3N1ZVN0YXRlEhsKF0lTU1VFX1NUQVRFX1VOU1BFQ0lGSUVEEAASFwoTSVNTVUVfU1RBVEVfQkFDS0xPRxABEhQKEElTU1VFX1NUQVRFX1RPRE8QAhIWChJJU1NVRV9TVEFURV9RVUVVRUQQAxIXChNJU1NVRV9TVEFURV9CTE9DS0VEEAQSGwoXSVNTVUVfU1RBVEVfSU5fUFJPR1JFU1MQBRIZChVJU1NVRV9TVEFURV9JTl9SRVZJRVcQBhIUChBJU1NVRV9TVEFURV9ET05FEAcSGAoUSVNTVUVfU1RBVEVfQVJDSElWRUQQCCqcAQoNRm9yZ2VQcm92aWRlchIeChpGT1JHRV9QUk9WSURFUl9VTlNQRUNJRklFRBAAEhkKFUZPUkdFX1BST1ZJREVSX0dJVEhVQhABEhkKFUZPUkdFX1BST1ZJREVSX0dJVExBQhACEhoKFkZPUkdFX1BST1ZJREVSX0ZPUkdFSk8QAxIZChVGT1JHRV9QUk9WSURFUl9MSU5FQVIQBDLTDgoOQ29tcGFzc1NlcnZpY2USVAoNR2V0U2VydmVySW5mbxIgLmNvbXBhc3MudjEuR2V0U2VydmVySW5mb1JlcXVlc3QaIS5jb21wYXNzLnYxLkdldFNlcnZlckluZm9SZXNwb25zZRI/CgZXaG9BbUkSGS5jb21wYXNzLnYxLldob0FtSVJlcXVlc3QaGi5jb21wYXNzLnYxLldob0FtSVJlc3BvbnNlElwKD1N1YnNjcmliZUV2ZW50cxIiLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVxdWVzdBojLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2UwARJaCg9MaXN0Qm9hcmRJc3N1ZXMSIi5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QaIy5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEnIKF1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlEiouY29tcGFzcy52MS5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QaKy5jb21wYXNzLnYxLlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USYAoRU3RhcnRBZ2VudFNlc3Npb24SJC5jb21wYXNzLnYxLlN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBolLmNvbXBhc3MudjEuU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRJLCgpTcGF3bkFnZW50Eh0uY29tcGFzcy52MS5TcGF3bkFnZW50UmVxdWVzdBoeLmNvbXBhc3MudjEuU3Bhd25BZ2VudFJlc3BvbnNlEl0KEFN0b3BBZ2VudFNlc3Npb24SIy5jb21wYXNzLnYxLlN0b3BBZ2VudFNlc3Npb25SZXF1ZXN0GiQuY29tcGFzcy52MS5TdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2USaQoUUmVtb3ZlQWdlbnRXb3Jrc3BhY2USJy5jb21wYXNzLnYxLlJlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBooLmNvbXBhc3MudjEuUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXNwb25zZRJjChJSZWxvYWRBZ2VudFNlc3Npb24SJS5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlcXVlc3QaJi5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlElcKDkdldEFnZW50U3RhdHVzEiEuY29tcGFzcy52MS5HZXRBZ2VudFN0YXR1c1JlcXVlc3QaIi5jb21wYXNzLnYxLkdldEFnZW50U3RhdHVzUmVzcG9uc2USYgoVU3Vic2NyaWJlQWdlbnRTZXNzaW9uEiguY29tcGFzcy52MS5TdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0Gh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25GcmFtZTABEksKCklzc3VlVG9rZW4SHS5jb21wYXNzLnYxLklzc3VlVG9rZW5SZXF1ZXN0Gh4uY29tcGFzcy52MS5Jc3N1ZVRva2VuUmVzcG9uc2USTgoLUmV2b2tlVG9rZW4SHi5jb21wYXNzLnYxLlJldm9rZVRva2VuUmVxdWVzdBofLmNvbXBhc3MudjEuUmV2b2tlVG9rZW5SZXNwb25zZRJXCg5QdXRBZ2VudENvbmZpZxIhLmNvbXBhc3MudjEuUHV0QWdlbnRDb25maWdSZXF1ZXN0GiIuY29tcGFzcy52MS5QdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEmMKEkdldEFnZW50Q29uZmlnSW5mbxIlLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdBomLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USYAoRRGVsZXRlQWdlbnRDb25maWcSJC5jb21wYXNzLnYxLkRlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdBolLmNvbXBhc3MudjEuRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZRJdChBQdXRNb2RlbFJlZ2lzdHJ5EiMuY29tcGFzcy52MS5QdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBokLmNvbXBhc3MudjEuUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEl0KEEdldE1vZGVsUmVnaXN0cnkSIy5jb21wYXNzLnYxLkdldE1vZGVsUmVnaXN0cnlSZXF1ZXN0GiQuY29tcGFzcy52MS5HZXRNb2RlbFJlZ2lzdHJ5UmVzcG9uc2USZgoTRGVsZXRlTW9kZWxSZWdpc3RyeRImLmNvbXBhc3MudjEuRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QaJy5jb21wYXNzLnYxLkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZTK+AwoOU2VjcmV0c1NlcnZpY2USSAoJU2V0U2VjcmV0EhwuY29tcGFzcy52MS5TZXRTZWNyZXRSZXF1ZXN0Gh0uY29tcGFzcy52MS5TZXRTZWNyZXRSZXNwb25zZRJOCgtMaXN0U2VjcmV0cxIeLmNvbXBhc3MudjEuTGlzdFNlY3JldHNSZXF1ZXN0Gh8uY29tcGFzcy52MS5MaXN0U2VjcmV0c1Jlc3BvbnNlElEKDERlbGV0ZVNlY3JldBIfLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVxdWVzdBogLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVzcG9uc2USWgoPU2V0U2VydmVyU2VjcmV0EiIuY29tcGFzcy52MS5TZXRTZXJ2ZXJTZWNyZXRSZXF1ZXN0GiMuY29tcGFzcy52MS5TZXRTZXJ2ZXJTZWNyZXRSZXNwb25zZRJjChJEZWxldGVTZXJ2ZXJTZWNyZXQSJS5jb21wYXNzLnYxLkRlbGV0ZVNlcnZlclNlY3JldFJlcXVlc3QaJi5jb21wYXNzLnYxLkRlbGV0ZVNlcnZlclNlY3JldFJlc3BvbnNlYgZwcm90bzM", [file_google_protobuf_timestamp]); + fileDesc("Chhjb21wYXNzL3YxL2NvbXBhc3MucHJvdG8SCmNvbXBhc3MudjEiqAEKEFNldFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRISCgV2YWx1ZRgCIAEoCUIDgAEBEiwKCGRlbGl2ZXJ5GAMgASgOMhouY29tcGFzcy52MS5TZWNyZXREZWxpdmVyeRIkCgRraW5kGAQgASgOMhYuY29tcGFzcy52MS5TZWNyZXRLaW5kEhAKCHByb3ZpZGVyGAUgASgJEgwKBGhvc3QYBiABKAkiEwoRU2V0U2VjcmV0UmVzcG9uc2UiFAoSTGlzdFNlY3JldHNSZXF1ZXN0IkAKE0xpc3RTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLmNvbXBhc3MudjEuU2VjcmV0U3RhdHVzIqABCgxTZWNyZXRTdGF0dXMSDAoEbmFtZRgBIAEoCRIOCgZpc19zZXQYAiABKAgSLAoIZGVsaXZlcnkYAyABKA4yGi5jb21wYXNzLnYxLlNlY3JldERlbGl2ZXJ5EiQKBGtpbmQYBCABKA4yFi5jb21wYXNzLnYxLlNlY3JldEtpbmQSEAoIcHJvdmlkZXIYBSABKAkSDAoEaG9zdBgGIAEoCSIjChNEZWxldGVTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkiFgoURGVsZXRlU2VjcmV0UmVzcG9uc2UiOgoWU2V0U2VydmVyU2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJQgOAAQEiGQoXU2V0U2VydmVyU2VjcmV0UmVzcG9uc2UiKQoZRGVsZXRlU2VydmVyU2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJIhwKGkRlbGV0ZVNlcnZlclNlY3JldFJlc3BvbnNlIhoKGExpc3RTZXJ2ZXJTZWNyZXRzUmVxdWVzdCJTChlMaXN0U2VydmVyU2VjcmV0c1Jlc3BvbnNlEjYKDnNlcnZlcl9zZWNyZXRzGAEgAygLMh4uY29tcGFzcy52MS5TZXJ2ZXJTZWNyZXRTdGF0dXMiMgoSU2VydmVyU2VjcmV0U3RhdHVzEgwKBG5hbWUYASABKAkSDgoGaXNfc2V0GAIgASgIIhYKFEdldFNlcnZlckluZm9SZXF1ZXN0Ij0KFUdldFNlcnZlckluZm9SZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJEhMKC2FwaV92ZXJzaW9uGAIgASgJIg8KDVdob0FtSVJlcXVlc3QiJAoOV2hvQW1JUmVzcG9uc2USEgoKYWNjb3VudF9pZBgBIAEoCSJDChZTdWJzY3JpYmVFdmVudHNSZXF1ZXN0EhEKCXNpbmNlX3NlcRgBIAEoBBIWCg5pbnN0YW5jZV9lcG9jaBgCIAEoBCLiAwoXU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2USCwoDc2VxGAEgASgEEhIKCmF0X3VuaXhfbXMYAiABKAMSFgoOaW5zdGFuY2VfZXBvY2gYAyABKAQSFAoMc25hcHNob3Rfc2VxGAQgASgEEjEKDXNlcnZlcl9zdGF0dXMYCiABKAsyGC5jb21wYXNzLnYxLlNlcnZlclN0YXR1c0gAEjUKD3Jlc3luY19yZXF1aXJlZBgLIAEoCzIaLmNvbXBhc3MudjEuUmVzeW5jUmVxdWlyZWRIABI+ChRhZ2VudF9zZXNzaW9uX3N0YXR1cxgMIAEoCzIeLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdHVzSAASPAoTYWdlbnRfbWVzc2FnZV9jaHVuaxgNIAEoCzIdLmNvbXBhc3MudjEuQWdlbnRNZXNzYWdlQ2h1bmtIABI0Cg9hZ2VudF90b29sX2NhbGwYDiABKAsyGS5jb21wYXNzLnYxLkFnZW50VG9vbENhbGxIABIrCgphZ2VudF9wbGFuGA8gASgLMhUuY29tcGFzcy52MS5BZ2VudFBsYW5IABIiCgVpc3N1ZRgQIAEoCzIRLmNvbXBhc3MudjEuSXNzdWVIAEIJCgdwYXlsb2FkIi4KFkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QSFAoMc25hcHNob3Rfc2VxGAEgASgEIjwKF0xpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEiEKBmlzc3VlcxgBIAMoCzIRLmNvbXBhc3MudjEuSXNzdWUiNgoMU2VydmVyU3RhdHVzEiYKBXN0YXRlGAEgASgOMhcuY29tcGFzcy52MS5TZXJ2ZXJTdGF0ZSIQCg5SZXN5bmNSZXF1aXJlZCJwChJBZ2VudFNlc3Npb25TdGF0dXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIsCgVzdGF0ZRgCIAEoDjIdLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdGUSGAoQYWdlbnRfYWNjb3VudF9pZBgDIAEoCSJJChFBZ2VudE1lc3NhZ2VDaHVuaxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHRleHQYAiABKAkSEgoKaXNfdGhvdWdodBgDIAEoCCJ5Cg1BZ2VudFRvb2xDYWxsEhIKCnNlc3Npb25faWQYASABKAkSFAoMdG9vbF9jYWxsX2lkGAIgASgJEg0KBXRpdGxlGAMgASgJEi8KBnN0YXR1cxgEIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cyJMCglBZ2VudFBsYW4SEgoKc2Vzc2lvbl9pZBgBIAEoCRIrCgdlbnRyaWVzGAIgAygLMhouY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeSJTCg5BZ2VudFBsYW5FbnRyeRIPCgdjb250ZW50GAEgASgJEjAKBnN0YXR1cxgCIAEoDjIgLmNvbXBhc3MudjEuQWdlbnRQbGFuRW50cnlTdGF0dXMi3wMKDFNlc3Npb25FdmVudBIQCghldmVudF9pZBgBIAEoCRISCgphdF91bml4X21zGAIgASgDEjoKDmFzc2lzdGFudF90ZXh0GAMgASgLMiAuY29tcGFzcy52MS5TZXNzaW9uQXNzaXN0YW50VGV4dEgAEi8KCHRoaW5raW5nGAQgASgLMhsuY29tcGFzcy52MS5TZXNzaW9uVGhpbmtpbmdIABIwCgl0b29sX2NhbGwYBSABKAsyGy5jb21wYXNzLnYxLlNlc3Npb25Ub29sQ2FsbEgAEj0KEHRvb2xfY2FsbF91cGRhdGUYBiABKAsyIS5jb21wYXNzLnYxLlNlc3Npb25Ub29sQ2FsbFVwZGF0ZUgAEicKBHBsYW4YByABKAsyFy5jb21wYXNzLnYxLlNlc3Npb25QbGFuSAASKwoGbm90aWNlGAggASgLMhkuY29tcGFzcy52MS5TZXNzaW9uTm90aWNlSAASOQoRc2Vzc2lvbl9pbmplY3Rpb24YCSABKAsyHC5jb21wYXNzLnYxLlNlc3Npb25JbmplY3Rpb25IABIxCg1zZXNzaW9uX2Vycm9yGAogASgLMhguY29tcGFzcy52MS5TZXNzaW9uRXJyb3JIAEIHCgVldmVudCI4ChRTZXNzaW9uQXNzaXN0YW50VGV4dBIMCgR0ZXh0GAEgASgJEhIKCm1lc3NhZ2VfaWQYAiABKAkiMwoPU2Vzc2lvblRoaW5raW5nEgwKBHRleHQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCSJnCg9TZXNzaW9uVG9vbENhbGwSFAoMdG9vbF9jYWxsX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEi8KBnN0YXR1cxgDIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cyKaAQoVU2Vzc2lvblRvb2xDYWxsVXBkYXRlEhQKDHRvb2xfY2FsbF9pZBgBIAEoCRIvCgZzdGF0dXMYAiABKA4yHy5jb21wYXNzLnYxLkFnZW50VG9vbENhbGxTdGF0dXMSDgoGb3V0cHV0GAMgASgJEioKBWRpZmZzGAQgAygLMhsuY29tcGFzcy52MS5TZXNzaW9uRmlsZURpZmYiVQoPU2Vzc2lvbkZpbGVEaWZmEgwKBHBhdGgYASABKAkSFQoIb2xkX3RleHQYAiABKAlIAIgBARIQCghuZXdfdGV4dBgDIAEoCUILCglfb2xkX3RleHQiOgoLU2Vzc2lvblBsYW4SKwoHZW50cmllcxgBIAMoCzIaLmNvbXBhc3MudjEuQWdlbnRQbGFuRW50cnkiOQoNU2Vzc2lvbk5vdGljZRIMCgR0ZXh0GAEgASgJEhEKBGxpbmsYAiABKAlIAIgBAUIHCgVfbGluayKDAQoQU2Vzc2lvbkluamVjdGlvbhIxCgdvcF9raW5kGAEgASgOMiAuY29tcGFzcy52MS5TZXNzaW9uSW5qZWN0aW9uS2luZBISCgptZXNzYWdlX2lkGAIgASgJEhMKC2Zyb21faGFuZGxlGAMgASgJEhMKC3RyYWNlcGFyZW50GAQgASgJImsKDFNlc3Npb25FcnJvchIqCgRraW5kGAEgASgOMhwuY29tcGFzcy52MS5TZXNzaW9uRXJyb3JLaW5kEg8KB21lc3NhZ2UYAiABKAkSEwoGc3RhdHVzGAMgASgFSACIAQFCCQoHX3N0YXR1cyIyChxTdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkifgoRQWdlbnRTZXNzaW9uRnJhbWUSEgoKc2Vzc2lvbl9pZBgBIAEoCRInCgVldmVudBgCIAEoCzIYLmNvbXBhc3MudjEuU2Vzc2lvbkV2ZW50EiwKBXN0YXRlGAMgASgOMh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0ZSJwCh5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QSFAoMYWdlbnRfaGFuZGxlGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAIgASgJEg8KB3BlcnNvbmEYAyABKAkSDAoEcm9sZRgEIAEoCSI5Ch9Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlc3BvbnNlEhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJIlAKG1JlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBIWCg5jb250YWluZXJfbmFtZRgBIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgCIAEoCSIeChxSZW1vdmVBZ2VudFdvcmtzcGFjZVJlc3BvbnNlImMKGFN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBIWCg5jb250YWluZXJfbmFtZRgBIAEoCRIZChFyZXN1bWVfc2Vzc2lvbl9pZBgDIAEoCUoECAIQA1IOaW5pdGlhbF9wcm9tcHQiLwoZU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJIloKEVNwYXduQWdlbnRSZXF1ZXN0EhQKDGFnZW50X2hhbmRsZRgBIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgDIAEoCUoECAIQA1IOaW5pdGlhbF9wcm9tcHQiQAoSU3Bhd25BZ2VudFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFgoOY29udGFpbmVyX25hbWUYAiABKAkiLQoXU3RvcEFnZW50U2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSIaChhTdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2UiLwoZUmVsb2FkQWdlbnRTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIjAKGlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkiKwoVR2V0QWdlbnRTdGF0dXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiSgoWR2V0QWdlbnRTdGF0dXNSZXNwb25zZRIwCghzdGF0dXNlcxgBIAMoCzIeLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdHVzIisKEUlzc3VlVG9rZW5SZXF1ZXN0EhYKDmFjY291bnRfaGFuZGxlGAEgASgJIiMKEklzc3VlVG9rZW5SZXNwb25zZRINCgV0b2tlbhgBIAEoCSIoChJSZXZva2VUb2tlblJlcXVlc3QSEgoFdG9rZW4YASABKAlCA4ABASIVChNSZXZva2VUb2tlblJlc3BvbnNlIicKFVB1dEFnZW50Q29uZmlnUmVxdWVzdBIOCgZidW5kbGUYASABKAwiKQoWUHV0QWdlbnRDb25maWdSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJIhsKGUdldEFnZW50Q29uZmlnSW5mb1JlcXVlc3Qi2gEKGkdldEFnZW50Q29uZmlnSW5mb1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSDgoGc2tpbGxzGAIgAygJEhIKCmV4dGVuc2lvbnMYAyADKAkSEwoLbWNwX3NlcnZlcnMYBCADKAkSFAoMaGFzX3NldHRpbmdzGAUgASgIEhUKDWhhc19hZ2VudHNfbWQYBiABKAgSDQoFcnVsZXMYByADKAkSEQoJc3ViYWdlbnRzGAggAygJEhIKCmhhc19tb2RlbHMYCSABKAgSDwoHcHJvbXB0cxgKIAMoCSIaChhEZWxldGVBZ2VudENvbmZpZ1JlcXVlc3QiGwoZRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZSI0Cg5Nb2RlbENhbmRpZGF0ZRIQCghwcm92aWRlchgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCSJxCg1Nb2RlbE1ldGFkYXRhEhYKDmNvbnRleHRfd2luZG93GAEgASgDEhwKFGlucHV0X2Nvc3RfbWljcm9fdXNkGAIgASgDEh0KFW91dHB1dF9jb3N0X21pY3JvX3VzZBgDIAEoAxILCgNhcGkYBCABKAkihwEKEk1vZGVsUmVnaXN0cnlFbnRyeRIUCgxkaXNwbGF5X25hbWUYASABKAkSLgoKY2FuZGlkYXRlcxgCIAMoCzIaLmNvbXBhc3MudjEuTW9kZWxDYW5kaWRhdGUSKwoIbWV0YWRhdGEYAyABKAsyGS5jb21wYXNzLnYxLk1vZGVsTWV0YWRhdGEimAEKDU1vZGVsUmVnaXN0cnkSNwoHZW50cmllcxgBIAMoCzImLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeS5FbnRyaWVzRW50cnkaTgoMRW50cmllc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoCzIeLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeUVudHJ5OgI4ASJgChdQdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBIrCghyZWdpc3RyeRgBIAEoCzIZLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeRIYChBleHBlY3RlZF92ZXJzaW9uGAIgASgDIisKGFB1dE1vZGVsUmVnaXN0cnlSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgDIhkKF0dldE1vZGVsUmVnaXN0cnlSZXF1ZXN0IlgKGEdldE1vZGVsUmVnaXN0cnlSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgDEisKCHJlZ2lzdHJ5GAIgASgLMhkuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5IhwKGkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXF1ZXN0Ih0KG0RlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZSIoChBBZ2VudEF0dHJpYnV0aW9uEhQKDGFnZW50X2hhbmRsZRgBIAEoCSJFCghGb3JnZVJlZhIrCghwcm92aWRlchgBIAEoDjIZLmNvbXBhc3MudjEuRm9yZ2VQcm92aWRlchIMCgRob3N0GAIgASgJItQDCgVJc3N1ZRIKCgJpZBgBIAEoCRIjCgVmb3JnZRgCIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgDIAEoCRIOCgZudW1iZXIYBCABKA0SDQoFdGl0bGUYBSABKAkSDAoEYm9keRgGIAEoCRITCgtmb3JnZV9zdGF0ZRgHIAEoCRILCgN1cmwYCCABKAkSKwoFYWdlbnQYCSABKAsyHC5jb21wYXNzLnYxLkFnZW50QXR0cmlidXRpb24SFQoNZm9yZ2VfYWNjb3VudBgKIAEoCRIOCgZsYWJlbHMYCyADKAkSLgoKdXBkYXRlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJQoFc3RhdGUYDCABKA4yFi5jb21wYXNzLnYxLklzc3VlU3RhdGUSEAoIcHJpb3JpdHkYDSABKAkSEAoIYXNzaWduZWUYDiABKAkSDwoHc3VtbWFyeRgPIAEoCRIOCgZicmFuY2gYECABKAkSJAoDcHJzGBEgAygLMhcuY29tcGFzcy52MS5QdWxsUmVxdWVzdBInCgd0cmFja2VyGBIgASgLMhYuY29tcGFzcy52MS5UcmFja2VyUmVmIp4DCgtQdWxsUmVxdWVzdBIjCgVmb3JnZRgBIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgCIAEoCRIOCgZudW1iZXIYAyABKA0SDQoFdGl0bGUYBCABKAkSEwoLZm9yZ2Vfc3RhdGUYBSABKAkSCwoDdXJsGAYgASgJEhAKCGhlYWRfcmVmGAcgASgJEhAKCGJhc2VfcmVmGAggASgJEisKBWFnZW50GAkgASgLMhwuY29tcGFzcy52MS5BZ2VudEF0dHJpYnV0aW9uEhUKDWZvcmdlX2FjY291bnQYCiABKAkSDQoFZHJhZnQYCyABKAgSKQoHY2hhbmdlZBgMIAEoCzIYLmNvbXBhc3MudjEuQ2hhbmdlZFN0YXRzEikKBmNoZWNrcxgNIAEoCzIZLmNvbXBhc3MudjEuQ2hlY2tzU3VtbWFyeRIjCgdyZXZpZXdzGA4gAygLMhIuY29tcGFzcy52MS5SZXZpZXcSKQoHdGhyZWFkcxgPIAMoCzIYLmNvbXBhc3MudjEuUmV2aWV3VGhyZWFkIlMKDUNoZWNrc1N1bW1hcnkSEAoIaGVhZF9zaGEYASABKAkSDQoFc3RhdGUYAiABKAkSIQoGY2hlY2tzGAMgAygLMhEuY29tcGFzcy52MS5DaGVjayJDCgVDaGVjaxIMCgRuYW1lGAEgASgJEg0KBXN0YXRlGAIgASgJEgsKA3VybBgDIAEoCRIQCghyZXF1aXJlZBgEIAEoCCJDCgxDaGFuZ2VkU3RhdHMSDQoFZmlsZXMYASABKA0SEQoJYWRkaXRpb25zGAIgASgNEhEKCWRlbGV0aW9ucxgDIAEoDSJDCgpUcmFja2VyUmVmEgwKBGtpbmQYASABKAkSCgoCaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEgsKA3VybBgEIAEoCSJHCgZSZXZpZXcSDgoGYXV0aG9yGAEgASgJEg4KBmlzX2JvdBgCIAEoCBIPCgd2ZXJkaWN0GAMgASgJEgwKBGJvZHkYBCABKAkiVQoMUmV2aWV3VGhyZWFkEgwKBHBhdGgYASABKAkSEAoIcmVzb2x2ZWQYAiABKAgSJQoIY29tbWVudHMYAyADKAsyEy5jb21wYXNzLnYxLkNvbW1lbnQiNwoHQ29tbWVudBIOCgZhdXRob3IYASABKAkSDgoGaXNfYm90GAIgASgIEgwKBGJvZHkYAyABKAkqZAoOU2VjcmV0RGVsaXZlcnkSHwobU0VDUkVUX0RFTElWRVJZX1VOU1BFQ0lGSUVEEAASGAoUU0VDUkVUX0RFTElWRVJZX0ZJTEUQARIXChNTRUNSRVRfREVMSVZFUllfRU5WEAIqcAoKU2VjcmV0S2luZBIbChdTRUNSRVRfS0lORF9VTlNQRUNJRklFRBAAEhcKE1NFQ1JFVF9LSU5EX0dFTkVSSUMQARIYChRTRUNSRVRfS0lORF9QUk9WSURFUhACEhIKDlNFQ1JFVF9LSU5EX0dIEAMqQwoLU2VydmVyU3RhdGUSHAoYU0VSVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASFgoSU0VSVkVSX1NUQVRFX1JFQURZEAEqggIKEUFnZW50U2Vzc2lvblN0YXRlEiMKH0FHRU5UX1NFU1NJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIgChxBR0VOVF9TRVNTSU9OX1NUQVRFX1NUQVJUSU5HEAESHQoZQUdFTlRfU0VTU0lPTl9TVEFURV9SRUFEWRACEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfV09SS0lORxADEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfU1RPUFBFRBAEEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfRVJST1JFRBAFEiQKIEFHRU5UX1NFU1NJT05fU1RBVEVfRElTQ09OTkVDVEVEEAYq0gEKE0FnZW50VG9vbENhbGxTdGF0dXMSJgoiQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfUEVORElORxABEiYKIkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfSU5fUFJPR1JFU1MQAhIkCiBBR0VOVF9UT09MX0NBTExfU1RBVFVTX0NPTVBMRVRFRBADEiEKHUFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfRkFJTEVEEAQqtAEKFEFnZW50UGxhbkVudHJ5U3RhdHVzEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIwofQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfUEVORElORxABEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX0lOX1BST0dSRVNTEAISJQohQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfQ09NUExFVEVEEAMqhAEKFFNlc3Npb25JbmplY3Rpb25LaW5kEiYKIlNFU1NJT05fSU5KRUNUSU9OX0tJTkRfVU5TUEVDSUZJRUQQABIgChxTRVNTSU9OX0lOSkVDVElPTl9LSU5EX1NURUVSEAESIgoeU0VTU0lPTl9JTkpFQ1RJT05fS0lORF9ERUxJVkVSEAIqdAoQU2Vzc2lvbkVycm9yS2luZBIiCh5TRVNTSU9OX0VSUk9SX0tJTkRfVU5TUEVDSUZJRUQQABIcChhTRVNTSU9OX0VSUk9SX0tJTkRfRVJST1IQARIeChpTRVNTSU9OX0VSUk9SX0tJTkRfQUJPUlRFRBACKvEBCgpJc3N1ZVN0YXRlEhsKF0lTU1VFX1NUQVRFX1VOU1BFQ0lGSUVEEAASFwoTSVNTVUVfU1RBVEVfQkFDS0xPRxABEhQKEElTU1VFX1NUQVRFX1RPRE8QAhIWChJJU1NVRV9TVEFURV9RVUVVRUQQAxIXChNJU1NVRV9TVEFURV9CTE9DS0VEEAQSGwoXSVNTVUVfU1RBVEVfSU5fUFJPR1JFU1MQBRIZChVJU1NVRV9TVEFURV9JTl9SRVZJRVcQBhIUChBJU1NVRV9TVEFURV9ET05FEAcSGAoUSVNTVUVfU1RBVEVfQVJDSElWRUQQCCqcAQoNRm9yZ2VQcm92aWRlchIeChpGT1JHRV9QUk9WSURFUl9VTlNQRUNJRklFRBAAEhkKFUZPUkdFX1BST1ZJREVSX0dJVEhVQhABEhkKFUZPUkdFX1BST1ZJREVSX0dJVExBQhACEhoKFkZPUkdFX1BST1ZJREVSX0ZPUkdFSk8QAxIZChVGT1JHRV9QUk9WSURFUl9MSU5FQVIQBDLTDgoOQ29tcGFzc1NlcnZpY2USVAoNR2V0U2VydmVySW5mbxIgLmNvbXBhc3MudjEuR2V0U2VydmVySW5mb1JlcXVlc3QaIS5jb21wYXNzLnYxLkdldFNlcnZlckluZm9SZXNwb25zZRI/CgZXaG9BbUkSGS5jb21wYXNzLnYxLldob0FtSVJlcXVlc3QaGi5jb21wYXNzLnYxLldob0FtSVJlc3BvbnNlElwKD1N1YnNjcmliZUV2ZW50cxIiLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVxdWVzdBojLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2UwARJaCg9MaXN0Qm9hcmRJc3N1ZXMSIi5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QaIy5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEnIKF1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlEiouY29tcGFzcy52MS5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QaKy5jb21wYXNzLnYxLlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USYAoRU3RhcnRBZ2VudFNlc3Npb24SJC5jb21wYXNzLnYxLlN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBolLmNvbXBhc3MudjEuU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRJLCgpTcGF3bkFnZW50Eh0uY29tcGFzcy52MS5TcGF3bkFnZW50UmVxdWVzdBoeLmNvbXBhc3MudjEuU3Bhd25BZ2VudFJlc3BvbnNlEl0KEFN0b3BBZ2VudFNlc3Npb24SIy5jb21wYXNzLnYxLlN0b3BBZ2VudFNlc3Npb25SZXF1ZXN0GiQuY29tcGFzcy52MS5TdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2USaQoUUmVtb3ZlQWdlbnRXb3Jrc3BhY2USJy5jb21wYXNzLnYxLlJlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBooLmNvbXBhc3MudjEuUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXNwb25zZRJjChJSZWxvYWRBZ2VudFNlc3Npb24SJS5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlcXVlc3QaJi5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlElcKDkdldEFnZW50U3RhdHVzEiEuY29tcGFzcy52MS5HZXRBZ2VudFN0YXR1c1JlcXVlc3QaIi5jb21wYXNzLnYxLkdldEFnZW50U3RhdHVzUmVzcG9uc2USYgoVU3Vic2NyaWJlQWdlbnRTZXNzaW9uEiguY29tcGFzcy52MS5TdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0Gh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25GcmFtZTABEksKCklzc3VlVG9rZW4SHS5jb21wYXNzLnYxLklzc3VlVG9rZW5SZXF1ZXN0Gh4uY29tcGFzcy52MS5Jc3N1ZVRva2VuUmVzcG9uc2USTgoLUmV2b2tlVG9rZW4SHi5jb21wYXNzLnYxLlJldm9rZVRva2VuUmVxdWVzdBofLmNvbXBhc3MudjEuUmV2b2tlVG9rZW5SZXNwb25zZRJXCg5QdXRBZ2VudENvbmZpZxIhLmNvbXBhc3MudjEuUHV0QWdlbnRDb25maWdSZXF1ZXN0GiIuY29tcGFzcy52MS5QdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEmMKEkdldEFnZW50Q29uZmlnSW5mbxIlLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdBomLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USYAoRRGVsZXRlQWdlbnRDb25maWcSJC5jb21wYXNzLnYxLkRlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdBolLmNvbXBhc3MudjEuRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZRJdChBQdXRNb2RlbFJlZ2lzdHJ5EiMuY29tcGFzcy52MS5QdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBokLmNvbXBhc3MudjEuUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEl0KEEdldE1vZGVsUmVnaXN0cnkSIy5jb21wYXNzLnYxLkdldE1vZGVsUmVnaXN0cnlSZXF1ZXN0GiQuY29tcGFzcy52MS5HZXRNb2RlbFJlZ2lzdHJ5UmVzcG9uc2USZgoTRGVsZXRlTW9kZWxSZWdpc3RyeRImLmNvbXBhc3MudjEuRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QaJy5jb21wYXNzLnYxLkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZTKgBAoOU2VjcmV0c1NlcnZpY2USSAoJU2V0U2VjcmV0EhwuY29tcGFzcy52MS5TZXRTZWNyZXRSZXF1ZXN0Gh0uY29tcGFzcy52MS5TZXRTZWNyZXRSZXNwb25zZRJOCgtMaXN0U2VjcmV0cxIeLmNvbXBhc3MudjEuTGlzdFNlY3JldHNSZXF1ZXN0Gh8uY29tcGFzcy52MS5MaXN0U2VjcmV0c1Jlc3BvbnNlElEKDERlbGV0ZVNlY3JldBIfLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVxdWVzdBogLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVzcG9uc2USWgoPU2V0U2VydmVyU2VjcmV0EiIuY29tcGFzcy52MS5TZXRTZXJ2ZXJTZWNyZXRSZXF1ZXN0GiMuY29tcGFzcy52MS5TZXRTZXJ2ZXJTZWNyZXRSZXNwb25zZRJjChJEZWxldGVTZXJ2ZXJTZWNyZXQSJS5jb21wYXNzLnYxLkRlbGV0ZVNlcnZlclNlY3JldFJlcXVlc3QaJi5jb21wYXNzLnYxLkRlbGV0ZVNlcnZlclNlY3JldFJlc3BvbnNlEmAKEUxpc3RTZXJ2ZXJTZWNyZXRzEiQuY29tcGFzcy52MS5MaXN0U2VydmVyU2VjcmV0c1JlcXVlc3QaJS5jb21wYXNzLnYxLkxpc3RTZXJ2ZXJTZWNyZXRzUmVzcG9uc2ViBnByb3RvMw", [file_google_protobuf_timestamp]); /** * @generated from message compass.v1.SetSecretRequest @@ -250,6 +250,64 @@ export type DeleteServerSecretResponse = Message<"compass.v1.DeleteServerSecretR export const DeleteServerSecretResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_compass_v1_compass, 10); +/** + * @generated from message compass.v1.ListServerSecretsRequest + */ +export type ListServerSecretsRequest = Message<"compass.v1.ListServerSecretsRequest"> & { +}; + +/** + * Describes the message compass.v1.ListServerSecretsRequest. + * Use `create(ListServerSecretsRequestSchema)` to create a new message. + */ +export const ListServerSecretsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_compass_v1_compass, 11); + +/** + * @generated from message compass.v1.ListServerSecretsResponse + */ +export type ListServerSecretsResponse = Message<"compass.v1.ListServerSecretsResponse"> & { + /** + * @generated from field: repeated compass.v1.ServerSecretStatus server_secrets = 1; + */ + serverSecrets: ServerSecretStatus[]; +}; + +/** + * Describes the message compass.v1.ListServerSecretsResponse. + * Use `create(ListServerSecretsResponseSchema)` to create a new message. + */ +export const ListServerSecretsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_compass_v1_compass, 12); + +/** + * A declared server secret's status — the name plus set/unset ONLY, and NEVER + * the value. A server secret is deployment-owned and never container-delivered, + * so there is no delivery/kind routing to carry either. `name` is the STORED + * name, carrying its reserved server-secret prefix; stripping the prefix for + * display is the client's job, so the wire form stays unambiguous. + * + * @generated from message compass.v1.ServerSecretStatus + */ +export type ServerSecretStatus = Message<"compass.v1.ServerSecretStatus"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: bool is_set = 2; + */ + isSet: boolean; +}; + +/** + * Describes the message compass.v1.ServerSecretStatus. + * Use `create(ServerSecretStatusSchema)` to create a new message. + */ +export const ServerSecretStatusSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_compass_v1_compass, 13); + /** * @generated from message compass.v1.GetServerInfoRequest */ @@ -261,7 +319,7 @@ export type GetServerInfoRequest = Message<"compass.v1.GetServerInfoRequest"> & * Use `create(GetServerInfoRequestSchema)` to create a new message. */ export const GetServerInfoRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 11); + messageDesc(file_compass_v1_compass, 14); /** * @generated from message compass.v1.GetServerInfoResponse @@ -287,7 +345,7 @@ export type GetServerInfoResponse = Message<"compass.v1.GetServerInfoResponse"> * Use `create(GetServerInfoResponseSchema)` to create a new message. */ export const GetServerInfoResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 12); + messageDesc(file_compass_v1_compass, 15); /** * @generated from message compass.v1.WhoAmIRequest @@ -300,7 +358,7 @@ export type WhoAmIRequest = Message<"compass.v1.WhoAmIRequest"> & { * Use `create(WhoAmIRequestSchema)` to create a new message. */ export const WhoAmIRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 13); + messageDesc(file_compass_v1_compass, 16); /** * @generated from message compass.v1.WhoAmIResponse @@ -320,7 +378,7 @@ export type WhoAmIResponse = Message<"compass.v1.WhoAmIResponse"> & { * Use `create(WhoAmIResponseSchema)` to create a new message. */ export const WhoAmIResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 14); + messageDesc(file_compass_v1_compass, 17); /** * Subscribe to the server event stream. @@ -354,7 +412,7 @@ export type SubscribeEventsRequest = Message<"compass.v1.SubscribeEventsRequest" * Use `create(SubscribeEventsRequestSchema)` to create a new message. */ export const SubscribeEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 15); + messageDesc(file_compass_v1_compass, 18); /** * One entry in the server event stream. @@ -479,7 +537,7 @@ export type SubscribeEventsResponse = Message<"compass.v1.SubscribeEventsRespons * Use `create(SubscribeEventsResponseSchema)` to create a new message. */ export const SubscribeEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 16); + messageDesc(file_compass_v1_compass, 19); /** * The durable board re-snapshot read request. Single-shot by design: the read @@ -511,7 +569,7 @@ export type ListBoardIssuesRequest = Message<"compass.v1.ListBoardIssuesRequest" * Use `create(ListBoardIssuesRequestSchema)` to create a new message. */ export const ListBoardIssuesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 17); + messageDesc(file_compass_v1_compass, 20); /** * The board as of the requested snapshot: every Compass Issue for the repo in @@ -533,7 +591,7 @@ export type ListBoardIssuesResponse = Message<"compass.v1.ListBoardIssuesRespons * Use `create(ListBoardIssuesResponseSchema)` to create a new message. */ export const ListBoardIssuesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 18); + messageDesc(file_compass_v1_compass, 21); /** * The server's liveness state, pushed on connect and whenever it changes. @@ -552,7 +610,7 @@ export type ServerStatus = Message<"compass.v1.ServerStatus"> & { * Use `create(ServerStatusSchema)` to create a new message. */ export const ServerStatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 19); + messageDesc(file_compass_v1_compass, 22); /** * The requested `since_seq` predates the server's retained event buffer, so a @@ -570,7 +628,7 @@ export type ResyncRequired = Message<"compass.v1.ResyncRequired"> & { * Use `create(ResyncRequiredSchema)` to create a new message. */ export const ResyncRequiredSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 20); + messageDesc(file_compass_v1_compass, 23); /** * The lifecycle state of one agent session, pushed on every transition. @@ -609,7 +667,7 @@ export type AgentSessionStatus = Message<"compass.v1.AgentSessionStatus"> & { * Use `create(AgentSessionStatusSchema)` to create a new message. */ export const AgentSessionStatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 21); + messageDesc(file_compass_v1_compass, 24); /** * A chunk of the agent's message stream (assistant text / thought), relayed @@ -644,7 +702,7 @@ export type AgentMessageChunk = Message<"compass.v1.AgentMessageChunk"> & { * Use `create(AgentMessageChunkSchema)` to create a new message. */ export const AgentMessageChunkSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 22); + messageDesc(file_compass_v1_compass, 25); /** * A tool call the agent started or updated, relayed from the Runner's agent @@ -685,7 +743,7 @@ export type AgentToolCall = Message<"compass.v1.AgentToolCall"> & { * Use `create(AgentToolCallSchema)` to create a new message. */ export const AgentToolCallSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 23); + messageDesc(file_compass_v1_compass, 26); /** * The agent's current execution plan, relayed from the Runner's agent event @@ -710,7 +768,7 @@ export type AgentPlan = Message<"compass.v1.AgentPlan"> & { * Use `create(AgentPlanSchema)` to create a new message. */ export const AgentPlanSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 24); + messageDesc(file_compass_v1_compass, 27); /** * One step in an agent plan. @@ -734,7 +792,7 @@ export type AgentPlanEntry = Message<"compass.v1.AgentPlanEntry"> & { * Use `create(AgentPlanEntrySchema)` to create a new message. */ export const AgentPlanEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 25); + messageDesc(file_compass_v1_compass, 28); /** * The typed observation-trace event — the render contract for the UI's session @@ -822,7 +880,7 @@ export type SessionEvent = Message<"compass.v1.SessionEvent"> & { * Use `create(SessionEventSchema)` to create a new message. */ export const SessionEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 26); + messageDesc(file_compass_v1_compass, 29); /** * A chunk of the agent's user-facing message stream. message_id correlates the @@ -849,7 +907,7 @@ export type SessionAssistantText = Message<"compass.v1.SessionAssistantText"> & * Use `create(SessionAssistantTextSchema)` to create a new message. */ export const SessionAssistantTextSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 27); + messageDesc(file_compass_v1_compass, 30); /** * A chunk of the agent's internal-reasoning (thought) stream, correlated by @@ -874,7 +932,7 @@ export type SessionThinking = Message<"compass.v1.SessionThinking"> & { * Use `create(SessionThinkingSchema)` to create a new message. */ export const SessionThinkingSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 28); + messageDesc(file_compass_v1_compass, 31); /** * A tool call the agent started. Reuses AgentToolCallStatus rather than minting @@ -904,7 +962,7 @@ export type SessionToolCall = Message<"compass.v1.SessionToolCall"> & { * Use `create(SessionToolCallSchema)` to create a new message. */ export const SessionToolCallSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 29); + messageDesc(file_compass_v1_compass, 32); /** * An update to a running or finished tool call: its new status, any accumulated @@ -940,7 +998,7 @@ export type SessionToolCallUpdate = Message<"compass.v1.SessionToolCallUpdate"> * Use `create(SessionToolCallUpdateSchema)` to create a new message. */ export const SessionToolCallUpdateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 30); + messageDesc(file_compass_v1_compass, 33); /** * One file edit within a tool-call update. old_text absent = a file creation. @@ -969,7 +1027,7 @@ export type SessionFileDiff = Message<"compass.v1.SessionFileDiff"> & { * Use `create(SessionFileDiffSchema)` to create a new message. */ export const SessionFileDiffSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 31); + messageDesc(file_compass_v1_compass, 34); /** * The agent's current execution plan. Reuses AgentPlanEntry. @@ -988,7 +1046,7 @@ export type SessionPlan = Message<"compass.v1.SessionPlan"> & { * Use `create(SessionPlanSchema)` to create a new message. */ export const SessionPlanSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 32); + messageDesc(file_compass_v1_compass, 35); /** * A free-standing notice in the trace (a status line or advisory), with an @@ -1013,7 +1071,7 @@ export type SessionNotice = Message<"compass.v1.SessionNotice"> & { * Use `create(SessionNoticeSchema)` to create a new message. */ export const SessionNoticeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 33); + messageDesc(file_compass_v1_compass, 36); /** * A control injection into the agent's live session: the moment a channel @@ -1070,7 +1128,7 @@ export type SessionInjection = Message<"compass.v1.SessionInjection"> & { * Use `create(SessionInjectionSchema)` to create a new message. */ export const SessionInjectionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 34); + messageDesc(file_compass_v1_compass, 37); /** * A turn-ending failure surfaced as session-trace content: an inner/provider @@ -1103,7 +1161,7 @@ export type SessionError = Message<"compass.v1.SessionError"> & { * Use `create(SessionErrorSchema)` to create a new message. */ export const SessionErrorSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 35); + messageDesc(file_compass_v1_compass, 38); /** * SubscribeAgentSession: the session whose typed observation trace to tail. @@ -1122,7 +1180,7 @@ export type SubscribeAgentSessionRequest = Message<"compass.v1.SubscribeAgentSes * Use `create(SubscribeAgentSessionRequestSchema)` to create a new message. */ export const SubscribeAgentSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 36); + messageDesc(file_compass_v1_compass, 39); /** * One frame on the SubscribeAgentSession stream: a typed trace event, a @@ -1153,7 +1211,7 @@ export type AgentSessionFrame = Message<"compass.v1.AgentSessionFrame"> & { * Use `create(AgentSessionFrameSchema)` to create a new message. */ export const AgentSessionFrameSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 37); + messageDesc(file_compass_v1_compass, 40); /** * ProvisionAgentWorkspace: create the isolated per-agent container for a @@ -1232,7 +1290,7 @@ export type ProvisionAgentWorkspaceRequest = Message<"compass.v1.ProvisionAgentW * Use `create(ProvisionAgentWorkspaceRequestSchema)` to create a new message. */ export const ProvisionAgentWorkspaceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 38); + messageDesc(file_compass_v1_compass, 41); /** * @generated from message compass.v1.ProvisionAgentWorkspaceResponse @@ -1252,7 +1310,7 @@ export type ProvisionAgentWorkspaceResponse = Message<"compass.v1.ProvisionAgent * Use `create(ProvisionAgentWorkspaceResponseSchema)` to create a new message. */ export const ProvisionAgentWorkspaceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 39); + messageDesc(file_compass_v1_compass, 42); /** * RemoveAgentWorkspace: tear down the per-agent container and release its @@ -1284,7 +1342,7 @@ export type RemoveAgentWorkspaceRequest = Message<"compass.v1.RemoveAgentWorkspa * Use `create(RemoveAgentWorkspaceRequestSchema)` to create a new message. */ export const RemoveAgentWorkspaceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 40); + messageDesc(file_compass_v1_compass, 43); /** * @generated from message compass.v1.RemoveAgentWorkspaceResponse @@ -1297,7 +1355,7 @@ export type RemoveAgentWorkspaceResponse = Message<"compass.v1.RemoveAgentWorksp * Use `create(RemoveAgentWorkspaceResponseSchema)` to create a new message. */ export const RemoveAgentWorkspaceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 41); + messageDesc(file_compass_v1_compass, 44); /** * StartAgentSession: bring the first-party agent in a provisioned container @@ -1330,7 +1388,7 @@ export type StartAgentSessionRequest = Message<"compass.v1.StartAgentSessionRequ * Use `create(StartAgentSessionRequestSchema)` to create a new message. */ export const StartAgentSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 42); + messageDesc(file_compass_v1_compass, 45); /** * @generated from message compass.v1.StartAgentSessionResponse @@ -1350,7 +1408,7 @@ export type StartAgentSessionResponse = Message<"compass.v1.StartAgentSessionRes * Use `create(StartAgentSessionResponseSchema)` to create a new message. */ export const StartAgentSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 43); + messageDesc(file_compass_v1_compass, 46); /** * SpawnAgent: the composite start — Provision then Start under one @@ -1386,7 +1444,7 @@ export type SpawnAgentRequest = Message<"compass.v1.SpawnAgentRequest"> & { * Use `create(SpawnAgentRequestSchema)` to create a new message. */ export const SpawnAgentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 44); + messageDesc(file_compass_v1_compass, 47); /** * @generated from message compass.v1.SpawnAgentResponse @@ -1415,7 +1473,7 @@ export type SpawnAgentResponse = Message<"compass.v1.SpawnAgentResponse"> & { * Use `create(SpawnAgentResponseSchema)` to create a new message. */ export const SpawnAgentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 45); + messageDesc(file_compass_v1_compass, 48); /** * @generated from message compass.v1.StopAgentSessionRequest @@ -1432,7 +1490,7 @@ export type StopAgentSessionRequest = Message<"compass.v1.StopAgentSessionReques * Use `create(StopAgentSessionRequestSchema)` to create a new message. */ export const StopAgentSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 46); + messageDesc(file_compass_v1_compass, 49); /** * @generated from message compass.v1.StopAgentSessionResponse @@ -1445,7 +1503,7 @@ export type StopAgentSessionResponse = Message<"compass.v1.StopAgentSessionRespo * Use `create(StopAgentSessionResponseSchema)` to create a new message. */ export const StopAgentSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 47); + messageDesc(file_compass_v1_compass, 50); /** * @generated from message compass.v1.ReloadAgentSessionRequest @@ -1462,7 +1520,7 @@ export type ReloadAgentSessionRequest = Message<"compass.v1.ReloadAgentSessionRe * Use `create(ReloadAgentSessionRequestSchema)` to create a new message. */ export const ReloadAgentSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 48); + messageDesc(file_compass_v1_compass, 51); /** * @generated from message compass.v1.ReloadAgentSessionResponse @@ -1481,7 +1539,7 @@ export type ReloadAgentSessionResponse = Message<"compass.v1.ReloadAgentSessionR * Use `create(ReloadAgentSessionResponseSchema)` to create a new message. */ export const ReloadAgentSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 49); + messageDesc(file_compass_v1_compass, 52); /** * GetAgentStatus: one session when `session_id` is set, else every live one. @@ -1502,7 +1560,7 @@ export type GetAgentStatusRequest = Message<"compass.v1.GetAgentStatusRequest"> * Use `create(GetAgentStatusRequestSchema)` to create a new message. */ export const GetAgentStatusRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 50); + messageDesc(file_compass_v1_compass, 53); /** * @generated from message compass.v1.GetAgentStatusResponse @@ -1519,7 +1577,7 @@ export type GetAgentStatusResponse = Message<"compass.v1.GetAgentStatusResponse" * Use `create(GetAgentStatusResponseSchema)` to create a new message. */ export const GetAgentStatusResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 51); + messageDesc(file_compass_v1_compass, 54); /** * IssueToken: the admin-only path to mint a bearer token for an account. @@ -1542,7 +1600,7 @@ export type IssueTokenRequest = Message<"compass.v1.IssueTokenRequest"> & { * Use `create(IssueTokenRequestSchema)` to create a new message. */ export const IssueTokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 52); + messageDesc(file_compass_v1_compass, 55); /** * @generated from message compass.v1.IssueTokenResponse @@ -1563,7 +1621,7 @@ export type IssueTokenResponse = Message<"compass.v1.IssueTokenResponse"> & { * Use `create(IssueTokenResponseSchema)` to create a new message. */ export const IssueTokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 53); + messageDesc(file_compass_v1_compass, 56); /** * RevokeToken: the admin-only path to withdraw a bearer token by its value. @@ -1587,7 +1645,7 @@ export type RevokeTokenRequest = Message<"compass.v1.RevokeTokenRequest"> & { * Use `create(RevokeTokenRequestSchema)` to create a new message. */ export const RevokeTokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 54); + messageDesc(file_compass_v1_compass, 57); /** * @generated from message compass.v1.RevokeTokenResponse @@ -1600,7 +1658,7 @@ export type RevokeTokenResponse = Message<"compass.v1.RevokeTokenResponse"> & { * Use `create(RevokeTokenResponseSchema)` to create a new message. */ export const RevokeTokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 55); + messageDesc(file_compass_v1_compass, 58); /** * PutAgentConfig: declare the fleet config bundle. The caller's identity is the @@ -1623,7 +1681,7 @@ export type PutAgentConfigRequest = Message<"compass.v1.PutAgentConfigRequest"> * Use `create(PutAgentConfigRequestSchema)` to create a new message. */ export const PutAgentConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 56); + messageDesc(file_compass_v1_compass, 59); /** * @generated from message compass.v1.PutAgentConfigResponse @@ -1644,7 +1702,7 @@ export type PutAgentConfigResponse = Message<"compass.v1.PutAgentConfigResponse" * Use `create(PutAgentConfigResponseSchema)` to create a new message. */ export const PutAgentConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 57); + messageDesc(file_compass_v1_compass, 60); /** * @generated from message compass.v1.GetAgentConfigInfoRequest @@ -1657,7 +1715,7 @@ export type GetAgentConfigInfoRequest = Message<"compass.v1.GetAgentConfigInfoRe * Use `create(GetAgentConfigInfoRequestSchema)` to create a new message. */ export const GetAgentConfigInfoRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 58); + messageDesc(file_compass_v1_compass, 61); /** * GetAgentConfigInfo: the current bundle's version and member names by top dir — @@ -1744,7 +1802,7 @@ export type GetAgentConfigInfoResponse = Message<"compass.v1.GetAgentConfigInfoR * Use `create(GetAgentConfigInfoResponseSchema)` to create a new message. */ export const GetAgentConfigInfoResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 59); + messageDesc(file_compass_v1_compass, 62); /** * @generated from message compass.v1.DeleteAgentConfigRequest @@ -1757,7 +1815,7 @@ export type DeleteAgentConfigRequest = Message<"compass.v1.DeleteAgentConfigRequ * Use `create(DeleteAgentConfigRequestSchema)` to create a new message. */ export const DeleteAgentConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 60); + messageDesc(file_compass_v1_compass, 63); /** * @generated from message compass.v1.DeleteAgentConfigResponse @@ -1770,7 +1828,7 @@ export type DeleteAgentConfigResponse = Message<"compass.v1.DeleteAgentConfigRes * Use `create(DeleteAgentConfigResponseSchema)` to create a new message. */ export const DeleteAgentConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 61); + messageDesc(file_compass_v1_compass, 64); /** * One candidate in a stable name's ordered chain: an upstream (provider, @@ -1798,7 +1856,7 @@ export type ModelCandidate = Message<"compass.v1.ModelCandidate"> & { * Use `create(ModelCandidateSchema)` to create a new message. */ export const ModelCandidateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 62); + messageDesc(file_compass_v1_compass, 65); /** * The listing metadata a stable name carries, taken from its primary candidate @@ -1842,7 +1900,7 @@ export type ModelMetadata = Message<"compass.v1.ModelMetadata"> & { * Use `create(ModelMetadataSchema)` to create a new message. */ export const ModelMetadataSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 63); + messageDesc(file_compass_v1_compass, 66); /** * One stable name's registry entry: a human display name, the ordered candidate @@ -1872,7 +1930,7 @@ export type ModelRegistryEntry = Message<"compass.v1.ModelRegistryEntry"> & { * Use `create(ModelRegistryEntrySchema)` to create a new message. */ export const ModelRegistryEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 64); + messageDesc(file_compass_v1_compass, 67); /** * The fleet model registry payload: the stable-name → entry map. The map key is @@ -1892,7 +1950,7 @@ export type ModelRegistry = Message<"compass.v1.ModelRegistry"> & { * Use `create(ModelRegistrySchema)` to create a new message. */ export const ModelRegistrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 65); + messageDesc(file_compass_v1_compass, 68); /** * PutModelRegistry: declare the fleet model registry. The caller's identity is @@ -1923,7 +1981,7 @@ export type PutModelRegistryRequest = Message<"compass.v1.PutModelRegistryReques * Use `create(PutModelRegistryRequestSchema)` to create a new message. */ export const PutModelRegistryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 66); + messageDesc(file_compass_v1_compass, 69); /** * @generated from message compass.v1.PutModelRegistryResponse @@ -1942,7 +2000,7 @@ export type PutModelRegistryResponse = Message<"compass.v1.PutModelRegistryRespo * Use `create(PutModelRegistryResponseSchema)` to create a new message. */ export const PutModelRegistryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 67); + messageDesc(file_compass_v1_compass, 70); /** * @generated from message compass.v1.GetModelRegistryRequest @@ -1955,7 +2013,7 @@ export type GetModelRegistryRequest = Message<"compass.v1.GetModelRegistryReques * Use `create(GetModelRegistryRequestSchema)` to create a new message. */ export const GetModelRegistryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 68); + messageDesc(file_compass_v1_compass, 71); /** * GetModelRegistry: the current registry version and payload. An unconfigured @@ -1980,7 +2038,7 @@ export type GetModelRegistryResponse = Message<"compass.v1.GetModelRegistryRespo * Use `create(GetModelRegistryResponseSchema)` to create a new message. */ export const GetModelRegistryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 69); + messageDesc(file_compass_v1_compass, 72); /** * @generated from message compass.v1.DeleteModelRegistryRequest @@ -1993,7 +2051,7 @@ export type DeleteModelRegistryRequest = Message<"compass.v1.DeleteModelRegistry * Use `create(DeleteModelRegistryRequestSchema)` to create a new message. */ export const DeleteModelRegistryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 70); + messageDesc(file_compass_v1_compass, 73); /** * @generated from message compass.v1.DeleteModelRegistryResponse @@ -2006,7 +2064,7 @@ export type DeleteModelRegistryResponse = Message<"compass.v1.DeleteModelRegistr * Use `create(DeleteModelRegistryResponseSchema)` to create a new message. */ export const DeleteModelRegistryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 71); + messageDesc(file_compass_v1_compass, 74); /** * The Compass agent attribution parsed from the owner header at ingestion — a @@ -2036,7 +2094,7 @@ export type AgentAttribution = Message<"compass.v1.AgentAttribution"> & { * Use `create(AgentAttributionSchema)` to create a new message. */ export const AgentAttributionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 72); + messageDesc(file_compass_v1_compass, 75); /** * @generated from message compass.v1.ForgeRef @@ -2060,7 +2118,7 @@ export type ForgeRef = Message<"compass.v1.ForgeRef"> & { * Use `create(ForgeRefSchema)` to create a new message. */ export const ForgeRefSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 73); + messageDesc(file_compass_v1_compass, 76); /** * The board unit: a Compass Issue — the forge issue's fields PLUS the Compass @@ -2218,7 +2276,7 @@ export type Issue = Message<"compass.v1.Issue"> & { * Use `create(IssueSchema)` to create a new message. */ export const IssueSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 74); + messageDesc(file_compass_v1_compass, 77); /** * A Compass pull request: the forge PR's fields plus the Compass agent @@ -2325,7 +2383,7 @@ export type PullRequest = Message<"compass.v1.PullRequest"> & { * Use `create(PullRequestSchema)` to create a new message. */ export const PullRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 75); + messageDesc(file_compass_v1_compass, 78); /** * The rolled-up CI + status-check state on a PR head — Compass-owned, populated @@ -2357,7 +2415,7 @@ export type ChecksSummary = Message<"compass.v1.ChecksSummary"> & { * Use `create(ChecksSummarySchema)` to create a new message. */ export const ChecksSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 76); + messageDesc(file_compass_v1_compass, 79); /** * @generated from message compass.v1.Check @@ -2391,7 +2449,7 @@ export type Check = Message<"compass.v1.Check"> & { * Use `create(CheckSchema)` to create a new message. */ export const CheckSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 77); + messageDesc(file_compass_v1_compass, 80); /** * A PR diffstat (files/additions/deletions), carried on PullRequest — a @@ -2421,7 +2479,7 @@ export type ChangedStats = Message<"compass.v1.ChangedStats"> & { * Use `create(ChangedStatsSchema)` to create a new message. */ export const ChangedStatsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 78); + messageDesc(file_compass_v1_compass, 81); /** * The linked tracker issue — the projection target (DL-032); the @@ -2462,7 +2520,7 @@ export type TrackerRef = Message<"compass.v1.TrackerRef"> & { * Use `create(TrackerRefSchema)` to create a new message. */ export const TrackerRefSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 79); + messageDesc(file_compass_v1_compass, 82); /** * The full review state the right-sidebar PR pane shows — every submitted review @@ -2509,7 +2567,7 @@ export type Review = Message<"compass.v1.Review"> & { * Use `create(ReviewSchema)` to create a new message. */ export const ReviewSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 80); + messageDesc(file_compass_v1_compass, 83); /** * @generated from message compass.v1.ReviewThread @@ -2538,7 +2596,7 @@ export type ReviewThread = Message<"compass.v1.ReviewThread"> & { * Use `create(ReviewThreadSchema)` to create a new message. */ export const ReviewThreadSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 81); + messageDesc(file_compass_v1_compass, 84); /** * @generated from message compass.v1.Comment @@ -2565,7 +2623,7 @@ export type Comment = Message<"compass.v1.Comment"> & { * Use `create(CommentSchema)` to create a new message. */ export const CommentSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 82); + messageDesc(file_compass_v1_compass, 85); /** * How a resolved secret is delivered into the agent container. Mirrors @@ -3342,6 +3400,22 @@ export const SecretsService: GenService<{ input: typeof DeleteServerSecretRequestSchema; output: typeof DeleteServerSecretResponseSchema; }, + /** + * List declared SERVER secrets by name with set/unset — names only, NEVER + * values. Admin-only, like its server-secret siblings: the rows are + * deployment-owned, so there is no per-account authorization to fall back on. + * Unlike ListSecrets, `is_set` is a PROVIDER PROBE, not a registry read: a + * server secret's row is self-declared at every boot while its value lives in + * the SecretSpec provider and is populated separately, so a declared name is + * routinely unset and the two states must be distinguishable. + * + * @generated from rpc compass.v1.SecretsService.ListServerSecrets + */ + listServerSecrets: { + methodKind: "unary"; + input: typeof ListServerSecretsRequestSchema; + output: typeof ListServerSecretsResponseSchema; + }, }> = /*@__PURE__*/ serviceDesc(file_compass_v1_compass, 1); diff --git a/packages/compass-client/src/gen/compass/v1/compass_pb.ts b/packages/compass-client/src/gen/compass/v1/compass_pb.ts index c88c7189c..2abbef53e 100644 --- a/packages/compass-client/src/gen/compass/v1/compass_pb.ts +++ b/packages/compass-client/src/gen/compass/v1/compass_pb.ts @@ -20,7 +20,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file compass/v1/compass.proto. */ export const file_compass_v1_compass: GenFile = /*@__PURE__*/ - fileDesc("Chhjb21wYXNzL3YxL2NvbXBhc3MucHJvdG8SCmNvbXBhc3MudjEiqAEKEFNldFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRISCgV2YWx1ZRgCIAEoCUIDgAEBEiwKCGRlbGl2ZXJ5GAMgASgOMhouY29tcGFzcy52MS5TZWNyZXREZWxpdmVyeRIkCgRraW5kGAQgASgOMhYuY29tcGFzcy52MS5TZWNyZXRLaW5kEhAKCHByb3ZpZGVyGAUgASgJEgwKBGhvc3QYBiABKAkiEwoRU2V0U2VjcmV0UmVzcG9uc2UiFAoSTGlzdFNlY3JldHNSZXF1ZXN0IkAKE0xpc3RTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLmNvbXBhc3MudjEuU2VjcmV0U3RhdHVzIqABCgxTZWNyZXRTdGF0dXMSDAoEbmFtZRgBIAEoCRIOCgZpc19zZXQYAiABKAgSLAoIZGVsaXZlcnkYAyABKA4yGi5jb21wYXNzLnYxLlNlY3JldERlbGl2ZXJ5EiQKBGtpbmQYBCABKA4yFi5jb21wYXNzLnYxLlNlY3JldEtpbmQSEAoIcHJvdmlkZXIYBSABKAkSDAoEaG9zdBgGIAEoCSIjChNEZWxldGVTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkiFgoURGVsZXRlU2VjcmV0UmVzcG9uc2UiOgoWU2V0U2VydmVyU2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJQgOAAQEiGQoXU2V0U2VydmVyU2VjcmV0UmVzcG9uc2UiKQoZRGVsZXRlU2VydmVyU2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJIhwKGkRlbGV0ZVNlcnZlclNlY3JldFJlc3BvbnNlIhYKFEdldFNlcnZlckluZm9SZXF1ZXN0Ij0KFUdldFNlcnZlckluZm9SZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJEhMKC2FwaV92ZXJzaW9uGAIgASgJIg8KDVdob0FtSVJlcXVlc3QiJAoOV2hvQW1JUmVzcG9uc2USEgoKYWNjb3VudF9pZBgBIAEoCSJDChZTdWJzY3JpYmVFdmVudHNSZXF1ZXN0EhEKCXNpbmNlX3NlcRgBIAEoBBIWCg5pbnN0YW5jZV9lcG9jaBgCIAEoBCLiAwoXU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2USCwoDc2VxGAEgASgEEhIKCmF0X3VuaXhfbXMYAiABKAMSFgoOaW5zdGFuY2VfZXBvY2gYAyABKAQSFAoMc25hcHNob3Rfc2VxGAQgASgEEjEKDXNlcnZlcl9zdGF0dXMYCiABKAsyGC5jb21wYXNzLnYxLlNlcnZlclN0YXR1c0gAEjUKD3Jlc3luY19yZXF1aXJlZBgLIAEoCzIaLmNvbXBhc3MudjEuUmVzeW5jUmVxdWlyZWRIABI+ChRhZ2VudF9zZXNzaW9uX3N0YXR1cxgMIAEoCzIeLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdHVzSAASPAoTYWdlbnRfbWVzc2FnZV9jaHVuaxgNIAEoCzIdLmNvbXBhc3MudjEuQWdlbnRNZXNzYWdlQ2h1bmtIABI0Cg9hZ2VudF90b29sX2NhbGwYDiABKAsyGS5jb21wYXNzLnYxLkFnZW50VG9vbENhbGxIABIrCgphZ2VudF9wbGFuGA8gASgLMhUuY29tcGFzcy52MS5BZ2VudFBsYW5IABIiCgVpc3N1ZRgQIAEoCzIRLmNvbXBhc3MudjEuSXNzdWVIAEIJCgdwYXlsb2FkIi4KFkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QSFAoMc25hcHNob3Rfc2VxGAEgASgEIjwKF0xpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEiEKBmlzc3VlcxgBIAMoCzIRLmNvbXBhc3MudjEuSXNzdWUiNgoMU2VydmVyU3RhdHVzEiYKBXN0YXRlGAEgASgOMhcuY29tcGFzcy52MS5TZXJ2ZXJTdGF0ZSIQCg5SZXN5bmNSZXF1aXJlZCJwChJBZ2VudFNlc3Npb25TdGF0dXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIsCgVzdGF0ZRgCIAEoDjIdLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdGUSGAoQYWdlbnRfYWNjb3VudF9pZBgDIAEoCSJJChFBZ2VudE1lc3NhZ2VDaHVuaxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHRleHQYAiABKAkSEgoKaXNfdGhvdWdodBgDIAEoCCJ5Cg1BZ2VudFRvb2xDYWxsEhIKCnNlc3Npb25faWQYASABKAkSFAoMdG9vbF9jYWxsX2lkGAIgASgJEg0KBXRpdGxlGAMgASgJEi8KBnN0YXR1cxgEIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cyJMCglBZ2VudFBsYW4SEgoKc2Vzc2lvbl9pZBgBIAEoCRIrCgdlbnRyaWVzGAIgAygLMhouY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeSJTCg5BZ2VudFBsYW5FbnRyeRIPCgdjb250ZW50GAEgASgJEjAKBnN0YXR1cxgCIAEoDjIgLmNvbXBhc3MudjEuQWdlbnRQbGFuRW50cnlTdGF0dXMi3wMKDFNlc3Npb25FdmVudBIQCghldmVudF9pZBgBIAEoCRISCgphdF91bml4X21zGAIgASgDEjoKDmFzc2lzdGFudF90ZXh0GAMgASgLMiAuY29tcGFzcy52MS5TZXNzaW9uQXNzaXN0YW50VGV4dEgAEi8KCHRoaW5raW5nGAQgASgLMhsuY29tcGFzcy52MS5TZXNzaW9uVGhpbmtpbmdIABIwCgl0b29sX2NhbGwYBSABKAsyGy5jb21wYXNzLnYxLlNlc3Npb25Ub29sQ2FsbEgAEj0KEHRvb2xfY2FsbF91cGRhdGUYBiABKAsyIS5jb21wYXNzLnYxLlNlc3Npb25Ub29sQ2FsbFVwZGF0ZUgAEicKBHBsYW4YByABKAsyFy5jb21wYXNzLnYxLlNlc3Npb25QbGFuSAASKwoGbm90aWNlGAggASgLMhkuY29tcGFzcy52MS5TZXNzaW9uTm90aWNlSAASOQoRc2Vzc2lvbl9pbmplY3Rpb24YCSABKAsyHC5jb21wYXNzLnYxLlNlc3Npb25JbmplY3Rpb25IABIxCg1zZXNzaW9uX2Vycm9yGAogASgLMhguY29tcGFzcy52MS5TZXNzaW9uRXJyb3JIAEIHCgVldmVudCI4ChRTZXNzaW9uQXNzaXN0YW50VGV4dBIMCgR0ZXh0GAEgASgJEhIKCm1lc3NhZ2VfaWQYAiABKAkiMwoPU2Vzc2lvblRoaW5raW5nEgwKBHRleHQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCSJnCg9TZXNzaW9uVG9vbENhbGwSFAoMdG9vbF9jYWxsX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEi8KBnN0YXR1cxgDIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cyKaAQoVU2Vzc2lvblRvb2xDYWxsVXBkYXRlEhQKDHRvb2xfY2FsbF9pZBgBIAEoCRIvCgZzdGF0dXMYAiABKA4yHy5jb21wYXNzLnYxLkFnZW50VG9vbENhbGxTdGF0dXMSDgoGb3V0cHV0GAMgASgJEioKBWRpZmZzGAQgAygLMhsuY29tcGFzcy52MS5TZXNzaW9uRmlsZURpZmYiVQoPU2Vzc2lvbkZpbGVEaWZmEgwKBHBhdGgYASABKAkSFQoIb2xkX3RleHQYAiABKAlIAIgBARIQCghuZXdfdGV4dBgDIAEoCUILCglfb2xkX3RleHQiOgoLU2Vzc2lvblBsYW4SKwoHZW50cmllcxgBIAMoCzIaLmNvbXBhc3MudjEuQWdlbnRQbGFuRW50cnkiOQoNU2Vzc2lvbk5vdGljZRIMCgR0ZXh0GAEgASgJEhEKBGxpbmsYAiABKAlIAIgBAUIHCgVfbGluayKDAQoQU2Vzc2lvbkluamVjdGlvbhIxCgdvcF9raW5kGAEgASgOMiAuY29tcGFzcy52MS5TZXNzaW9uSW5qZWN0aW9uS2luZBISCgptZXNzYWdlX2lkGAIgASgJEhMKC2Zyb21faGFuZGxlGAMgASgJEhMKC3RyYWNlcGFyZW50GAQgASgJImsKDFNlc3Npb25FcnJvchIqCgRraW5kGAEgASgOMhwuY29tcGFzcy52MS5TZXNzaW9uRXJyb3JLaW5kEg8KB21lc3NhZ2UYAiABKAkSEwoGc3RhdHVzGAMgASgFSACIAQFCCQoHX3N0YXR1cyIyChxTdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkifgoRQWdlbnRTZXNzaW9uRnJhbWUSEgoKc2Vzc2lvbl9pZBgBIAEoCRInCgVldmVudBgCIAEoCzIYLmNvbXBhc3MudjEuU2Vzc2lvbkV2ZW50EiwKBXN0YXRlGAMgASgOMh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0ZSJwCh5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QSFAoMYWdlbnRfaGFuZGxlGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAIgASgJEg8KB3BlcnNvbmEYAyABKAkSDAoEcm9sZRgEIAEoCSI5Ch9Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlc3BvbnNlEhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJIlAKG1JlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBIWCg5jb250YWluZXJfbmFtZRgBIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgCIAEoCSIeChxSZW1vdmVBZ2VudFdvcmtzcGFjZVJlc3BvbnNlImMKGFN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBIWCg5jb250YWluZXJfbmFtZRgBIAEoCRIZChFyZXN1bWVfc2Vzc2lvbl9pZBgDIAEoCUoECAIQA1IOaW5pdGlhbF9wcm9tcHQiLwoZU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJIloKEVNwYXduQWdlbnRSZXF1ZXN0EhQKDGFnZW50X2hhbmRsZRgBIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgDIAEoCUoECAIQA1IOaW5pdGlhbF9wcm9tcHQiQAoSU3Bhd25BZ2VudFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFgoOY29udGFpbmVyX25hbWUYAiABKAkiLQoXU3RvcEFnZW50U2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSIaChhTdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2UiLwoZUmVsb2FkQWdlbnRTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIjAKGlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkiKwoVR2V0QWdlbnRTdGF0dXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiSgoWR2V0QWdlbnRTdGF0dXNSZXNwb25zZRIwCghzdGF0dXNlcxgBIAMoCzIeLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdHVzIisKEUlzc3VlVG9rZW5SZXF1ZXN0EhYKDmFjY291bnRfaGFuZGxlGAEgASgJIiMKEklzc3VlVG9rZW5SZXNwb25zZRINCgV0b2tlbhgBIAEoCSIoChJSZXZva2VUb2tlblJlcXVlc3QSEgoFdG9rZW4YASABKAlCA4ABASIVChNSZXZva2VUb2tlblJlc3BvbnNlIicKFVB1dEFnZW50Q29uZmlnUmVxdWVzdBIOCgZidW5kbGUYASABKAwiKQoWUHV0QWdlbnRDb25maWdSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJIhsKGUdldEFnZW50Q29uZmlnSW5mb1JlcXVlc3Qi2gEKGkdldEFnZW50Q29uZmlnSW5mb1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSDgoGc2tpbGxzGAIgAygJEhIKCmV4dGVuc2lvbnMYAyADKAkSEwoLbWNwX3NlcnZlcnMYBCADKAkSFAoMaGFzX3NldHRpbmdzGAUgASgIEhUKDWhhc19hZ2VudHNfbWQYBiABKAgSDQoFcnVsZXMYByADKAkSEQoJc3ViYWdlbnRzGAggAygJEhIKCmhhc19tb2RlbHMYCSABKAgSDwoHcHJvbXB0cxgKIAMoCSIaChhEZWxldGVBZ2VudENvbmZpZ1JlcXVlc3QiGwoZRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZSI0Cg5Nb2RlbENhbmRpZGF0ZRIQCghwcm92aWRlchgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCSJxCg1Nb2RlbE1ldGFkYXRhEhYKDmNvbnRleHRfd2luZG93GAEgASgDEhwKFGlucHV0X2Nvc3RfbWljcm9fdXNkGAIgASgDEh0KFW91dHB1dF9jb3N0X21pY3JvX3VzZBgDIAEoAxILCgNhcGkYBCABKAkihwEKEk1vZGVsUmVnaXN0cnlFbnRyeRIUCgxkaXNwbGF5X25hbWUYASABKAkSLgoKY2FuZGlkYXRlcxgCIAMoCzIaLmNvbXBhc3MudjEuTW9kZWxDYW5kaWRhdGUSKwoIbWV0YWRhdGEYAyABKAsyGS5jb21wYXNzLnYxLk1vZGVsTWV0YWRhdGEimAEKDU1vZGVsUmVnaXN0cnkSNwoHZW50cmllcxgBIAMoCzImLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeS5FbnRyaWVzRW50cnkaTgoMRW50cmllc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoCzIeLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeUVudHJ5OgI4ASJgChdQdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBIrCghyZWdpc3RyeRgBIAEoCzIZLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeRIYChBleHBlY3RlZF92ZXJzaW9uGAIgASgDIisKGFB1dE1vZGVsUmVnaXN0cnlSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgDIhkKF0dldE1vZGVsUmVnaXN0cnlSZXF1ZXN0IlgKGEdldE1vZGVsUmVnaXN0cnlSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgDEisKCHJlZ2lzdHJ5GAIgASgLMhkuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5IhwKGkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXF1ZXN0Ih0KG0RlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZSIoChBBZ2VudEF0dHJpYnV0aW9uEhQKDGFnZW50X2hhbmRsZRgBIAEoCSJFCghGb3JnZVJlZhIrCghwcm92aWRlchgBIAEoDjIZLmNvbXBhc3MudjEuRm9yZ2VQcm92aWRlchIMCgRob3N0GAIgASgJItQDCgVJc3N1ZRIKCgJpZBgBIAEoCRIjCgVmb3JnZRgCIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgDIAEoCRIOCgZudW1iZXIYBCABKA0SDQoFdGl0bGUYBSABKAkSDAoEYm9keRgGIAEoCRITCgtmb3JnZV9zdGF0ZRgHIAEoCRILCgN1cmwYCCABKAkSKwoFYWdlbnQYCSABKAsyHC5jb21wYXNzLnYxLkFnZW50QXR0cmlidXRpb24SFQoNZm9yZ2VfYWNjb3VudBgKIAEoCRIOCgZsYWJlbHMYCyADKAkSLgoKdXBkYXRlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJQoFc3RhdGUYDCABKA4yFi5jb21wYXNzLnYxLklzc3VlU3RhdGUSEAoIcHJpb3JpdHkYDSABKAkSEAoIYXNzaWduZWUYDiABKAkSDwoHc3VtbWFyeRgPIAEoCRIOCgZicmFuY2gYECABKAkSJAoDcHJzGBEgAygLMhcuY29tcGFzcy52MS5QdWxsUmVxdWVzdBInCgd0cmFja2VyGBIgASgLMhYuY29tcGFzcy52MS5UcmFja2VyUmVmIp4DCgtQdWxsUmVxdWVzdBIjCgVmb3JnZRgBIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgCIAEoCRIOCgZudW1iZXIYAyABKA0SDQoFdGl0bGUYBCABKAkSEwoLZm9yZ2Vfc3RhdGUYBSABKAkSCwoDdXJsGAYgASgJEhAKCGhlYWRfcmVmGAcgASgJEhAKCGJhc2VfcmVmGAggASgJEisKBWFnZW50GAkgASgLMhwuY29tcGFzcy52MS5BZ2VudEF0dHJpYnV0aW9uEhUKDWZvcmdlX2FjY291bnQYCiABKAkSDQoFZHJhZnQYCyABKAgSKQoHY2hhbmdlZBgMIAEoCzIYLmNvbXBhc3MudjEuQ2hhbmdlZFN0YXRzEikKBmNoZWNrcxgNIAEoCzIZLmNvbXBhc3MudjEuQ2hlY2tzU3VtbWFyeRIjCgdyZXZpZXdzGA4gAygLMhIuY29tcGFzcy52MS5SZXZpZXcSKQoHdGhyZWFkcxgPIAMoCzIYLmNvbXBhc3MudjEuUmV2aWV3VGhyZWFkIlMKDUNoZWNrc1N1bW1hcnkSEAoIaGVhZF9zaGEYASABKAkSDQoFc3RhdGUYAiABKAkSIQoGY2hlY2tzGAMgAygLMhEuY29tcGFzcy52MS5DaGVjayJDCgVDaGVjaxIMCgRuYW1lGAEgASgJEg0KBXN0YXRlGAIgASgJEgsKA3VybBgDIAEoCRIQCghyZXF1aXJlZBgEIAEoCCJDCgxDaGFuZ2VkU3RhdHMSDQoFZmlsZXMYASABKA0SEQoJYWRkaXRpb25zGAIgASgNEhEKCWRlbGV0aW9ucxgDIAEoDSJDCgpUcmFja2VyUmVmEgwKBGtpbmQYASABKAkSCgoCaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEgsKA3VybBgEIAEoCSJHCgZSZXZpZXcSDgoGYXV0aG9yGAEgASgJEg4KBmlzX2JvdBgCIAEoCBIPCgd2ZXJkaWN0GAMgASgJEgwKBGJvZHkYBCABKAkiVQoMUmV2aWV3VGhyZWFkEgwKBHBhdGgYASABKAkSEAoIcmVzb2x2ZWQYAiABKAgSJQoIY29tbWVudHMYAyADKAsyEy5jb21wYXNzLnYxLkNvbW1lbnQiNwoHQ29tbWVudBIOCgZhdXRob3IYASABKAkSDgoGaXNfYm90GAIgASgIEgwKBGJvZHkYAyABKAkqZAoOU2VjcmV0RGVsaXZlcnkSHwobU0VDUkVUX0RFTElWRVJZX1VOU1BFQ0lGSUVEEAASGAoUU0VDUkVUX0RFTElWRVJZX0ZJTEUQARIXChNTRUNSRVRfREVMSVZFUllfRU5WEAIqcAoKU2VjcmV0S2luZBIbChdTRUNSRVRfS0lORF9VTlNQRUNJRklFRBAAEhcKE1NFQ1JFVF9LSU5EX0dFTkVSSUMQARIYChRTRUNSRVRfS0lORF9QUk9WSURFUhACEhIKDlNFQ1JFVF9LSU5EX0dIEAMqQwoLU2VydmVyU3RhdGUSHAoYU0VSVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASFgoSU0VSVkVSX1NUQVRFX1JFQURZEAEqggIKEUFnZW50U2Vzc2lvblN0YXRlEiMKH0FHRU5UX1NFU1NJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIgChxBR0VOVF9TRVNTSU9OX1NUQVRFX1NUQVJUSU5HEAESHQoZQUdFTlRfU0VTU0lPTl9TVEFURV9SRUFEWRACEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfV09SS0lORxADEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfU1RPUFBFRBAEEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfRVJST1JFRBAFEiQKIEFHRU5UX1NFU1NJT05fU1RBVEVfRElTQ09OTkVDVEVEEAYq0gEKE0FnZW50VG9vbENhbGxTdGF0dXMSJgoiQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfUEVORElORxABEiYKIkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfSU5fUFJPR1JFU1MQAhIkCiBBR0VOVF9UT09MX0NBTExfU1RBVFVTX0NPTVBMRVRFRBADEiEKHUFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfRkFJTEVEEAQqtAEKFEFnZW50UGxhbkVudHJ5U3RhdHVzEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIwofQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfUEVORElORxABEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX0lOX1BST0dSRVNTEAISJQohQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfQ09NUExFVEVEEAMqhAEKFFNlc3Npb25JbmplY3Rpb25LaW5kEiYKIlNFU1NJT05fSU5KRUNUSU9OX0tJTkRfVU5TUEVDSUZJRUQQABIgChxTRVNTSU9OX0lOSkVDVElPTl9LSU5EX1NURUVSEAESIgoeU0VTU0lPTl9JTkpFQ1RJT05fS0lORF9ERUxJVkVSEAIqdAoQU2Vzc2lvbkVycm9yS2luZBIiCh5TRVNTSU9OX0VSUk9SX0tJTkRfVU5TUEVDSUZJRUQQABIcChhTRVNTSU9OX0VSUk9SX0tJTkRfRVJST1IQARIeChpTRVNTSU9OX0VSUk9SX0tJTkRfQUJPUlRFRBACKvEBCgpJc3N1ZVN0YXRlEhsKF0lTU1VFX1NUQVRFX1VOU1BFQ0lGSUVEEAASFwoTSVNTVUVfU1RBVEVfQkFDS0xPRxABEhQKEElTU1VFX1NUQVRFX1RPRE8QAhIWChJJU1NVRV9TVEFURV9RVUVVRUQQAxIXChNJU1NVRV9TVEFURV9CTE9DS0VEEAQSGwoXSVNTVUVfU1RBVEVfSU5fUFJPR1JFU1MQBRIZChVJU1NVRV9TVEFURV9JTl9SRVZJRVcQBhIUChBJU1NVRV9TVEFURV9ET05FEAcSGAoUSVNTVUVfU1RBVEVfQVJDSElWRUQQCCqcAQoNRm9yZ2VQcm92aWRlchIeChpGT1JHRV9QUk9WSURFUl9VTlNQRUNJRklFRBAAEhkKFUZPUkdFX1BST1ZJREVSX0dJVEhVQhABEhkKFUZPUkdFX1BST1ZJREVSX0dJVExBQhACEhoKFkZPUkdFX1BST1ZJREVSX0ZPUkdFSk8QAxIZChVGT1JHRV9QUk9WSURFUl9MSU5FQVIQBDLTDgoOQ29tcGFzc1NlcnZpY2USVAoNR2V0U2VydmVySW5mbxIgLmNvbXBhc3MudjEuR2V0U2VydmVySW5mb1JlcXVlc3QaIS5jb21wYXNzLnYxLkdldFNlcnZlckluZm9SZXNwb25zZRI/CgZXaG9BbUkSGS5jb21wYXNzLnYxLldob0FtSVJlcXVlc3QaGi5jb21wYXNzLnYxLldob0FtSVJlc3BvbnNlElwKD1N1YnNjcmliZUV2ZW50cxIiLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVxdWVzdBojLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2UwARJaCg9MaXN0Qm9hcmRJc3N1ZXMSIi5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QaIy5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEnIKF1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlEiouY29tcGFzcy52MS5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QaKy5jb21wYXNzLnYxLlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USYAoRU3RhcnRBZ2VudFNlc3Npb24SJC5jb21wYXNzLnYxLlN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBolLmNvbXBhc3MudjEuU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRJLCgpTcGF3bkFnZW50Eh0uY29tcGFzcy52MS5TcGF3bkFnZW50UmVxdWVzdBoeLmNvbXBhc3MudjEuU3Bhd25BZ2VudFJlc3BvbnNlEl0KEFN0b3BBZ2VudFNlc3Npb24SIy5jb21wYXNzLnYxLlN0b3BBZ2VudFNlc3Npb25SZXF1ZXN0GiQuY29tcGFzcy52MS5TdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2USaQoUUmVtb3ZlQWdlbnRXb3Jrc3BhY2USJy5jb21wYXNzLnYxLlJlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBooLmNvbXBhc3MudjEuUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXNwb25zZRJjChJSZWxvYWRBZ2VudFNlc3Npb24SJS5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlcXVlc3QaJi5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlElcKDkdldEFnZW50U3RhdHVzEiEuY29tcGFzcy52MS5HZXRBZ2VudFN0YXR1c1JlcXVlc3QaIi5jb21wYXNzLnYxLkdldEFnZW50U3RhdHVzUmVzcG9uc2USYgoVU3Vic2NyaWJlQWdlbnRTZXNzaW9uEiguY29tcGFzcy52MS5TdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0Gh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25GcmFtZTABEksKCklzc3VlVG9rZW4SHS5jb21wYXNzLnYxLklzc3VlVG9rZW5SZXF1ZXN0Gh4uY29tcGFzcy52MS5Jc3N1ZVRva2VuUmVzcG9uc2USTgoLUmV2b2tlVG9rZW4SHi5jb21wYXNzLnYxLlJldm9rZVRva2VuUmVxdWVzdBofLmNvbXBhc3MudjEuUmV2b2tlVG9rZW5SZXNwb25zZRJXCg5QdXRBZ2VudENvbmZpZxIhLmNvbXBhc3MudjEuUHV0QWdlbnRDb25maWdSZXF1ZXN0GiIuY29tcGFzcy52MS5QdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEmMKEkdldEFnZW50Q29uZmlnSW5mbxIlLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdBomLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USYAoRRGVsZXRlQWdlbnRDb25maWcSJC5jb21wYXNzLnYxLkRlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdBolLmNvbXBhc3MudjEuRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZRJdChBQdXRNb2RlbFJlZ2lzdHJ5EiMuY29tcGFzcy52MS5QdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBokLmNvbXBhc3MudjEuUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEl0KEEdldE1vZGVsUmVnaXN0cnkSIy5jb21wYXNzLnYxLkdldE1vZGVsUmVnaXN0cnlSZXF1ZXN0GiQuY29tcGFzcy52MS5HZXRNb2RlbFJlZ2lzdHJ5UmVzcG9uc2USZgoTRGVsZXRlTW9kZWxSZWdpc3RyeRImLmNvbXBhc3MudjEuRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QaJy5jb21wYXNzLnYxLkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZTK+AwoOU2VjcmV0c1NlcnZpY2USSAoJU2V0U2VjcmV0EhwuY29tcGFzcy52MS5TZXRTZWNyZXRSZXF1ZXN0Gh0uY29tcGFzcy52MS5TZXRTZWNyZXRSZXNwb25zZRJOCgtMaXN0U2VjcmV0cxIeLmNvbXBhc3MudjEuTGlzdFNlY3JldHNSZXF1ZXN0Gh8uY29tcGFzcy52MS5MaXN0U2VjcmV0c1Jlc3BvbnNlElEKDERlbGV0ZVNlY3JldBIfLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVxdWVzdBogLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVzcG9uc2USWgoPU2V0U2VydmVyU2VjcmV0EiIuY29tcGFzcy52MS5TZXRTZXJ2ZXJTZWNyZXRSZXF1ZXN0GiMuY29tcGFzcy52MS5TZXRTZXJ2ZXJTZWNyZXRSZXNwb25zZRJjChJEZWxldGVTZXJ2ZXJTZWNyZXQSJS5jb21wYXNzLnYxLkRlbGV0ZVNlcnZlclNlY3JldFJlcXVlc3QaJi5jb21wYXNzLnYxLkRlbGV0ZVNlcnZlclNlY3JldFJlc3BvbnNlYgZwcm90bzM", [file_google_protobuf_timestamp]); + fileDesc("Chhjb21wYXNzL3YxL2NvbXBhc3MucHJvdG8SCmNvbXBhc3MudjEiqAEKEFNldFNlY3JldFJlcXVlc3QSDAoEbmFtZRgBIAEoCRISCgV2YWx1ZRgCIAEoCUIDgAEBEiwKCGRlbGl2ZXJ5GAMgASgOMhouY29tcGFzcy52MS5TZWNyZXREZWxpdmVyeRIkCgRraW5kGAQgASgOMhYuY29tcGFzcy52MS5TZWNyZXRLaW5kEhAKCHByb3ZpZGVyGAUgASgJEgwKBGhvc3QYBiABKAkiEwoRU2V0U2VjcmV0UmVzcG9uc2UiFAoSTGlzdFNlY3JldHNSZXF1ZXN0IkAKE0xpc3RTZWNyZXRzUmVzcG9uc2USKQoHc2VjcmV0cxgBIAMoCzIYLmNvbXBhc3MudjEuU2VjcmV0U3RhdHVzIqABCgxTZWNyZXRTdGF0dXMSDAoEbmFtZRgBIAEoCRIOCgZpc19zZXQYAiABKAgSLAoIZGVsaXZlcnkYAyABKA4yGi5jb21wYXNzLnYxLlNlY3JldERlbGl2ZXJ5EiQKBGtpbmQYBCABKA4yFi5jb21wYXNzLnYxLlNlY3JldEtpbmQSEAoIcHJvdmlkZXIYBSABKAkSDAoEaG9zdBgGIAEoCSIjChNEZWxldGVTZWNyZXRSZXF1ZXN0EgwKBG5hbWUYASABKAkiFgoURGVsZXRlU2VjcmV0UmVzcG9uc2UiOgoWU2V0U2VydmVyU2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJQgOAAQEiGQoXU2V0U2VydmVyU2VjcmV0UmVzcG9uc2UiKQoZRGVsZXRlU2VydmVyU2VjcmV0UmVxdWVzdBIMCgRuYW1lGAEgASgJIhwKGkRlbGV0ZVNlcnZlclNlY3JldFJlc3BvbnNlIhoKGExpc3RTZXJ2ZXJTZWNyZXRzUmVxdWVzdCJTChlMaXN0U2VydmVyU2VjcmV0c1Jlc3BvbnNlEjYKDnNlcnZlcl9zZWNyZXRzGAEgAygLMh4uY29tcGFzcy52MS5TZXJ2ZXJTZWNyZXRTdGF0dXMiMgoSU2VydmVyU2VjcmV0U3RhdHVzEgwKBG5hbWUYASABKAkSDgoGaXNfc2V0GAIgASgIIhYKFEdldFNlcnZlckluZm9SZXF1ZXN0Ij0KFUdldFNlcnZlckluZm9SZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJEhMKC2FwaV92ZXJzaW9uGAIgASgJIg8KDVdob0FtSVJlcXVlc3QiJAoOV2hvQW1JUmVzcG9uc2USEgoKYWNjb3VudF9pZBgBIAEoCSJDChZTdWJzY3JpYmVFdmVudHNSZXF1ZXN0EhEKCXNpbmNlX3NlcRgBIAEoBBIWCg5pbnN0YW5jZV9lcG9jaBgCIAEoBCLiAwoXU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2USCwoDc2VxGAEgASgEEhIKCmF0X3VuaXhfbXMYAiABKAMSFgoOaW5zdGFuY2VfZXBvY2gYAyABKAQSFAoMc25hcHNob3Rfc2VxGAQgASgEEjEKDXNlcnZlcl9zdGF0dXMYCiABKAsyGC5jb21wYXNzLnYxLlNlcnZlclN0YXR1c0gAEjUKD3Jlc3luY19yZXF1aXJlZBgLIAEoCzIaLmNvbXBhc3MudjEuUmVzeW5jUmVxdWlyZWRIABI+ChRhZ2VudF9zZXNzaW9uX3N0YXR1cxgMIAEoCzIeLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdHVzSAASPAoTYWdlbnRfbWVzc2FnZV9jaHVuaxgNIAEoCzIdLmNvbXBhc3MudjEuQWdlbnRNZXNzYWdlQ2h1bmtIABI0Cg9hZ2VudF90b29sX2NhbGwYDiABKAsyGS5jb21wYXNzLnYxLkFnZW50VG9vbENhbGxIABIrCgphZ2VudF9wbGFuGA8gASgLMhUuY29tcGFzcy52MS5BZ2VudFBsYW5IABIiCgVpc3N1ZRgQIAEoCzIRLmNvbXBhc3MudjEuSXNzdWVIAEIJCgdwYXlsb2FkIi4KFkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QSFAoMc25hcHNob3Rfc2VxGAEgASgEIjwKF0xpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEiEKBmlzc3VlcxgBIAMoCzIRLmNvbXBhc3MudjEuSXNzdWUiNgoMU2VydmVyU3RhdHVzEiYKBXN0YXRlGAEgASgOMhcuY29tcGFzcy52MS5TZXJ2ZXJTdGF0ZSIQCg5SZXN5bmNSZXF1aXJlZCJwChJBZ2VudFNlc3Npb25TdGF0dXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIsCgVzdGF0ZRgCIAEoDjIdLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdGUSGAoQYWdlbnRfYWNjb3VudF9pZBgDIAEoCSJJChFBZ2VudE1lc3NhZ2VDaHVuaxISCgpzZXNzaW9uX2lkGAEgASgJEgwKBHRleHQYAiABKAkSEgoKaXNfdGhvdWdodBgDIAEoCCJ5Cg1BZ2VudFRvb2xDYWxsEhIKCnNlc3Npb25faWQYASABKAkSFAoMdG9vbF9jYWxsX2lkGAIgASgJEg0KBXRpdGxlGAMgASgJEi8KBnN0YXR1cxgEIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cyJMCglBZ2VudFBsYW4SEgoKc2Vzc2lvbl9pZBgBIAEoCRIrCgdlbnRyaWVzGAIgAygLMhouY29tcGFzcy52MS5BZ2VudFBsYW5FbnRyeSJTCg5BZ2VudFBsYW5FbnRyeRIPCgdjb250ZW50GAEgASgJEjAKBnN0YXR1cxgCIAEoDjIgLmNvbXBhc3MudjEuQWdlbnRQbGFuRW50cnlTdGF0dXMi3wMKDFNlc3Npb25FdmVudBIQCghldmVudF9pZBgBIAEoCRISCgphdF91bml4X21zGAIgASgDEjoKDmFzc2lzdGFudF90ZXh0GAMgASgLMiAuY29tcGFzcy52MS5TZXNzaW9uQXNzaXN0YW50VGV4dEgAEi8KCHRoaW5raW5nGAQgASgLMhsuY29tcGFzcy52MS5TZXNzaW9uVGhpbmtpbmdIABIwCgl0b29sX2NhbGwYBSABKAsyGy5jb21wYXNzLnYxLlNlc3Npb25Ub29sQ2FsbEgAEj0KEHRvb2xfY2FsbF91cGRhdGUYBiABKAsyIS5jb21wYXNzLnYxLlNlc3Npb25Ub29sQ2FsbFVwZGF0ZUgAEicKBHBsYW4YByABKAsyFy5jb21wYXNzLnYxLlNlc3Npb25QbGFuSAASKwoGbm90aWNlGAggASgLMhkuY29tcGFzcy52MS5TZXNzaW9uTm90aWNlSAASOQoRc2Vzc2lvbl9pbmplY3Rpb24YCSABKAsyHC5jb21wYXNzLnYxLlNlc3Npb25JbmplY3Rpb25IABIxCg1zZXNzaW9uX2Vycm9yGAogASgLMhguY29tcGFzcy52MS5TZXNzaW9uRXJyb3JIAEIHCgVldmVudCI4ChRTZXNzaW9uQXNzaXN0YW50VGV4dBIMCgR0ZXh0GAEgASgJEhIKCm1lc3NhZ2VfaWQYAiABKAkiMwoPU2Vzc2lvblRoaW5raW5nEgwKBHRleHQYASABKAkSEgoKbWVzc2FnZV9pZBgCIAEoCSJnCg9TZXNzaW9uVG9vbENhbGwSFAoMdG9vbF9jYWxsX2lkGAEgASgJEg0KBXRpdGxlGAIgASgJEi8KBnN0YXR1cxgDIAEoDjIfLmNvbXBhc3MudjEuQWdlbnRUb29sQ2FsbFN0YXR1cyKaAQoVU2Vzc2lvblRvb2xDYWxsVXBkYXRlEhQKDHRvb2xfY2FsbF9pZBgBIAEoCRIvCgZzdGF0dXMYAiABKA4yHy5jb21wYXNzLnYxLkFnZW50VG9vbENhbGxTdGF0dXMSDgoGb3V0cHV0GAMgASgJEioKBWRpZmZzGAQgAygLMhsuY29tcGFzcy52MS5TZXNzaW9uRmlsZURpZmYiVQoPU2Vzc2lvbkZpbGVEaWZmEgwKBHBhdGgYASABKAkSFQoIb2xkX3RleHQYAiABKAlIAIgBARIQCghuZXdfdGV4dBgDIAEoCUILCglfb2xkX3RleHQiOgoLU2Vzc2lvblBsYW4SKwoHZW50cmllcxgBIAMoCzIaLmNvbXBhc3MudjEuQWdlbnRQbGFuRW50cnkiOQoNU2Vzc2lvbk5vdGljZRIMCgR0ZXh0GAEgASgJEhEKBGxpbmsYAiABKAlIAIgBAUIHCgVfbGluayKDAQoQU2Vzc2lvbkluamVjdGlvbhIxCgdvcF9raW5kGAEgASgOMiAuY29tcGFzcy52MS5TZXNzaW9uSW5qZWN0aW9uS2luZBISCgptZXNzYWdlX2lkGAIgASgJEhMKC2Zyb21faGFuZGxlGAMgASgJEhMKC3RyYWNlcGFyZW50GAQgASgJImsKDFNlc3Npb25FcnJvchIqCgRraW5kGAEgASgOMhwuY29tcGFzcy52MS5TZXNzaW9uRXJyb3JLaW5kEg8KB21lc3NhZ2UYAiABKAkSEwoGc3RhdHVzGAMgASgFSACIAQFCCQoHX3N0YXR1cyIyChxTdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkifgoRQWdlbnRTZXNzaW9uRnJhbWUSEgoKc2Vzc2lvbl9pZBgBIAEoCRInCgVldmVudBgCIAEoCzIYLmNvbXBhc3MudjEuU2Vzc2lvbkV2ZW50EiwKBXN0YXRlGAMgASgOMh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25TdGF0ZSJwCh5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QSFAoMYWdlbnRfaGFuZGxlGAEgASgJEhkKEWNsaWVudF9yZXF1ZXN0X2lkGAIgASgJEg8KB3BlcnNvbmEYAyABKAkSDAoEcm9sZRgEIAEoCSI5Ch9Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlc3BvbnNlEhYKDmNvbnRhaW5lcl9uYW1lGAEgASgJIlAKG1JlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBIWCg5jb250YWluZXJfbmFtZRgBIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgCIAEoCSIeChxSZW1vdmVBZ2VudFdvcmtzcGFjZVJlc3BvbnNlImMKGFN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBIWCg5jb250YWluZXJfbmFtZRgBIAEoCRIZChFyZXN1bWVfc2Vzc2lvbl9pZBgDIAEoCUoECAIQA1IOaW5pdGlhbF9wcm9tcHQiLwoZU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRISCgpzZXNzaW9uX2lkGAEgASgJIloKEVNwYXduQWdlbnRSZXF1ZXN0EhQKDGFnZW50X2hhbmRsZRgBIAEoCRIZChFjbGllbnRfcmVxdWVzdF9pZBgDIAEoCUoECAIQA1IOaW5pdGlhbF9wcm9tcHQiQAoSU3Bhd25BZ2VudFJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkSFgoOY29udGFpbmVyX25hbWUYAiABKAkiLQoXU3RvcEFnZW50U2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCSIaChhTdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2UiLwoZUmVsb2FkQWdlbnRTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJIjAKGlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlEhIKCnNlc3Npb25faWQYASABKAkiKwoVR2V0QWdlbnRTdGF0dXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkiSgoWR2V0QWdlbnRTdGF0dXNSZXNwb25zZRIwCghzdGF0dXNlcxgBIAMoCzIeLmNvbXBhc3MudjEuQWdlbnRTZXNzaW9uU3RhdHVzIisKEUlzc3VlVG9rZW5SZXF1ZXN0EhYKDmFjY291bnRfaGFuZGxlGAEgASgJIiMKEklzc3VlVG9rZW5SZXNwb25zZRINCgV0b2tlbhgBIAEoCSIoChJSZXZva2VUb2tlblJlcXVlc3QSEgoFdG9rZW4YASABKAlCA4ABASIVChNSZXZva2VUb2tlblJlc3BvbnNlIicKFVB1dEFnZW50Q29uZmlnUmVxdWVzdBIOCgZidW5kbGUYASABKAwiKQoWUHV0QWdlbnRDb25maWdSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgJIhsKGUdldEFnZW50Q29uZmlnSW5mb1JlcXVlc3Qi2gEKGkdldEFnZW50Q29uZmlnSW5mb1Jlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkSDgoGc2tpbGxzGAIgAygJEhIKCmV4dGVuc2lvbnMYAyADKAkSEwoLbWNwX3NlcnZlcnMYBCADKAkSFAoMaGFzX3NldHRpbmdzGAUgASgIEhUKDWhhc19hZ2VudHNfbWQYBiABKAgSDQoFcnVsZXMYByADKAkSEQoJc3ViYWdlbnRzGAggAygJEhIKCmhhc19tb2RlbHMYCSABKAgSDwoHcHJvbXB0cxgKIAMoCSIaChhEZWxldGVBZ2VudENvbmZpZ1JlcXVlc3QiGwoZRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZSI0Cg5Nb2RlbENhbmRpZGF0ZRIQCghwcm92aWRlchgBIAEoCRIQCghtb2RlbF9pZBgCIAEoCSJxCg1Nb2RlbE1ldGFkYXRhEhYKDmNvbnRleHRfd2luZG93GAEgASgDEhwKFGlucHV0X2Nvc3RfbWljcm9fdXNkGAIgASgDEh0KFW91dHB1dF9jb3N0X21pY3JvX3VzZBgDIAEoAxILCgNhcGkYBCABKAkihwEKEk1vZGVsUmVnaXN0cnlFbnRyeRIUCgxkaXNwbGF5X25hbWUYASABKAkSLgoKY2FuZGlkYXRlcxgCIAMoCzIaLmNvbXBhc3MudjEuTW9kZWxDYW5kaWRhdGUSKwoIbWV0YWRhdGEYAyABKAsyGS5jb21wYXNzLnYxLk1vZGVsTWV0YWRhdGEimAEKDU1vZGVsUmVnaXN0cnkSNwoHZW50cmllcxgBIAMoCzImLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeS5FbnRyaWVzRW50cnkaTgoMRW50cmllc0VudHJ5EgsKA2tleRgBIAEoCRItCgV2YWx1ZRgCIAEoCzIeLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeUVudHJ5OgI4ASJgChdQdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBIrCghyZWdpc3RyeRgBIAEoCzIZLmNvbXBhc3MudjEuTW9kZWxSZWdpc3RyeRIYChBleHBlY3RlZF92ZXJzaW9uGAIgASgDIisKGFB1dE1vZGVsUmVnaXN0cnlSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgDIhkKF0dldE1vZGVsUmVnaXN0cnlSZXF1ZXN0IlgKGEdldE1vZGVsUmVnaXN0cnlSZXNwb25zZRIPCgd2ZXJzaW9uGAEgASgDEisKCHJlZ2lzdHJ5GAIgASgLMhkuY29tcGFzcy52MS5Nb2RlbFJlZ2lzdHJ5IhwKGkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXF1ZXN0Ih0KG0RlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZSIoChBBZ2VudEF0dHJpYnV0aW9uEhQKDGFnZW50X2hhbmRsZRgBIAEoCSJFCghGb3JnZVJlZhIrCghwcm92aWRlchgBIAEoDjIZLmNvbXBhc3MudjEuRm9yZ2VQcm92aWRlchIMCgRob3N0GAIgASgJItQDCgVJc3N1ZRIKCgJpZBgBIAEoCRIjCgVmb3JnZRgCIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgDIAEoCRIOCgZudW1iZXIYBCABKA0SDQoFdGl0bGUYBSABKAkSDAoEYm9keRgGIAEoCRITCgtmb3JnZV9zdGF0ZRgHIAEoCRILCgN1cmwYCCABKAkSKwoFYWdlbnQYCSABKAsyHC5jb21wYXNzLnYxLkFnZW50QXR0cmlidXRpb24SFQoNZm9yZ2VfYWNjb3VudBgKIAEoCRIOCgZsYWJlbHMYCyADKAkSLgoKdXBkYXRlZF9hdBgTIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJQoFc3RhdGUYDCABKA4yFi5jb21wYXNzLnYxLklzc3VlU3RhdGUSEAoIcHJpb3JpdHkYDSABKAkSEAoIYXNzaWduZWUYDiABKAkSDwoHc3VtbWFyeRgPIAEoCRIOCgZicmFuY2gYECABKAkSJAoDcHJzGBEgAygLMhcuY29tcGFzcy52MS5QdWxsUmVxdWVzdBInCgd0cmFja2VyGBIgASgLMhYuY29tcGFzcy52MS5UcmFja2VyUmVmIp4DCgtQdWxsUmVxdWVzdBIjCgVmb3JnZRgBIAEoCzIULmNvbXBhc3MudjEuRm9yZ2VSZWYSDAoEcmVwbxgCIAEoCRIOCgZudW1iZXIYAyABKA0SDQoFdGl0bGUYBCABKAkSEwoLZm9yZ2Vfc3RhdGUYBSABKAkSCwoDdXJsGAYgASgJEhAKCGhlYWRfcmVmGAcgASgJEhAKCGJhc2VfcmVmGAggASgJEisKBWFnZW50GAkgASgLMhwuY29tcGFzcy52MS5BZ2VudEF0dHJpYnV0aW9uEhUKDWZvcmdlX2FjY291bnQYCiABKAkSDQoFZHJhZnQYCyABKAgSKQoHY2hhbmdlZBgMIAEoCzIYLmNvbXBhc3MudjEuQ2hhbmdlZFN0YXRzEikKBmNoZWNrcxgNIAEoCzIZLmNvbXBhc3MudjEuQ2hlY2tzU3VtbWFyeRIjCgdyZXZpZXdzGA4gAygLMhIuY29tcGFzcy52MS5SZXZpZXcSKQoHdGhyZWFkcxgPIAMoCzIYLmNvbXBhc3MudjEuUmV2aWV3VGhyZWFkIlMKDUNoZWNrc1N1bW1hcnkSEAoIaGVhZF9zaGEYASABKAkSDQoFc3RhdGUYAiABKAkSIQoGY2hlY2tzGAMgAygLMhEuY29tcGFzcy52MS5DaGVjayJDCgVDaGVjaxIMCgRuYW1lGAEgASgJEg0KBXN0YXRlGAIgASgJEgsKA3VybBgDIAEoCRIQCghyZXF1aXJlZBgEIAEoCCJDCgxDaGFuZ2VkU3RhdHMSDQoFZmlsZXMYASABKA0SEQoJYWRkaXRpb25zGAIgASgNEhEKCWRlbGV0aW9ucxgDIAEoDSJDCgpUcmFja2VyUmVmEgwKBGtpbmQYASABKAkSCgoCaWQYAiABKAkSDgoGc3RhdHVzGAMgASgJEgsKA3VybBgEIAEoCSJHCgZSZXZpZXcSDgoGYXV0aG9yGAEgASgJEg4KBmlzX2JvdBgCIAEoCBIPCgd2ZXJkaWN0GAMgASgJEgwKBGJvZHkYBCABKAkiVQoMUmV2aWV3VGhyZWFkEgwKBHBhdGgYASABKAkSEAoIcmVzb2x2ZWQYAiABKAgSJQoIY29tbWVudHMYAyADKAsyEy5jb21wYXNzLnYxLkNvbW1lbnQiNwoHQ29tbWVudBIOCgZhdXRob3IYASABKAkSDgoGaXNfYm90GAIgASgIEgwKBGJvZHkYAyABKAkqZAoOU2VjcmV0RGVsaXZlcnkSHwobU0VDUkVUX0RFTElWRVJZX1VOU1BFQ0lGSUVEEAASGAoUU0VDUkVUX0RFTElWRVJZX0ZJTEUQARIXChNTRUNSRVRfREVMSVZFUllfRU5WEAIqcAoKU2VjcmV0S2luZBIbChdTRUNSRVRfS0lORF9VTlNQRUNJRklFRBAAEhcKE1NFQ1JFVF9LSU5EX0dFTkVSSUMQARIYChRTRUNSRVRfS0lORF9QUk9WSURFUhACEhIKDlNFQ1JFVF9LSU5EX0dIEAMqQwoLU2VydmVyU3RhdGUSHAoYU0VSVkVSX1NUQVRFX1VOU1BFQ0lGSUVEEAASFgoSU0VSVkVSX1NUQVRFX1JFQURZEAEqggIKEUFnZW50U2Vzc2lvblN0YXRlEiMKH0FHRU5UX1NFU1NJT05fU1RBVEVfVU5TUEVDSUZJRUQQABIgChxBR0VOVF9TRVNTSU9OX1NUQVRFX1NUQVJUSU5HEAESHQoZQUdFTlRfU0VTU0lPTl9TVEFURV9SRUFEWRACEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfV09SS0lORxADEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfU1RPUFBFRBAEEh8KG0FHRU5UX1NFU1NJT05fU1RBVEVfRVJST1JFRBAFEiQKIEFHRU5UX1NFU1NJT05fU1RBVEVfRElTQ09OTkVDVEVEEAYq0gEKE0FnZW50VG9vbENhbGxTdGF0dXMSJgoiQUdFTlRfVE9PTF9DQUxMX1NUQVRVU19VTlNQRUNJRklFRBAAEiIKHkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfUEVORElORxABEiYKIkFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfSU5fUFJPR1JFU1MQAhIkCiBBR0VOVF9UT09MX0NBTExfU1RBVFVTX0NPTVBMRVRFRBADEiEKHUFHRU5UX1RPT0xfQ0FMTF9TVEFUVVNfRkFJTEVEEAQqtAEKFEFnZW50UGxhbkVudHJ5U3RhdHVzEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIwofQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfUEVORElORxABEicKI0FHRU5UX1BMQU5fRU5UUllfU1RBVFVTX0lOX1BST0dSRVNTEAISJQohQUdFTlRfUExBTl9FTlRSWV9TVEFUVVNfQ09NUExFVEVEEAMqhAEKFFNlc3Npb25JbmplY3Rpb25LaW5kEiYKIlNFU1NJT05fSU5KRUNUSU9OX0tJTkRfVU5TUEVDSUZJRUQQABIgChxTRVNTSU9OX0lOSkVDVElPTl9LSU5EX1NURUVSEAESIgoeU0VTU0lPTl9JTkpFQ1RJT05fS0lORF9ERUxJVkVSEAIqdAoQU2Vzc2lvbkVycm9yS2luZBIiCh5TRVNTSU9OX0VSUk9SX0tJTkRfVU5TUEVDSUZJRUQQABIcChhTRVNTSU9OX0VSUk9SX0tJTkRfRVJST1IQARIeChpTRVNTSU9OX0VSUk9SX0tJTkRfQUJPUlRFRBACKvEBCgpJc3N1ZVN0YXRlEhsKF0lTU1VFX1NUQVRFX1VOU1BFQ0lGSUVEEAASFwoTSVNTVUVfU1RBVEVfQkFDS0xPRxABEhQKEElTU1VFX1NUQVRFX1RPRE8QAhIWChJJU1NVRV9TVEFURV9RVUVVRUQQAxIXChNJU1NVRV9TVEFURV9CTE9DS0VEEAQSGwoXSVNTVUVfU1RBVEVfSU5fUFJPR1JFU1MQBRIZChVJU1NVRV9TVEFURV9JTl9SRVZJRVcQBhIUChBJU1NVRV9TVEFURV9ET05FEAcSGAoUSVNTVUVfU1RBVEVfQVJDSElWRUQQCCqcAQoNRm9yZ2VQcm92aWRlchIeChpGT1JHRV9QUk9WSURFUl9VTlNQRUNJRklFRBAAEhkKFUZPUkdFX1BST1ZJREVSX0dJVEhVQhABEhkKFUZPUkdFX1BST1ZJREVSX0dJVExBQhACEhoKFkZPUkdFX1BST1ZJREVSX0ZPUkdFSk8QAxIZChVGT1JHRV9QUk9WSURFUl9MSU5FQVIQBDLTDgoOQ29tcGFzc1NlcnZpY2USVAoNR2V0U2VydmVySW5mbxIgLmNvbXBhc3MudjEuR2V0U2VydmVySW5mb1JlcXVlc3QaIS5jb21wYXNzLnYxLkdldFNlcnZlckluZm9SZXNwb25zZRI/CgZXaG9BbUkSGS5jb21wYXNzLnYxLldob0FtSVJlcXVlc3QaGi5jb21wYXNzLnYxLldob0FtSVJlc3BvbnNlElwKD1N1YnNjcmliZUV2ZW50cxIiLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVxdWVzdBojLmNvbXBhc3MudjEuU3Vic2NyaWJlRXZlbnRzUmVzcG9uc2UwARJaCg9MaXN0Qm9hcmRJc3N1ZXMSIi5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1JlcXVlc3QaIy5jb21wYXNzLnYxLkxpc3RCb2FyZElzc3Vlc1Jlc3BvbnNlEnIKF1Byb3Zpc2lvbkFnZW50V29ya3NwYWNlEiouY29tcGFzcy52MS5Qcm92aXNpb25BZ2VudFdvcmtzcGFjZVJlcXVlc3QaKy5jb21wYXNzLnYxLlByb3Zpc2lvbkFnZW50V29ya3NwYWNlUmVzcG9uc2USYAoRU3RhcnRBZ2VudFNlc3Npb24SJC5jb21wYXNzLnYxLlN0YXJ0QWdlbnRTZXNzaW9uUmVxdWVzdBolLmNvbXBhc3MudjEuU3RhcnRBZ2VudFNlc3Npb25SZXNwb25zZRJLCgpTcGF3bkFnZW50Eh0uY29tcGFzcy52MS5TcGF3bkFnZW50UmVxdWVzdBoeLmNvbXBhc3MudjEuU3Bhd25BZ2VudFJlc3BvbnNlEl0KEFN0b3BBZ2VudFNlc3Npb24SIy5jb21wYXNzLnYxLlN0b3BBZ2VudFNlc3Npb25SZXF1ZXN0GiQuY29tcGFzcy52MS5TdG9wQWdlbnRTZXNzaW9uUmVzcG9uc2USaQoUUmVtb3ZlQWdlbnRXb3Jrc3BhY2USJy5jb21wYXNzLnYxLlJlbW92ZUFnZW50V29ya3NwYWNlUmVxdWVzdBooLmNvbXBhc3MudjEuUmVtb3ZlQWdlbnRXb3Jrc3BhY2VSZXNwb25zZRJjChJSZWxvYWRBZ2VudFNlc3Npb24SJS5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlcXVlc3QaJi5jb21wYXNzLnYxLlJlbG9hZEFnZW50U2Vzc2lvblJlc3BvbnNlElcKDkdldEFnZW50U3RhdHVzEiEuY29tcGFzcy52MS5HZXRBZ2VudFN0YXR1c1JlcXVlc3QaIi5jb21wYXNzLnYxLkdldEFnZW50U3RhdHVzUmVzcG9uc2USYgoVU3Vic2NyaWJlQWdlbnRTZXNzaW9uEiguY29tcGFzcy52MS5TdWJzY3JpYmVBZ2VudFNlc3Npb25SZXF1ZXN0Gh0uY29tcGFzcy52MS5BZ2VudFNlc3Npb25GcmFtZTABEksKCklzc3VlVG9rZW4SHS5jb21wYXNzLnYxLklzc3VlVG9rZW5SZXF1ZXN0Gh4uY29tcGFzcy52MS5Jc3N1ZVRva2VuUmVzcG9uc2USTgoLUmV2b2tlVG9rZW4SHi5jb21wYXNzLnYxLlJldm9rZVRva2VuUmVxdWVzdBofLmNvbXBhc3MudjEuUmV2b2tlVG9rZW5SZXNwb25zZRJXCg5QdXRBZ2VudENvbmZpZxIhLmNvbXBhc3MudjEuUHV0QWdlbnRDb25maWdSZXF1ZXN0GiIuY29tcGFzcy52MS5QdXRBZ2VudENvbmZpZ1Jlc3BvbnNlEmMKEkdldEFnZW50Q29uZmlnSW5mbxIlLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVxdWVzdBomLmNvbXBhc3MudjEuR2V0QWdlbnRDb25maWdJbmZvUmVzcG9uc2USYAoRRGVsZXRlQWdlbnRDb25maWcSJC5jb21wYXNzLnYxLkRlbGV0ZUFnZW50Q29uZmlnUmVxdWVzdBolLmNvbXBhc3MudjEuRGVsZXRlQWdlbnRDb25maWdSZXNwb25zZRJdChBQdXRNb2RlbFJlZ2lzdHJ5EiMuY29tcGFzcy52MS5QdXRNb2RlbFJlZ2lzdHJ5UmVxdWVzdBokLmNvbXBhc3MudjEuUHV0TW9kZWxSZWdpc3RyeVJlc3BvbnNlEl0KEEdldE1vZGVsUmVnaXN0cnkSIy5jb21wYXNzLnYxLkdldE1vZGVsUmVnaXN0cnlSZXF1ZXN0GiQuY29tcGFzcy52MS5HZXRNb2RlbFJlZ2lzdHJ5UmVzcG9uc2USZgoTRGVsZXRlTW9kZWxSZWdpc3RyeRImLmNvbXBhc3MudjEuRGVsZXRlTW9kZWxSZWdpc3RyeVJlcXVlc3QaJy5jb21wYXNzLnYxLkRlbGV0ZU1vZGVsUmVnaXN0cnlSZXNwb25zZTKgBAoOU2VjcmV0c1NlcnZpY2USSAoJU2V0U2VjcmV0EhwuY29tcGFzcy52MS5TZXRTZWNyZXRSZXF1ZXN0Gh0uY29tcGFzcy52MS5TZXRTZWNyZXRSZXNwb25zZRJOCgtMaXN0U2VjcmV0cxIeLmNvbXBhc3MudjEuTGlzdFNlY3JldHNSZXF1ZXN0Gh8uY29tcGFzcy52MS5MaXN0U2VjcmV0c1Jlc3BvbnNlElEKDERlbGV0ZVNlY3JldBIfLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVxdWVzdBogLmNvbXBhc3MudjEuRGVsZXRlU2VjcmV0UmVzcG9uc2USWgoPU2V0U2VydmVyU2VjcmV0EiIuY29tcGFzcy52MS5TZXRTZXJ2ZXJTZWNyZXRSZXF1ZXN0GiMuY29tcGFzcy52MS5TZXRTZXJ2ZXJTZWNyZXRSZXNwb25zZRJjChJEZWxldGVTZXJ2ZXJTZWNyZXQSJS5jb21wYXNzLnYxLkRlbGV0ZVNlcnZlclNlY3JldFJlcXVlc3QaJi5jb21wYXNzLnYxLkRlbGV0ZVNlcnZlclNlY3JldFJlc3BvbnNlEmAKEUxpc3RTZXJ2ZXJTZWNyZXRzEiQuY29tcGFzcy52MS5MaXN0U2VydmVyU2VjcmV0c1JlcXVlc3QaJS5jb21wYXNzLnYxLkxpc3RTZXJ2ZXJTZWNyZXRzUmVzcG9uc2ViBnByb3RvMw", [file_google_protobuf_timestamp]); /** * @generated from message compass.v1.SetSecretRequest @@ -250,6 +250,64 @@ export type DeleteServerSecretResponse = Message<"compass.v1.DeleteServerSecretR export const DeleteServerSecretResponseSchema: GenMessage = /*@__PURE__*/ messageDesc(file_compass_v1_compass, 10); +/** + * @generated from message compass.v1.ListServerSecretsRequest + */ +export type ListServerSecretsRequest = Message<"compass.v1.ListServerSecretsRequest"> & { +}; + +/** + * Describes the message compass.v1.ListServerSecretsRequest. + * Use `create(ListServerSecretsRequestSchema)` to create a new message. + */ +export const ListServerSecretsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_compass_v1_compass, 11); + +/** + * @generated from message compass.v1.ListServerSecretsResponse + */ +export type ListServerSecretsResponse = Message<"compass.v1.ListServerSecretsResponse"> & { + /** + * @generated from field: repeated compass.v1.ServerSecretStatus server_secrets = 1; + */ + serverSecrets: ServerSecretStatus[]; +}; + +/** + * Describes the message compass.v1.ListServerSecretsResponse. + * Use `create(ListServerSecretsResponseSchema)` to create a new message. + */ +export const ListServerSecretsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_compass_v1_compass, 12); + +/** + * A declared server secret's status — the name plus set/unset ONLY, and NEVER + * the value. A server secret is deployment-owned and never container-delivered, + * so there is no delivery/kind routing to carry either. `name` is the STORED + * name, carrying its reserved server-secret prefix; stripping the prefix for + * display is the client's job, so the wire form stays unambiguous. + * + * @generated from message compass.v1.ServerSecretStatus + */ +export type ServerSecretStatus = Message<"compass.v1.ServerSecretStatus"> & { + /** + * @generated from field: string name = 1; + */ + name: string; + + /** + * @generated from field: bool is_set = 2; + */ + isSet: boolean; +}; + +/** + * Describes the message compass.v1.ServerSecretStatus. + * Use `create(ServerSecretStatusSchema)` to create a new message. + */ +export const ServerSecretStatusSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_compass_v1_compass, 13); + /** * @generated from message compass.v1.GetServerInfoRequest */ @@ -261,7 +319,7 @@ export type GetServerInfoRequest = Message<"compass.v1.GetServerInfoRequest"> & * Use `create(GetServerInfoRequestSchema)` to create a new message. */ export const GetServerInfoRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 11); + messageDesc(file_compass_v1_compass, 14); /** * @generated from message compass.v1.GetServerInfoResponse @@ -287,7 +345,7 @@ export type GetServerInfoResponse = Message<"compass.v1.GetServerInfoResponse"> * Use `create(GetServerInfoResponseSchema)` to create a new message. */ export const GetServerInfoResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 12); + messageDesc(file_compass_v1_compass, 15); /** * @generated from message compass.v1.WhoAmIRequest @@ -300,7 +358,7 @@ export type WhoAmIRequest = Message<"compass.v1.WhoAmIRequest"> & { * Use `create(WhoAmIRequestSchema)` to create a new message. */ export const WhoAmIRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 13); + messageDesc(file_compass_v1_compass, 16); /** * @generated from message compass.v1.WhoAmIResponse @@ -320,7 +378,7 @@ export type WhoAmIResponse = Message<"compass.v1.WhoAmIResponse"> & { * Use `create(WhoAmIResponseSchema)` to create a new message. */ export const WhoAmIResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 14); + messageDesc(file_compass_v1_compass, 17); /** * Subscribe to the server event stream. @@ -354,7 +412,7 @@ export type SubscribeEventsRequest = Message<"compass.v1.SubscribeEventsRequest" * Use `create(SubscribeEventsRequestSchema)` to create a new message. */ export const SubscribeEventsRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 15); + messageDesc(file_compass_v1_compass, 18); /** * One entry in the server event stream. @@ -479,7 +537,7 @@ export type SubscribeEventsResponse = Message<"compass.v1.SubscribeEventsRespons * Use `create(SubscribeEventsResponseSchema)` to create a new message. */ export const SubscribeEventsResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 16); + messageDesc(file_compass_v1_compass, 19); /** * The durable board re-snapshot read request. Single-shot by design: the read @@ -511,7 +569,7 @@ export type ListBoardIssuesRequest = Message<"compass.v1.ListBoardIssuesRequest" * Use `create(ListBoardIssuesRequestSchema)` to create a new message. */ export const ListBoardIssuesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 17); + messageDesc(file_compass_v1_compass, 20); /** * The board as of the requested snapshot: every Compass Issue for the repo in @@ -533,7 +591,7 @@ export type ListBoardIssuesResponse = Message<"compass.v1.ListBoardIssuesRespons * Use `create(ListBoardIssuesResponseSchema)` to create a new message. */ export const ListBoardIssuesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 18); + messageDesc(file_compass_v1_compass, 21); /** * The server's liveness state, pushed on connect and whenever it changes. @@ -552,7 +610,7 @@ export type ServerStatus = Message<"compass.v1.ServerStatus"> & { * Use `create(ServerStatusSchema)` to create a new message. */ export const ServerStatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 19); + messageDesc(file_compass_v1_compass, 22); /** * The requested `since_seq` predates the server's retained event buffer, so a @@ -570,7 +628,7 @@ export type ResyncRequired = Message<"compass.v1.ResyncRequired"> & { * Use `create(ResyncRequiredSchema)` to create a new message. */ export const ResyncRequiredSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 20); + messageDesc(file_compass_v1_compass, 23); /** * The lifecycle state of one agent session, pushed on every transition. @@ -609,7 +667,7 @@ export type AgentSessionStatus = Message<"compass.v1.AgentSessionStatus"> & { * Use `create(AgentSessionStatusSchema)` to create a new message. */ export const AgentSessionStatusSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 21); + messageDesc(file_compass_v1_compass, 24); /** * A chunk of the agent's message stream (assistant text / thought), relayed @@ -644,7 +702,7 @@ export type AgentMessageChunk = Message<"compass.v1.AgentMessageChunk"> & { * Use `create(AgentMessageChunkSchema)` to create a new message. */ export const AgentMessageChunkSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 22); + messageDesc(file_compass_v1_compass, 25); /** * A tool call the agent started or updated, relayed from the Runner's agent @@ -685,7 +743,7 @@ export type AgentToolCall = Message<"compass.v1.AgentToolCall"> & { * Use `create(AgentToolCallSchema)` to create a new message. */ export const AgentToolCallSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 23); + messageDesc(file_compass_v1_compass, 26); /** * The agent's current execution plan, relayed from the Runner's agent event @@ -710,7 +768,7 @@ export type AgentPlan = Message<"compass.v1.AgentPlan"> & { * Use `create(AgentPlanSchema)` to create a new message. */ export const AgentPlanSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 24); + messageDesc(file_compass_v1_compass, 27); /** * One step in an agent plan. @@ -734,7 +792,7 @@ export type AgentPlanEntry = Message<"compass.v1.AgentPlanEntry"> & { * Use `create(AgentPlanEntrySchema)` to create a new message. */ export const AgentPlanEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 25); + messageDesc(file_compass_v1_compass, 28); /** * The typed observation-trace event — the render contract for the UI's session @@ -822,7 +880,7 @@ export type SessionEvent = Message<"compass.v1.SessionEvent"> & { * Use `create(SessionEventSchema)` to create a new message. */ export const SessionEventSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 26); + messageDesc(file_compass_v1_compass, 29); /** * A chunk of the agent's user-facing message stream. message_id correlates the @@ -849,7 +907,7 @@ export type SessionAssistantText = Message<"compass.v1.SessionAssistantText"> & * Use `create(SessionAssistantTextSchema)` to create a new message. */ export const SessionAssistantTextSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 27); + messageDesc(file_compass_v1_compass, 30); /** * A chunk of the agent's internal-reasoning (thought) stream, correlated by @@ -874,7 +932,7 @@ export type SessionThinking = Message<"compass.v1.SessionThinking"> & { * Use `create(SessionThinkingSchema)` to create a new message. */ export const SessionThinkingSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 28); + messageDesc(file_compass_v1_compass, 31); /** * A tool call the agent started. Reuses AgentToolCallStatus rather than minting @@ -904,7 +962,7 @@ export type SessionToolCall = Message<"compass.v1.SessionToolCall"> & { * Use `create(SessionToolCallSchema)` to create a new message. */ export const SessionToolCallSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 29); + messageDesc(file_compass_v1_compass, 32); /** * An update to a running or finished tool call: its new status, any accumulated @@ -940,7 +998,7 @@ export type SessionToolCallUpdate = Message<"compass.v1.SessionToolCallUpdate"> * Use `create(SessionToolCallUpdateSchema)` to create a new message. */ export const SessionToolCallUpdateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 30); + messageDesc(file_compass_v1_compass, 33); /** * One file edit within a tool-call update. old_text absent = a file creation. @@ -969,7 +1027,7 @@ export type SessionFileDiff = Message<"compass.v1.SessionFileDiff"> & { * Use `create(SessionFileDiffSchema)` to create a new message. */ export const SessionFileDiffSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 31); + messageDesc(file_compass_v1_compass, 34); /** * The agent's current execution plan. Reuses AgentPlanEntry. @@ -988,7 +1046,7 @@ export type SessionPlan = Message<"compass.v1.SessionPlan"> & { * Use `create(SessionPlanSchema)` to create a new message. */ export const SessionPlanSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 32); + messageDesc(file_compass_v1_compass, 35); /** * A free-standing notice in the trace (a status line or advisory), with an @@ -1013,7 +1071,7 @@ export type SessionNotice = Message<"compass.v1.SessionNotice"> & { * Use `create(SessionNoticeSchema)` to create a new message. */ export const SessionNoticeSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 33); + messageDesc(file_compass_v1_compass, 36); /** * A control injection into the agent's live session: the moment a channel @@ -1070,7 +1128,7 @@ export type SessionInjection = Message<"compass.v1.SessionInjection"> & { * Use `create(SessionInjectionSchema)` to create a new message. */ export const SessionInjectionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 34); + messageDesc(file_compass_v1_compass, 37); /** * A turn-ending failure surfaced as session-trace content: an inner/provider @@ -1103,7 +1161,7 @@ export type SessionError = Message<"compass.v1.SessionError"> & { * Use `create(SessionErrorSchema)` to create a new message. */ export const SessionErrorSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 35); + messageDesc(file_compass_v1_compass, 38); /** * SubscribeAgentSession: the session whose typed observation trace to tail. @@ -1122,7 +1180,7 @@ export type SubscribeAgentSessionRequest = Message<"compass.v1.SubscribeAgentSes * Use `create(SubscribeAgentSessionRequestSchema)` to create a new message. */ export const SubscribeAgentSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 36); + messageDesc(file_compass_v1_compass, 39); /** * One frame on the SubscribeAgentSession stream: a typed trace event, a @@ -1153,7 +1211,7 @@ export type AgentSessionFrame = Message<"compass.v1.AgentSessionFrame"> & { * Use `create(AgentSessionFrameSchema)` to create a new message. */ export const AgentSessionFrameSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 37); + messageDesc(file_compass_v1_compass, 40); /** * ProvisionAgentWorkspace: create the isolated per-agent container for a @@ -1232,7 +1290,7 @@ export type ProvisionAgentWorkspaceRequest = Message<"compass.v1.ProvisionAgentW * Use `create(ProvisionAgentWorkspaceRequestSchema)` to create a new message. */ export const ProvisionAgentWorkspaceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 38); + messageDesc(file_compass_v1_compass, 41); /** * @generated from message compass.v1.ProvisionAgentWorkspaceResponse @@ -1252,7 +1310,7 @@ export type ProvisionAgentWorkspaceResponse = Message<"compass.v1.ProvisionAgent * Use `create(ProvisionAgentWorkspaceResponseSchema)` to create a new message. */ export const ProvisionAgentWorkspaceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 39); + messageDesc(file_compass_v1_compass, 42); /** * RemoveAgentWorkspace: tear down the per-agent container and release its @@ -1284,7 +1342,7 @@ export type RemoveAgentWorkspaceRequest = Message<"compass.v1.RemoveAgentWorkspa * Use `create(RemoveAgentWorkspaceRequestSchema)` to create a new message. */ export const RemoveAgentWorkspaceRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 40); + messageDesc(file_compass_v1_compass, 43); /** * @generated from message compass.v1.RemoveAgentWorkspaceResponse @@ -1297,7 +1355,7 @@ export type RemoveAgentWorkspaceResponse = Message<"compass.v1.RemoveAgentWorksp * Use `create(RemoveAgentWorkspaceResponseSchema)` to create a new message. */ export const RemoveAgentWorkspaceResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 41); + messageDesc(file_compass_v1_compass, 44); /** * StartAgentSession: bring the first-party agent in a provisioned container @@ -1330,7 +1388,7 @@ export type StartAgentSessionRequest = Message<"compass.v1.StartAgentSessionRequ * Use `create(StartAgentSessionRequestSchema)` to create a new message. */ export const StartAgentSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 42); + messageDesc(file_compass_v1_compass, 45); /** * @generated from message compass.v1.StartAgentSessionResponse @@ -1350,7 +1408,7 @@ export type StartAgentSessionResponse = Message<"compass.v1.StartAgentSessionRes * Use `create(StartAgentSessionResponseSchema)` to create a new message. */ export const StartAgentSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 43); + messageDesc(file_compass_v1_compass, 46); /** * SpawnAgent: the composite start — Provision then Start under one @@ -1386,7 +1444,7 @@ export type SpawnAgentRequest = Message<"compass.v1.SpawnAgentRequest"> & { * Use `create(SpawnAgentRequestSchema)` to create a new message. */ export const SpawnAgentRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 44); + messageDesc(file_compass_v1_compass, 47); /** * @generated from message compass.v1.SpawnAgentResponse @@ -1415,7 +1473,7 @@ export type SpawnAgentResponse = Message<"compass.v1.SpawnAgentResponse"> & { * Use `create(SpawnAgentResponseSchema)` to create a new message. */ export const SpawnAgentResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 45); + messageDesc(file_compass_v1_compass, 48); /** * @generated from message compass.v1.StopAgentSessionRequest @@ -1432,7 +1490,7 @@ export type StopAgentSessionRequest = Message<"compass.v1.StopAgentSessionReques * Use `create(StopAgentSessionRequestSchema)` to create a new message. */ export const StopAgentSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 46); + messageDesc(file_compass_v1_compass, 49); /** * @generated from message compass.v1.StopAgentSessionResponse @@ -1445,7 +1503,7 @@ export type StopAgentSessionResponse = Message<"compass.v1.StopAgentSessionRespo * Use `create(StopAgentSessionResponseSchema)` to create a new message. */ export const StopAgentSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 47); + messageDesc(file_compass_v1_compass, 50); /** * @generated from message compass.v1.ReloadAgentSessionRequest @@ -1462,7 +1520,7 @@ export type ReloadAgentSessionRequest = Message<"compass.v1.ReloadAgentSessionRe * Use `create(ReloadAgentSessionRequestSchema)` to create a new message. */ export const ReloadAgentSessionRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 48); + messageDesc(file_compass_v1_compass, 51); /** * @generated from message compass.v1.ReloadAgentSessionResponse @@ -1481,7 +1539,7 @@ export type ReloadAgentSessionResponse = Message<"compass.v1.ReloadAgentSessionR * Use `create(ReloadAgentSessionResponseSchema)` to create a new message. */ export const ReloadAgentSessionResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 49); + messageDesc(file_compass_v1_compass, 52); /** * GetAgentStatus: one session when `session_id` is set, else every live one. @@ -1502,7 +1560,7 @@ export type GetAgentStatusRequest = Message<"compass.v1.GetAgentStatusRequest"> * Use `create(GetAgentStatusRequestSchema)` to create a new message. */ export const GetAgentStatusRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 50); + messageDesc(file_compass_v1_compass, 53); /** * @generated from message compass.v1.GetAgentStatusResponse @@ -1519,7 +1577,7 @@ export type GetAgentStatusResponse = Message<"compass.v1.GetAgentStatusResponse" * Use `create(GetAgentStatusResponseSchema)` to create a new message. */ export const GetAgentStatusResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 51); + messageDesc(file_compass_v1_compass, 54); /** * IssueToken: the admin-only path to mint a bearer token for an account. @@ -1542,7 +1600,7 @@ export type IssueTokenRequest = Message<"compass.v1.IssueTokenRequest"> & { * Use `create(IssueTokenRequestSchema)` to create a new message. */ export const IssueTokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 52); + messageDesc(file_compass_v1_compass, 55); /** * @generated from message compass.v1.IssueTokenResponse @@ -1563,7 +1621,7 @@ export type IssueTokenResponse = Message<"compass.v1.IssueTokenResponse"> & { * Use `create(IssueTokenResponseSchema)` to create a new message. */ export const IssueTokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 53); + messageDesc(file_compass_v1_compass, 56); /** * RevokeToken: the admin-only path to withdraw a bearer token by its value. @@ -1587,7 +1645,7 @@ export type RevokeTokenRequest = Message<"compass.v1.RevokeTokenRequest"> & { * Use `create(RevokeTokenRequestSchema)` to create a new message. */ export const RevokeTokenRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 54); + messageDesc(file_compass_v1_compass, 57); /** * @generated from message compass.v1.RevokeTokenResponse @@ -1600,7 +1658,7 @@ export type RevokeTokenResponse = Message<"compass.v1.RevokeTokenResponse"> & { * Use `create(RevokeTokenResponseSchema)` to create a new message. */ export const RevokeTokenResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 55); + messageDesc(file_compass_v1_compass, 58); /** * PutAgentConfig: declare the fleet config bundle. The caller's identity is the @@ -1623,7 +1681,7 @@ export type PutAgentConfigRequest = Message<"compass.v1.PutAgentConfigRequest"> * Use `create(PutAgentConfigRequestSchema)` to create a new message. */ export const PutAgentConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 56); + messageDesc(file_compass_v1_compass, 59); /** * @generated from message compass.v1.PutAgentConfigResponse @@ -1644,7 +1702,7 @@ export type PutAgentConfigResponse = Message<"compass.v1.PutAgentConfigResponse" * Use `create(PutAgentConfigResponseSchema)` to create a new message. */ export const PutAgentConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 57); + messageDesc(file_compass_v1_compass, 60); /** * @generated from message compass.v1.GetAgentConfigInfoRequest @@ -1657,7 +1715,7 @@ export type GetAgentConfigInfoRequest = Message<"compass.v1.GetAgentConfigInfoRe * Use `create(GetAgentConfigInfoRequestSchema)` to create a new message. */ export const GetAgentConfigInfoRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 58); + messageDesc(file_compass_v1_compass, 61); /** * GetAgentConfigInfo: the current bundle's version and member names by top dir — @@ -1744,7 +1802,7 @@ export type GetAgentConfigInfoResponse = Message<"compass.v1.GetAgentConfigInfoR * Use `create(GetAgentConfigInfoResponseSchema)` to create a new message. */ export const GetAgentConfigInfoResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 59); + messageDesc(file_compass_v1_compass, 62); /** * @generated from message compass.v1.DeleteAgentConfigRequest @@ -1757,7 +1815,7 @@ export type DeleteAgentConfigRequest = Message<"compass.v1.DeleteAgentConfigRequ * Use `create(DeleteAgentConfigRequestSchema)` to create a new message. */ export const DeleteAgentConfigRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 60); + messageDesc(file_compass_v1_compass, 63); /** * @generated from message compass.v1.DeleteAgentConfigResponse @@ -1770,7 +1828,7 @@ export type DeleteAgentConfigResponse = Message<"compass.v1.DeleteAgentConfigRes * Use `create(DeleteAgentConfigResponseSchema)` to create a new message. */ export const DeleteAgentConfigResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 61); + messageDesc(file_compass_v1_compass, 64); /** * One candidate in a stable name's ordered chain: an upstream (provider, @@ -1798,7 +1856,7 @@ export type ModelCandidate = Message<"compass.v1.ModelCandidate"> & { * Use `create(ModelCandidateSchema)` to create a new message. */ export const ModelCandidateSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 62); + messageDesc(file_compass_v1_compass, 65); /** * The listing metadata a stable name carries, taken from its primary candidate @@ -1842,7 +1900,7 @@ export type ModelMetadata = Message<"compass.v1.ModelMetadata"> & { * Use `create(ModelMetadataSchema)` to create a new message. */ export const ModelMetadataSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 63); + messageDesc(file_compass_v1_compass, 66); /** * One stable name's registry entry: a human display name, the ordered candidate @@ -1872,7 +1930,7 @@ export type ModelRegistryEntry = Message<"compass.v1.ModelRegistryEntry"> & { * Use `create(ModelRegistryEntrySchema)` to create a new message. */ export const ModelRegistryEntrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 64); + messageDesc(file_compass_v1_compass, 67); /** * The fleet model registry payload: the stable-name → entry map. The map key is @@ -1892,7 +1950,7 @@ export type ModelRegistry = Message<"compass.v1.ModelRegistry"> & { * Use `create(ModelRegistrySchema)` to create a new message. */ export const ModelRegistrySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 65); + messageDesc(file_compass_v1_compass, 68); /** * PutModelRegistry: declare the fleet model registry. The caller's identity is @@ -1923,7 +1981,7 @@ export type PutModelRegistryRequest = Message<"compass.v1.PutModelRegistryReques * Use `create(PutModelRegistryRequestSchema)` to create a new message. */ export const PutModelRegistryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 66); + messageDesc(file_compass_v1_compass, 69); /** * @generated from message compass.v1.PutModelRegistryResponse @@ -1942,7 +2000,7 @@ export type PutModelRegistryResponse = Message<"compass.v1.PutModelRegistryRespo * Use `create(PutModelRegistryResponseSchema)` to create a new message. */ export const PutModelRegistryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 67); + messageDesc(file_compass_v1_compass, 70); /** * @generated from message compass.v1.GetModelRegistryRequest @@ -1955,7 +2013,7 @@ export type GetModelRegistryRequest = Message<"compass.v1.GetModelRegistryReques * Use `create(GetModelRegistryRequestSchema)` to create a new message. */ export const GetModelRegistryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 68); + messageDesc(file_compass_v1_compass, 71); /** * GetModelRegistry: the current registry version and payload. An unconfigured @@ -1980,7 +2038,7 @@ export type GetModelRegistryResponse = Message<"compass.v1.GetModelRegistryRespo * Use `create(GetModelRegistryResponseSchema)` to create a new message. */ export const GetModelRegistryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 69); + messageDesc(file_compass_v1_compass, 72); /** * @generated from message compass.v1.DeleteModelRegistryRequest @@ -1993,7 +2051,7 @@ export type DeleteModelRegistryRequest = Message<"compass.v1.DeleteModelRegistry * Use `create(DeleteModelRegistryRequestSchema)` to create a new message. */ export const DeleteModelRegistryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 70); + messageDesc(file_compass_v1_compass, 73); /** * @generated from message compass.v1.DeleteModelRegistryResponse @@ -2006,7 +2064,7 @@ export type DeleteModelRegistryResponse = Message<"compass.v1.DeleteModelRegistr * Use `create(DeleteModelRegistryResponseSchema)` to create a new message. */ export const DeleteModelRegistryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 71); + messageDesc(file_compass_v1_compass, 74); /** * The Compass agent attribution parsed from the owner header at ingestion — a @@ -2036,7 +2094,7 @@ export type AgentAttribution = Message<"compass.v1.AgentAttribution"> & { * Use `create(AgentAttributionSchema)` to create a new message. */ export const AgentAttributionSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 72); + messageDesc(file_compass_v1_compass, 75); /** * @generated from message compass.v1.ForgeRef @@ -2060,7 +2118,7 @@ export type ForgeRef = Message<"compass.v1.ForgeRef"> & { * Use `create(ForgeRefSchema)` to create a new message. */ export const ForgeRefSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 73); + messageDesc(file_compass_v1_compass, 76); /** * The board unit: a Compass Issue — the forge issue's fields PLUS the Compass @@ -2218,7 +2276,7 @@ export type Issue = Message<"compass.v1.Issue"> & { * Use `create(IssueSchema)` to create a new message. */ export const IssueSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 74); + messageDesc(file_compass_v1_compass, 77); /** * A Compass pull request: the forge PR's fields plus the Compass agent @@ -2325,7 +2383,7 @@ export type PullRequest = Message<"compass.v1.PullRequest"> & { * Use `create(PullRequestSchema)` to create a new message. */ export const PullRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 75); + messageDesc(file_compass_v1_compass, 78); /** * The rolled-up CI + status-check state on a PR head — Compass-owned, populated @@ -2357,7 +2415,7 @@ export type ChecksSummary = Message<"compass.v1.ChecksSummary"> & { * Use `create(ChecksSummarySchema)` to create a new message. */ export const ChecksSummarySchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 76); + messageDesc(file_compass_v1_compass, 79); /** * @generated from message compass.v1.Check @@ -2391,7 +2449,7 @@ export type Check = Message<"compass.v1.Check"> & { * Use `create(CheckSchema)` to create a new message. */ export const CheckSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 77); + messageDesc(file_compass_v1_compass, 80); /** * A PR diffstat (files/additions/deletions), carried on PullRequest — a @@ -2421,7 +2479,7 @@ export type ChangedStats = Message<"compass.v1.ChangedStats"> & { * Use `create(ChangedStatsSchema)` to create a new message. */ export const ChangedStatsSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 78); + messageDesc(file_compass_v1_compass, 81); /** * The linked tracker issue — the projection target (DL-032); the @@ -2462,7 +2520,7 @@ export type TrackerRef = Message<"compass.v1.TrackerRef"> & { * Use `create(TrackerRefSchema)` to create a new message. */ export const TrackerRefSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 79); + messageDesc(file_compass_v1_compass, 82); /** * The full review state the right-sidebar PR pane shows — every submitted review @@ -2509,7 +2567,7 @@ export type Review = Message<"compass.v1.Review"> & { * Use `create(ReviewSchema)` to create a new message. */ export const ReviewSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 80); + messageDesc(file_compass_v1_compass, 83); /** * @generated from message compass.v1.ReviewThread @@ -2538,7 +2596,7 @@ export type ReviewThread = Message<"compass.v1.ReviewThread"> & { * Use `create(ReviewThreadSchema)` to create a new message. */ export const ReviewThreadSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 81); + messageDesc(file_compass_v1_compass, 84); /** * @generated from message compass.v1.Comment @@ -2565,7 +2623,7 @@ export type Comment = Message<"compass.v1.Comment"> & { * Use `create(CommentSchema)` to create a new message. */ export const CommentSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_compass_v1_compass, 82); + messageDesc(file_compass_v1_compass, 85); /** * How a resolved secret is delivered into the agent container. Mirrors @@ -3342,6 +3400,22 @@ export const SecretsService: GenService<{ input: typeof DeleteServerSecretRequestSchema; output: typeof DeleteServerSecretResponseSchema; }, + /** + * List declared SERVER secrets by name with set/unset — names only, NEVER + * values. Admin-only, like its server-secret siblings: the rows are + * deployment-owned, so there is no per-account authorization to fall back on. + * Unlike ListSecrets, `is_set` is a PROVIDER PROBE, not a registry read: a + * server secret's row is self-declared at every boot while its value lives in + * the SecretSpec provider and is populated separately, so a declared name is + * routinely unset and the two states must be distinguishable. + * + * @generated from rpc compass.v1.SecretsService.ListServerSecrets + */ + listServerSecrets: { + methodKind: "unary"; + input: typeof ListServerSecretsRequestSchema; + output: typeof ListServerSecretsResponseSchema; + }, }> = /*@__PURE__*/ serviceDesc(file_compass_v1_compass, 1); diff --git a/proto/compass/v1/compass.proto b/proto/compass/v1/compass.proto index 532355165..d1727881a 100644 --- a/proto/compass/v1/compass.proto +++ b/proto/compass/v1/compass.proto @@ -219,6 +219,14 @@ service SecretsService { // master-key name is rejected (rotation is separate machinery, never a raw // overwrite or delete). rpc DeleteServerSecret(DeleteServerSecretRequest) returns (DeleteServerSecretResponse); + // List declared SERVER secrets by name with set/unset — names only, NEVER + // values. Admin-only, like its server-secret siblings: the rows are + // deployment-owned, so there is no per-account authorization to fall back on. + // Unlike ListSecrets, `is_set` is a PROVIDER PROBE, not a registry read: a + // server secret's row is self-declared at every boot while its value lives in + // the SecretSpec provider and is populated separately, so a declared name is + // routinely unset and the two states must be distinguishable. + rpc ListServerSecrets(ListServerSecretsRequest) returns (ListServerSecretsResponse); } message SetSecretRequest { @@ -261,6 +269,20 @@ message DeleteServerSecretRequest { } message DeleteServerSecretResponse {} +message ListServerSecretsRequest {} +message ListServerSecretsResponse { + repeated ServerSecretStatus server_secrets = 1; +} +// A declared server secret's status — the name plus set/unset ONLY, and NEVER +// the value. A server secret is deployment-owned and never container-delivered, +// so there is no delivery/kind routing to carry either. `name` is the STORED +// name, carrying its reserved server-secret prefix; stripping the prefix for +// display is the client's job, so the wire form stays unambiguous. +message ServerSecretStatus { + string name = 1; + bool is_set = 2; +} + message GetServerInfoRequest {} message GetServerInfoResponse {