From 3e8444cc521204a91b74307093dc5e13cf2b554f Mon Sep 17 00:00:00 2001 From: Alex Dunmow Date: Sat, 5 Sep 2026 21:14:15 +0800 Subject: [PATCH] chore: checkpoint all working changes --- cmd/ninja/cmd/plugin.go | 5 +- cmd/ninja/cmd/plugin_test.go | 10 +- go.mod | 5 +- go.sum | 12 +- .../plugin_registry.connect.go | 320 ++- .../api/orchestrator/v1/plugin_registry.pb.go | 1982 +++++++++++++---- proto/orchestrator/v1/plugin_registry.proto | 175 ++ 7 files changed, 2044 insertions(+), 465 deletions(-) diff --git a/cmd/ninja/cmd/plugin.go b/cmd/ninja/cmd/plugin.go index 6e7fedc..b691f9c 100644 --- a/cmd/ninja/cmd/plugin.go +++ b/cmd/ninja/cmd/plugin.go @@ -1145,11 +1145,14 @@ func writeMod(path string, m *core.ModFile) error { b.WriteString("sitemap = true\n") } if m.Compatibility != nil && - (m.Compatibility.BlockCore != "" || m.Compatibility.AdminAPI != "") { + (m.Compatibility.BlockCore != "" || m.Compatibility.PluginSDK != "" || m.Compatibility.AdminAPI != "") { b.WriteString("\n[compatibility]\n") if m.Compatibility.BlockCore != "" { fmt.Fprintf(&b, "block_core = %q\n", m.Compatibility.BlockCore) } + if m.Compatibility.PluginSDK != "" { + fmt.Fprintf(&b, "plugin_sdk = %q\n", m.Compatibility.PluginSDK) + } if m.Compatibility.AdminAPI != "" { fmt.Fprintf(&b, "admin_api = %q\n", m.Compatibility.AdminAPI) } diff --git a/cmd/ninja/cmd/plugin_test.go b/cmd/ninja/cmd/plugin_test.go index 13c9e93..6ca16f1 100644 --- a/cmd/ninja/cmd/plugin_test.go +++ b/cmd/ninja/cmd/plugin_test.go @@ -373,14 +373,14 @@ func TestWriteMod_CompatibilityFields(t *testing.T) { }{ { name: "admin api only", - compat: &core.ModCompat{AdminAPI: ">=0.1.2"}, - want: []string{"[compatibility]", `admin_api = ">=0.1.2"`}, + compat: &core.ModCompat{PluginSDK: ">=0.3.7", AdminAPI: ">=0.1.2"}, + want: []string{"[compatibility]", `plugin_sdk = ">=0.3.7"`, `admin_api = ">=0.1.2"`}, doNotWant: []string{"block_core"}, }, { name: "empty compatibility omitted", compat: &core.ModCompat{}, - doNotWant: []string{"[compatibility]", "block_core", "admin_api"}, + doNotWant: []string{"[compatibility]", "block_core", "plugin_sdk", "admin_api"}, }, } @@ -438,6 +438,7 @@ func TestWriteMod_RoundTripsFirstClassFields(t *testing.T) { }, Compatibility: &core.ModCompat{ BlockCore: ">=0.3.4", + PluginSDK: ">=0.3.7 <0.4.0", AdminAPI: ">=0.1.2", }, } @@ -475,6 +476,9 @@ func TestWriteMod_RoundTripsFirstClassFields(t *testing.T) { if back.Compatibility.BlockCore != ">=0.3.4" { t.Errorf("block_core not preserved: %q\n%s", back.Compatibility.BlockCore, data) } + if back.Compatibility.PluginSDK != ">=0.3.7 <0.4.0" { + t.Errorf("plugin_sdk not preserved: %q\n%s", back.Compatibility.PluginSDK, data) + } if back.Compatibility.AdminAPI != ">=0.1.2" { t.Errorf("admin_api not preserved: %q\n%s", back.Compatibility.AdminAPI, data) } diff --git a/go.mod b/go.mod index ed451b6..75e6902 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,8 @@ go 1.26.4 require ( connectrpc.com/connect v1.20.0 - git.dev.alexdunmow.com/block/core v0.18.2 - git.dev.alexdunmow.com/block/pluginsdk v0.3.6 + git.dev.alexdunmow.com/block/core v0.20.6 + git.dev.alexdunmow.com/block/pluginsdk v0.3.7 github.com/chromedp/cdproto v0.0.0-20260321001828-e3e3800016bc github.com/chromedp/chromedp v0.15.1 github.com/klauspost/compress v1.18.6 @@ -28,6 +28,7 @@ require ( github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect github.com/jackc/pgx/v5 v5.10.0 // indirect github.com/kr/text v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.16.0 // indirect github.com/spf13/pflag v1.0.9 // indirect golang.org/x/mod v0.37.0 // indirect golang.org/x/net v0.56.0 // indirect diff --git a/go.sum b/go.sum index 1a6a84a..6408a36 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,9 @@ connectrpc.com/connect v1.20.0 h1:6TNDAB+WeNd2uolWNlYczB5E0KNNaVMNUEx8JEUsPmQ= connectrpc.com/connect v1.20.0/go.mod h1:A2ygJrukXwWy32vkCAAHNVguZrqZ+jeZ9rGRnGR4dN4= -git.dev.alexdunmow.com/block/core v0.18.2 h1:+3OfZ424yoc1k1CucXYARk8TBkh8Z693HRkhf5Ci2wU= -git.dev.alexdunmow.com/block/core v0.18.2/go.mod h1:GGuUu826AoJepC/hKLGJ7BX3PQaDss9ueCT0se6Ao2w= -git.dev.alexdunmow.com/block/pluginsdk v0.3.6 h1:wK5gUAmK1gFrCWLqR4zRaq+aSAPgNmpTKHDK8nPX4OI= -git.dev.alexdunmow.com/block/pluginsdk v0.3.6/go.mod h1:Z+eG+WZxAP0jfreLqlGcc0kkWKt8RWevzWyWn8d+dhM= +git.dev.alexdunmow.com/block/core v0.20.6 h1:/f6zP1SKz44ftE5hVDOU4hJvl6TLz3vufGSkqvc2cSg= +git.dev.alexdunmow.com/block/core v0.20.6/go.mod h1:G3MNnwiM4i9roLamhs9DAlVO2mXiYAlTRQoHPpw1AmI= +git.dev.alexdunmow.com/block/pluginsdk v0.3.7 h1:PUT1YElhXre43m1UejDabSqRPAnx1BV7BEWKpG++7Rs= +git.dev.alexdunmow.com/block/pluginsdk v0.3.7/go.mod h1:Z+eG+WZxAP0jfreLqlGcc0kkWKt8RWevzWyWn8d+dhM= github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/chromedp/cdproto v0.0.0-20260321001828-e3e3800016bc h1:wkN/LMi5vc60pBRWx6qpbk/aEvq3/ZVNpnMvsw8PVVU= @@ -51,8 +51,8 @@ github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde h1:x0TT0RDC7UhA github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.15.0 h1:D0RCU5rMAp+SpgkiNdrjfJ+LX4J1M32V2NeCY7EJ6hc= -github.com/rogpeppe/go-internal v1.15.0/go.mod h1:DrUVZyrJU+txYW5/1kwtXQSMFio52ZOxX7yM1VHvnxs= +github.com/rogpeppe/go-internal v1.16.0 h1:O9DK+vNMDVGLr2BeZqmpLeMjiMNkuXfcqntWbZV6S5g= +github.com/rogpeppe/go-internal v1.16.0/go.mod h1:DrUVZyrJU+txYW5/1kwtXQSMFio52ZOxX7yM1VHvnxs= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU= github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4= diff --git a/internal/api/orchestrator/v1/orchestratorv1connect/plugin_registry.connect.go b/internal/api/orchestrator/v1/orchestratorv1connect/plugin_registry.connect.go index 3a521be..ebf1c6d 100644 --- a/internal/api/orchestrator/v1/orchestratorv1connect/plugin_registry.connect.go +++ b/internal/api/orchestrator/v1/orchestratorv1connect/plugin_registry.connect.go @@ -99,6 +99,9 @@ const ( // PluginRegistryServiceResolveInstallForInstanceProcedure is the fully-qualified name of the // PluginRegistryService's ResolveInstallForInstance RPC. PluginRegistryServiceResolveInstallForInstanceProcedure = "/orchestrator.v1.PluginRegistryService/ResolveInstallForInstance" + // PluginRegistryServiceConfirmPluginInstallForInstanceProcedure is the fully-qualified name of the + // PluginRegistryService's ConfirmPluginInstallForInstance RPC. + PluginRegistryServiceConfirmPluginInstallForInstanceProcedure = "/orchestrator.v1.PluginRegistryService/ConfirmPluginInstallForInstance" // PluginModerationServiceListPendingReviewsProcedure is the fully-qualified name of the // PluginModerationService's ListPendingReviews RPC. PluginModerationServiceListPendingReviewsProcedure = "/orchestrator.v1.PluginModerationService/ListPendingReviews" @@ -111,6 +114,21 @@ const ( // PluginModerationServiceRequestChangesProcedure is the fully-qualified name of the // PluginModerationService's RequestChanges RPC. PluginModerationServiceRequestChangesProcedure = "/orchestrator.v1.PluginModerationService/RequestChanges" + // PluginModerationServiceUnpublishPluginProcedure is the fully-qualified name of the + // PluginModerationService's UnpublishPlugin RPC. + PluginModerationServiceUnpublishPluginProcedure = "/orchestrator.v1.PluginModerationService/UnpublishPlugin" + // PluginModerationServiceTakedownPluginProcedure is the fully-qualified name of the + // PluginModerationService's TakedownPlugin RPC. + PluginModerationServiceTakedownPluginProcedure = "/orchestrator.v1.PluginModerationService/TakedownPlugin" + // PluginModerationServiceRestorePluginProcedure is the fully-qualified name of the + // PluginModerationService's RestorePlugin RPC. + PluginModerationServiceRestorePluginProcedure = "/orchestrator.v1.PluginModerationService/RestorePlugin" + // PluginModerationServiceYankVersionProcedure is the fully-qualified name of the + // PluginModerationService's YankVersion RPC. + PluginModerationServiceYankVersionProcedure = "/orchestrator.v1.PluginModerationService/YankVersion" + // PluginModerationServiceDeletePublicPluginProcedure is the fully-qualified name of the + // PluginModerationService's DeletePublicPlugin RPC. + PluginModerationServiceDeletePublicPluginProcedure = "/orchestrator.v1.PluginModerationService/DeletePublicPlugin" // PluginModerationServiceListFlaggedReviewsProcedure is the fully-qualified name of the // PluginModerationService's ListFlaggedReviews RPC. PluginModerationServiceListFlaggedReviewsProcedure = "/orchestrator.v1.PluginModerationService/ListFlaggedReviews" @@ -120,6 +138,15 @@ const ( // PluginModerationServiceSoftDeleteReplyProcedure is the fully-qualified name of the // PluginModerationService's SoftDeleteReply RPC. PluginModerationServiceSoftDeleteReplyProcedure = "/orchestrator.v1.PluginModerationService/SoftDeleteReply" + // PluginModerationServiceCreateCategoryProcedure is the fully-qualified name of the + // PluginModerationService's CreateCategory RPC. + PluginModerationServiceCreateCategoryProcedure = "/orchestrator.v1.PluginModerationService/CreateCategory" + // PluginModerationServiceUpdateCategoryProcedure is the fully-qualified name of the + // PluginModerationService's UpdateCategory RPC. + PluginModerationServiceUpdateCategoryProcedure = "/orchestrator.v1.PluginModerationService/UpdateCategory" + // PluginModerationServiceDeleteCategoryProcedure is the fully-qualified name of the + // PluginModerationService's DeleteCategory RPC. + PluginModerationServiceDeleteCategoryProcedure = "/orchestrator.v1.PluginModerationService/DeleteCategory" // PluginGalleryServiceListScreenshotsProcedure is the fully-qualified name of the // PluginGalleryService's ListScreenshots RPC. PluginGalleryServiceListScreenshotsProcedure = "/orchestrator.v1.PluginGalleryService/ListScreenshots" @@ -353,6 +380,7 @@ type PluginRegistryServiceClient interface { // required (the calling instance, not a user, is the trust unit). ListPrivatePluginsForInstance(context.Context, *connect.Request[v1.ListPrivatePluginsForInstanceRequest]) (*connect.Response[v1.ListPrivatePluginsResponse], error) ResolveInstallForInstance(context.Context, *connect.Request[v1.ResolveInstallForInstanceRequest]) (*connect.Response[v1.ResolveInstallResponse], error) + ConfirmPluginInstallForInstance(context.Context, *connect.Request[v1.ConfirmPluginInstallForInstanceRequest]) (*connect.Response[v1.ConfirmPluginInstallForInstanceResponse], error) } // NewPluginRegistryServiceClient constructs a client for the orchestrator.v1.PluginRegistryService @@ -450,25 +478,32 @@ func NewPluginRegistryServiceClient(httpClient connect.HTTPClient, baseURL strin connect.WithSchema(pluginRegistryServiceMethods.ByName("ResolveInstallForInstance")), connect.WithClientOptions(opts...), ), + confirmPluginInstallForInstance: connect.NewClient[v1.ConfirmPluginInstallForInstanceRequest, v1.ConfirmPluginInstallForInstanceResponse]( + httpClient, + baseURL+PluginRegistryServiceConfirmPluginInstallForInstanceProcedure, + connect.WithSchema(pluginRegistryServiceMethods.ByName("ConfirmPluginInstallForInstance")), + connect.WithClientOptions(opts...), + ), } } // pluginRegistryServiceClient implements PluginRegistryServiceClient. type pluginRegistryServiceClient struct { - createPlugin *connect.Client[v1.CreatePluginRequest, v1.CreatePluginResponse] - getPlugin *connect.Client[v1.GetPluginRequest, v1.GetPluginResponse] - listPlugins *connect.Client[v1.ListPluginsRequest, v1.ListPluginsResponse] - getVersion *connect.Client[v1.GetVersionRequest, v1.GetVersionResponse] - resolveInstall *connect.Client[v1.ResolveInstallRequest, v1.ResolveInstallResponse] - listCategories *connect.Client[v1.ListCategoriesRequest, v1.ListCategoriesResponse] - listTags *connect.Client[v1.ListTagsRequest, v1.ListTagsResponse] - submitForReview *connect.Client[v1.SubmitForReviewRequest, v1.SubmitForReviewResponse] - listPrivatePlugins *connect.Client[v1.ListPrivatePluginsRequest, v1.ListPrivatePluginsResponse] - deletePrivatePlugin *connect.Client[v1.DeletePrivatePluginRequest, v1.DeletePrivatePluginResponse] - deletePrivatePluginVersion *connect.Client[v1.DeletePrivatePluginVersionRequest, v1.DeletePrivatePluginVersionResponse] - listPrivatePluginInstallSites *connect.Client[v1.ListPrivatePluginInstallSitesRequest, v1.ListPrivatePluginInstallSitesResponse] - listPrivatePluginsForInstance *connect.Client[v1.ListPrivatePluginsForInstanceRequest, v1.ListPrivatePluginsResponse] - resolveInstallForInstance *connect.Client[v1.ResolveInstallForInstanceRequest, v1.ResolveInstallResponse] + createPlugin *connect.Client[v1.CreatePluginRequest, v1.CreatePluginResponse] + getPlugin *connect.Client[v1.GetPluginRequest, v1.GetPluginResponse] + listPlugins *connect.Client[v1.ListPluginsRequest, v1.ListPluginsResponse] + getVersion *connect.Client[v1.GetVersionRequest, v1.GetVersionResponse] + resolveInstall *connect.Client[v1.ResolveInstallRequest, v1.ResolveInstallResponse] + listCategories *connect.Client[v1.ListCategoriesRequest, v1.ListCategoriesResponse] + listTags *connect.Client[v1.ListTagsRequest, v1.ListTagsResponse] + submitForReview *connect.Client[v1.SubmitForReviewRequest, v1.SubmitForReviewResponse] + listPrivatePlugins *connect.Client[v1.ListPrivatePluginsRequest, v1.ListPrivatePluginsResponse] + deletePrivatePlugin *connect.Client[v1.DeletePrivatePluginRequest, v1.DeletePrivatePluginResponse] + deletePrivatePluginVersion *connect.Client[v1.DeletePrivatePluginVersionRequest, v1.DeletePrivatePluginVersionResponse] + listPrivatePluginInstallSites *connect.Client[v1.ListPrivatePluginInstallSitesRequest, v1.ListPrivatePluginInstallSitesResponse] + listPrivatePluginsForInstance *connect.Client[v1.ListPrivatePluginsForInstanceRequest, v1.ListPrivatePluginsResponse] + resolveInstallForInstance *connect.Client[v1.ResolveInstallForInstanceRequest, v1.ResolveInstallResponse] + confirmPluginInstallForInstance *connect.Client[v1.ConfirmPluginInstallForInstanceRequest, v1.ConfirmPluginInstallForInstanceResponse] } // CreatePlugin calls orchestrator.v1.PluginRegistryService.CreatePlugin. @@ -544,6 +579,12 @@ func (c *pluginRegistryServiceClient) ResolveInstallForInstance(ctx context.Cont return c.resolveInstallForInstance.CallUnary(ctx, req) } +// ConfirmPluginInstallForInstance calls +// orchestrator.v1.PluginRegistryService.ConfirmPluginInstallForInstance. +func (c *pluginRegistryServiceClient) ConfirmPluginInstallForInstance(ctx context.Context, req *connect.Request[v1.ConfirmPluginInstallForInstanceRequest]) (*connect.Response[v1.ConfirmPluginInstallForInstanceResponse], error) { + return c.confirmPluginInstallForInstance.CallUnary(ctx, req) +} + // PluginRegistryServiceHandler is an implementation of the orchestrator.v1.PluginRegistryService // service. type PluginRegistryServiceHandler interface { @@ -568,6 +609,7 @@ type PluginRegistryServiceHandler interface { // required (the calling instance, not a user, is the trust unit). ListPrivatePluginsForInstance(context.Context, *connect.Request[v1.ListPrivatePluginsForInstanceRequest]) (*connect.Response[v1.ListPrivatePluginsResponse], error) ResolveInstallForInstance(context.Context, *connect.Request[v1.ResolveInstallForInstanceRequest]) (*connect.Response[v1.ResolveInstallResponse], error) + ConfirmPluginInstallForInstance(context.Context, *connect.Request[v1.ConfirmPluginInstallForInstanceRequest]) (*connect.Response[v1.ConfirmPluginInstallForInstanceResponse], error) } // NewPluginRegistryServiceHandler builds an HTTP handler from the service implementation. It @@ -661,6 +703,12 @@ func NewPluginRegistryServiceHandler(svc PluginRegistryServiceHandler, opts ...c connect.WithSchema(pluginRegistryServiceMethods.ByName("ResolveInstallForInstance")), connect.WithHandlerOptions(opts...), ) + pluginRegistryServiceConfirmPluginInstallForInstanceHandler := connect.NewUnaryHandler( + PluginRegistryServiceConfirmPluginInstallForInstanceProcedure, + svc.ConfirmPluginInstallForInstance, + connect.WithSchema(pluginRegistryServiceMethods.ByName("ConfirmPluginInstallForInstance")), + connect.WithHandlerOptions(opts...), + ) return "/orchestrator.v1.PluginRegistryService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case PluginRegistryServiceCreatePluginProcedure: @@ -691,6 +739,8 @@ func NewPluginRegistryServiceHandler(svc PluginRegistryServiceHandler, opts ...c pluginRegistryServiceListPrivatePluginsForInstanceHandler.ServeHTTP(w, r) case PluginRegistryServiceResolveInstallForInstanceProcedure: pluginRegistryServiceResolveInstallForInstanceHandler.ServeHTTP(w, r) + case PluginRegistryServiceConfirmPluginInstallForInstanceProcedure: + pluginRegistryServiceConfirmPluginInstallForInstanceHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -756,6 +806,10 @@ func (UnimplementedPluginRegistryServiceHandler) ResolveInstallForInstance(conte return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginRegistryService.ResolveInstallForInstance is not implemented")) } +func (UnimplementedPluginRegistryServiceHandler) ConfirmPluginInstallForInstance(context.Context, *connect.Request[v1.ConfirmPluginInstallForInstanceRequest]) (*connect.Response[v1.ConfirmPluginInstallForInstanceResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginRegistryService.ConfirmPluginInstallForInstance is not implemented")) +} + // PluginModerationServiceClient is a client for the orchestrator.v1.PluginModerationService // service. type PluginModerationServiceClient interface { @@ -763,11 +817,34 @@ type PluginModerationServiceClient interface { ApproveSubmission(context.Context, *connect.Request[v1.ApproveSubmissionRequest]) (*connect.Response[v1.ApproveSubmissionResponse], error) RejectSubmission(context.Context, *connect.Request[v1.RejectSubmissionRequest]) (*connect.Response[v1.RejectSubmissionResponse], error) RequestChanges(context.Context, *connect.Request[v1.RequestChangesRequest]) (*connect.Response[v1.RequestChangesResponse], error) + // Post-publication lifecycle control (WO-057). These act on plugins that are + // already public (or under_review), giving operators the ability to pull a + // plugin back out of the catalog after it shipped: + // - UnpublishPlugin: public -> under_review. Stops new installs, leaves + // existing installs untouched. Reversible via re-moderation. + // - TakedownPlugin: public|under_review -> taken_down. For malware. The + // instance sweep that force-uninstalls it everywhere is a separate flow + // (WO-059); this RPC only moves catalog state. + // - RestorePlugin: taken_down -> under_review (operator re-approves; not + // auto-republished). + // - YankVersion: marks a single version unusable without touching siblings. + // - DeletePublicPlugin: superadmin hard-delete incl. archive blobs. + UnpublishPlugin(context.Context, *connect.Request[v1.UnpublishPluginRequest]) (*connect.Response[v1.UnpublishPluginResponse], error) + TakedownPlugin(context.Context, *connect.Request[v1.TakedownPluginRequest]) (*connect.Response[v1.TakedownPluginResponse], error) + RestorePlugin(context.Context, *connect.Request[v1.RestorePluginRequest]) (*connect.Response[v1.RestorePluginResponse], error) + YankVersion(context.Context, *connect.Request[v1.YankVersionRequest]) (*connect.Response[v1.YankVersionResponse], error) + DeletePublicPlugin(context.Context, *connect.Request[v1.DeletePublicPluginRequest]) (*connect.Response[v1.DeletePublicPluginResponse], error) // Star-review moderation (ADR 0021). Unrelated to the submission queue // above: these act on user reviews (PluginReviewService), not plugins. ListFlaggedReviews(context.Context, *connect.Request[v1.ListFlaggedReviewsRequest]) (*connect.Response[v1.ListFlaggedReviewsResponse], error) SoftDeleteReview(context.Context, *connect.Request[v1.SoftDeleteReviewRequest]) (*connect.Response[v1.SoftDeleteReviewResponse], error) SoftDeleteReply(context.Context, *connect.Request[v1.SoftDeleteReplyRequest]) (*connect.Response[v1.SoftDeleteReplyResponse], error) + // Registry category catalog management. Slugs are immutable once created + // because plugin.mod manifests persist them; metadata and ordering remain + // editable. Deletion is rejected while any plugin uses the category. + CreateCategory(context.Context, *connect.Request[v1.CreateCategoryRequest]) (*connect.Response[v1.CreateCategoryResponse], error) + UpdateCategory(context.Context, *connect.Request[v1.UpdateCategoryRequest]) (*connect.Response[v1.UpdateCategoryResponse], error) + DeleteCategory(context.Context, *connect.Request[v1.DeleteCategoryRequest]) (*connect.Response[v1.DeleteCategoryResponse], error) } // NewPluginModerationServiceClient constructs a client for the @@ -805,6 +882,36 @@ func NewPluginModerationServiceClient(httpClient connect.HTTPClient, baseURL str connect.WithSchema(pluginModerationServiceMethods.ByName("RequestChanges")), connect.WithClientOptions(opts...), ), + unpublishPlugin: connect.NewClient[v1.UnpublishPluginRequest, v1.UnpublishPluginResponse]( + httpClient, + baseURL+PluginModerationServiceUnpublishPluginProcedure, + connect.WithSchema(pluginModerationServiceMethods.ByName("UnpublishPlugin")), + connect.WithClientOptions(opts...), + ), + takedownPlugin: connect.NewClient[v1.TakedownPluginRequest, v1.TakedownPluginResponse]( + httpClient, + baseURL+PluginModerationServiceTakedownPluginProcedure, + connect.WithSchema(pluginModerationServiceMethods.ByName("TakedownPlugin")), + connect.WithClientOptions(opts...), + ), + restorePlugin: connect.NewClient[v1.RestorePluginRequest, v1.RestorePluginResponse]( + httpClient, + baseURL+PluginModerationServiceRestorePluginProcedure, + connect.WithSchema(pluginModerationServiceMethods.ByName("RestorePlugin")), + connect.WithClientOptions(opts...), + ), + yankVersion: connect.NewClient[v1.YankVersionRequest, v1.YankVersionResponse]( + httpClient, + baseURL+PluginModerationServiceYankVersionProcedure, + connect.WithSchema(pluginModerationServiceMethods.ByName("YankVersion")), + connect.WithClientOptions(opts...), + ), + deletePublicPlugin: connect.NewClient[v1.DeletePublicPluginRequest, v1.DeletePublicPluginResponse]( + httpClient, + baseURL+PluginModerationServiceDeletePublicPluginProcedure, + connect.WithSchema(pluginModerationServiceMethods.ByName("DeletePublicPlugin")), + connect.WithClientOptions(opts...), + ), listFlaggedReviews: connect.NewClient[v1.ListFlaggedReviewsRequest, v1.ListFlaggedReviewsResponse]( httpClient, baseURL+PluginModerationServiceListFlaggedReviewsProcedure, @@ -823,6 +930,24 @@ func NewPluginModerationServiceClient(httpClient connect.HTTPClient, baseURL str connect.WithSchema(pluginModerationServiceMethods.ByName("SoftDeleteReply")), connect.WithClientOptions(opts...), ), + createCategory: connect.NewClient[v1.CreateCategoryRequest, v1.CreateCategoryResponse]( + httpClient, + baseURL+PluginModerationServiceCreateCategoryProcedure, + connect.WithSchema(pluginModerationServiceMethods.ByName("CreateCategory")), + connect.WithClientOptions(opts...), + ), + updateCategory: connect.NewClient[v1.UpdateCategoryRequest, v1.UpdateCategoryResponse]( + httpClient, + baseURL+PluginModerationServiceUpdateCategoryProcedure, + connect.WithSchema(pluginModerationServiceMethods.ByName("UpdateCategory")), + connect.WithClientOptions(opts...), + ), + deleteCategory: connect.NewClient[v1.DeleteCategoryRequest, v1.DeleteCategoryResponse]( + httpClient, + baseURL+PluginModerationServiceDeleteCategoryProcedure, + connect.WithSchema(pluginModerationServiceMethods.ByName("DeleteCategory")), + connect.WithClientOptions(opts...), + ), } } @@ -832,9 +957,17 @@ type pluginModerationServiceClient struct { approveSubmission *connect.Client[v1.ApproveSubmissionRequest, v1.ApproveSubmissionResponse] rejectSubmission *connect.Client[v1.RejectSubmissionRequest, v1.RejectSubmissionResponse] requestChanges *connect.Client[v1.RequestChangesRequest, v1.RequestChangesResponse] + unpublishPlugin *connect.Client[v1.UnpublishPluginRequest, v1.UnpublishPluginResponse] + takedownPlugin *connect.Client[v1.TakedownPluginRequest, v1.TakedownPluginResponse] + restorePlugin *connect.Client[v1.RestorePluginRequest, v1.RestorePluginResponse] + yankVersion *connect.Client[v1.YankVersionRequest, v1.YankVersionResponse] + deletePublicPlugin *connect.Client[v1.DeletePublicPluginRequest, v1.DeletePublicPluginResponse] listFlaggedReviews *connect.Client[v1.ListFlaggedReviewsRequest, v1.ListFlaggedReviewsResponse] softDeleteReview *connect.Client[v1.SoftDeleteReviewRequest, v1.SoftDeleteReviewResponse] softDeleteReply *connect.Client[v1.SoftDeleteReplyRequest, v1.SoftDeleteReplyResponse] + createCategory *connect.Client[v1.CreateCategoryRequest, v1.CreateCategoryResponse] + updateCategory *connect.Client[v1.UpdateCategoryRequest, v1.UpdateCategoryResponse] + deleteCategory *connect.Client[v1.DeleteCategoryRequest, v1.DeleteCategoryResponse] } // ListPendingReviews calls orchestrator.v1.PluginModerationService.ListPendingReviews. @@ -857,6 +990,31 @@ func (c *pluginModerationServiceClient) RequestChanges(ctx context.Context, req return c.requestChanges.CallUnary(ctx, req) } +// UnpublishPlugin calls orchestrator.v1.PluginModerationService.UnpublishPlugin. +func (c *pluginModerationServiceClient) UnpublishPlugin(ctx context.Context, req *connect.Request[v1.UnpublishPluginRequest]) (*connect.Response[v1.UnpublishPluginResponse], error) { + return c.unpublishPlugin.CallUnary(ctx, req) +} + +// TakedownPlugin calls orchestrator.v1.PluginModerationService.TakedownPlugin. +func (c *pluginModerationServiceClient) TakedownPlugin(ctx context.Context, req *connect.Request[v1.TakedownPluginRequest]) (*connect.Response[v1.TakedownPluginResponse], error) { + return c.takedownPlugin.CallUnary(ctx, req) +} + +// RestorePlugin calls orchestrator.v1.PluginModerationService.RestorePlugin. +func (c *pluginModerationServiceClient) RestorePlugin(ctx context.Context, req *connect.Request[v1.RestorePluginRequest]) (*connect.Response[v1.RestorePluginResponse], error) { + return c.restorePlugin.CallUnary(ctx, req) +} + +// YankVersion calls orchestrator.v1.PluginModerationService.YankVersion. +func (c *pluginModerationServiceClient) YankVersion(ctx context.Context, req *connect.Request[v1.YankVersionRequest]) (*connect.Response[v1.YankVersionResponse], error) { + return c.yankVersion.CallUnary(ctx, req) +} + +// DeletePublicPlugin calls orchestrator.v1.PluginModerationService.DeletePublicPlugin. +func (c *pluginModerationServiceClient) DeletePublicPlugin(ctx context.Context, req *connect.Request[v1.DeletePublicPluginRequest]) (*connect.Response[v1.DeletePublicPluginResponse], error) { + return c.deletePublicPlugin.CallUnary(ctx, req) +} + // ListFlaggedReviews calls orchestrator.v1.PluginModerationService.ListFlaggedReviews. func (c *pluginModerationServiceClient) ListFlaggedReviews(ctx context.Context, req *connect.Request[v1.ListFlaggedReviewsRequest]) (*connect.Response[v1.ListFlaggedReviewsResponse], error) { return c.listFlaggedReviews.CallUnary(ctx, req) @@ -872,6 +1030,21 @@ func (c *pluginModerationServiceClient) SoftDeleteReply(ctx context.Context, req return c.softDeleteReply.CallUnary(ctx, req) } +// CreateCategory calls orchestrator.v1.PluginModerationService.CreateCategory. +func (c *pluginModerationServiceClient) CreateCategory(ctx context.Context, req *connect.Request[v1.CreateCategoryRequest]) (*connect.Response[v1.CreateCategoryResponse], error) { + return c.createCategory.CallUnary(ctx, req) +} + +// UpdateCategory calls orchestrator.v1.PluginModerationService.UpdateCategory. +func (c *pluginModerationServiceClient) UpdateCategory(ctx context.Context, req *connect.Request[v1.UpdateCategoryRequest]) (*connect.Response[v1.UpdateCategoryResponse], error) { + return c.updateCategory.CallUnary(ctx, req) +} + +// DeleteCategory calls orchestrator.v1.PluginModerationService.DeleteCategory. +func (c *pluginModerationServiceClient) DeleteCategory(ctx context.Context, req *connect.Request[v1.DeleteCategoryRequest]) (*connect.Response[v1.DeleteCategoryResponse], error) { + return c.deleteCategory.CallUnary(ctx, req) +} + // PluginModerationServiceHandler is an implementation of the // orchestrator.v1.PluginModerationService service. type PluginModerationServiceHandler interface { @@ -879,11 +1052,34 @@ type PluginModerationServiceHandler interface { ApproveSubmission(context.Context, *connect.Request[v1.ApproveSubmissionRequest]) (*connect.Response[v1.ApproveSubmissionResponse], error) RejectSubmission(context.Context, *connect.Request[v1.RejectSubmissionRequest]) (*connect.Response[v1.RejectSubmissionResponse], error) RequestChanges(context.Context, *connect.Request[v1.RequestChangesRequest]) (*connect.Response[v1.RequestChangesResponse], error) + // Post-publication lifecycle control (WO-057). These act on plugins that are + // already public (or under_review), giving operators the ability to pull a + // plugin back out of the catalog after it shipped: + // - UnpublishPlugin: public -> under_review. Stops new installs, leaves + // existing installs untouched. Reversible via re-moderation. + // - TakedownPlugin: public|under_review -> taken_down. For malware. The + // instance sweep that force-uninstalls it everywhere is a separate flow + // (WO-059); this RPC only moves catalog state. + // - RestorePlugin: taken_down -> under_review (operator re-approves; not + // auto-republished). + // - YankVersion: marks a single version unusable without touching siblings. + // - DeletePublicPlugin: superadmin hard-delete incl. archive blobs. + UnpublishPlugin(context.Context, *connect.Request[v1.UnpublishPluginRequest]) (*connect.Response[v1.UnpublishPluginResponse], error) + TakedownPlugin(context.Context, *connect.Request[v1.TakedownPluginRequest]) (*connect.Response[v1.TakedownPluginResponse], error) + RestorePlugin(context.Context, *connect.Request[v1.RestorePluginRequest]) (*connect.Response[v1.RestorePluginResponse], error) + YankVersion(context.Context, *connect.Request[v1.YankVersionRequest]) (*connect.Response[v1.YankVersionResponse], error) + DeletePublicPlugin(context.Context, *connect.Request[v1.DeletePublicPluginRequest]) (*connect.Response[v1.DeletePublicPluginResponse], error) // Star-review moderation (ADR 0021). Unrelated to the submission queue // above: these act on user reviews (PluginReviewService), not plugins. ListFlaggedReviews(context.Context, *connect.Request[v1.ListFlaggedReviewsRequest]) (*connect.Response[v1.ListFlaggedReviewsResponse], error) SoftDeleteReview(context.Context, *connect.Request[v1.SoftDeleteReviewRequest]) (*connect.Response[v1.SoftDeleteReviewResponse], error) SoftDeleteReply(context.Context, *connect.Request[v1.SoftDeleteReplyRequest]) (*connect.Response[v1.SoftDeleteReplyResponse], error) + // Registry category catalog management. Slugs are immutable once created + // because plugin.mod manifests persist them; metadata and ordering remain + // editable. Deletion is rejected while any plugin uses the category. + CreateCategory(context.Context, *connect.Request[v1.CreateCategoryRequest]) (*connect.Response[v1.CreateCategoryResponse], error) + UpdateCategory(context.Context, *connect.Request[v1.UpdateCategoryRequest]) (*connect.Response[v1.UpdateCategoryResponse], error) + DeleteCategory(context.Context, *connect.Request[v1.DeleteCategoryRequest]) (*connect.Response[v1.DeleteCategoryResponse], error) } // NewPluginModerationServiceHandler builds an HTTP handler from the service implementation. It @@ -917,6 +1113,36 @@ func NewPluginModerationServiceHandler(svc PluginModerationServiceHandler, opts connect.WithSchema(pluginModerationServiceMethods.ByName("RequestChanges")), connect.WithHandlerOptions(opts...), ) + pluginModerationServiceUnpublishPluginHandler := connect.NewUnaryHandler( + PluginModerationServiceUnpublishPluginProcedure, + svc.UnpublishPlugin, + connect.WithSchema(pluginModerationServiceMethods.ByName("UnpublishPlugin")), + connect.WithHandlerOptions(opts...), + ) + pluginModerationServiceTakedownPluginHandler := connect.NewUnaryHandler( + PluginModerationServiceTakedownPluginProcedure, + svc.TakedownPlugin, + connect.WithSchema(pluginModerationServiceMethods.ByName("TakedownPlugin")), + connect.WithHandlerOptions(opts...), + ) + pluginModerationServiceRestorePluginHandler := connect.NewUnaryHandler( + PluginModerationServiceRestorePluginProcedure, + svc.RestorePlugin, + connect.WithSchema(pluginModerationServiceMethods.ByName("RestorePlugin")), + connect.WithHandlerOptions(opts...), + ) + pluginModerationServiceYankVersionHandler := connect.NewUnaryHandler( + PluginModerationServiceYankVersionProcedure, + svc.YankVersion, + connect.WithSchema(pluginModerationServiceMethods.ByName("YankVersion")), + connect.WithHandlerOptions(opts...), + ) + pluginModerationServiceDeletePublicPluginHandler := connect.NewUnaryHandler( + PluginModerationServiceDeletePublicPluginProcedure, + svc.DeletePublicPlugin, + connect.WithSchema(pluginModerationServiceMethods.ByName("DeletePublicPlugin")), + connect.WithHandlerOptions(opts...), + ) pluginModerationServiceListFlaggedReviewsHandler := connect.NewUnaryHandler( PluginModerationServiceListFlaggedReviewsProcedure, svc.ListFlaggedReviews, @@ -935,6 +1161,24 @@ func NewPluginModerationServiceHandler(svc PluginModerationServiceHandler, opts connect.WithSchema(pluginModerationServiceMethods.ByName("SoftDeleteReply")), connect.WithHandlerOptions(opts...), ) + pluginModerationServiceCreateCategoryHandler := connect.NewUnaryHandler( + PluginModerationServiceCreateCategoryProcedure, + svc.CreateCategory, + connect.WithSchema(pluginModerationServiceMethods.ByName("CreateCategory")), + connect.WithHandlerOptions(opts...), + ) + pluginModerationServiceUpdateCategoryHandler := connect.NewUnaryHandler( + PluginModerationServiceUpdateCategoryProcedure, + svc.UpdateCategory, + connect.WithSchema(pluginModerationServiceMethods.ByName("UpdateCategory")), + connect.WithHandlerOptions(opts...), + ) + pluginModerationServiceDeleteCategoryHandler := connect.NewUnaryHandler( + PluginModerationServiceDeleteCategoryProcedure, + svc.DeleteCategory, + connect.WithSchema(pluginModerationServiceMethods.ByName("DeleteCategory")), + connect.WithHandlerOptions(opts...), + ) return "/orchestrator.v1.PluginModerationService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { switch r.URL.Path { case PluginModerationServiceListPendingReviewsProcedure: @@ -945,12 +1189,28 @@ func NewPluginModerationServiceHandler(svc PluginModerationServiceHandler, opts pluginModerationServiceRejectSubmissionHandler.ServeHTTP(w, r) case PluginModerationServiceRequestChangesProcedure: pluginModerationServiceRequestChangesHandler.ServeHTTP(w, r) + case PluginModerationServiceUnpublishPluginProcedure: + pluginModerationServiceUnpublishPluginHandler.ServeHTTP(w, r) + case PluginModerationServiceTakedownPluginProcedure: + pluginModerationServiceTakedownPluginHandler.ServeHTTP(w, r) + case PluginModerationServiceRestorePluginProcedure: + pluginModerationServiceRestorePluginHandler.ServeHTTP(w, r) + case PluginModerationServiceYankVersionProcedure: + pluginModerationServiceYankVersionHandler.ServeHTTP(w, r) + case PluginModerationServiceDeletePublicPluginProcedure: + pluginModerationServiceDeletePublicPluginHandler.ServeHTTP(w, r) case PluginModerationServiceListFlaggedReviewsProcedure: pluginModerationServiceListFlaggedReviewsHandler.ServeHTTP(w, r) case PluginModerationServiceSoftDeleteReviewProcedure: pluginModerationServiceSoftDeleteReviewHandler.ServeHTTP(w, r) case PluginModerationServiceSoftDeleteReplyProcedure: pluginModerationServiceSoftDeleteReplyHandler.ServeHTTP(w, r) + case PluginModerationServiceCreateCategoryProcedure: + pluginModerationServiceCreateCategoryHandler.ServeHTTP(w, r) + case PluginModerationServiceUpdateCategoryProcedure: + pluginModerationServiceUpdateCategoryHandler.ServeHTTP(w, r) + case PluginModerationServiceDeleteCategoryProcedure: + pluginModerationServiceDeleteCategoryHandler.ServeHTTP(w, r) default: http.NotFound(w, r) } @@ -976,6 +1236,26 @@ func (UnimplementedPluginModerationServiceHandler) RequestChanges(context.Contex return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.RequestChanges is not implemented")) } +func (UnimplementedPluginModerationServiceHandler) UnpublishPlugin(context.Context, *connect.Request[v1.UnpublishPluginRequest]) (*connect.Response[v1.UnpublishPluginResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.UnpublishPlugin is not implemented")) +} + +func (UnimplementedPluginModerationServiceHandler) TakedownPlugin(context.Context, *connect.Request[v1.TakedownPluginRequest]) (*connect.Response[v1.TakedownPluginResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.TakedownPlugin is not implemented")) +} + +func (UnimplementedPluginModerationServiceHandler) RestorePlugin(context.Context, *connect.Request[v1.RestorePluginRequest]) (*connect.Response[v1.RestorePluginResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.RestorePlugin is not implemented")) +} + +func (UnimplementedPluginModerationServiceHandler) YankVersion(context.Context, *connect.Request[v1.YankVersionRequest]) (*connect.Response[v1.YankVersionResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.YankVersion is not implemented")) +} + +func (UnimplementedPluginModerationServiceHandler) DeletePublicPlugin(context.Context, *connect.Request[v1.DeletePublicPluginRequest]) (*connect.Response[v1.DeletePublicPluginResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.DeletePublicPlugin is not implemented")) +} + func (UnimplementedPluginModerationServiceHandler) ListFlaggedReviews(context.Context, *connect.Request[v1.ListFlaggedReviewsRequest]) (*connect.Response[v1.ListFlaggedReviewsResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.ListFlaggedReviews is not implemented")) } @@ -988,6 +1268,18 @@ func (UnimplementedPluginModerationServiceHandler) SoftDeleteReply(context.Conte return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.SoftDeleteReply is not implemented")) } +func (UnimplementedPluginModerationServiceHandler) CreateCategory(context.Context, *connect.Request[v1.CreateCategoryRequest]) (*connect.Response[v1.CreateCategoryResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.CreateCategory is not implemented")) +} + +func (UnimplementedPluginModerationServiceHandler) UpdateCategory(context.Context, *connect.Request[v1.UpdateCategoryRequest]) (*connect.Response[v1.UpdateCategoryResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.UpdateCategory is not implemented")) +} + +func (UnimplementedPluginModerationServiceHandler) DeleteCategory(context.Context, *connect.Request[v1.DeleteCategoryRequest]) (*connect.Response[v1.DeleteCategoryResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("orchestrator.v1.PluginModerationService.DeleteCategory is not implemented")) +} + // PluginGalleryServiceClient is a client for the orchestrator.v1.PluginGalleryService service. type PluginGalleryServiceClient interface { ListScreenshots(context.Context, *connect.Request[v1.ListScreenshotsRequest]) (*connect.Response[v1.ListScreenshotsResponse], error) diff --git a/internal/api/orchestrator/v1/plugin_registry.pb.go b/internal/api/orchestrator/v1/plugin_registry.pb.go index a99eb68..67838b2 100644 --- a/internal/api/orchestrator/v1/plugin_registry.pb.go +++ b/internal/api/orchestrator/v1/plugin_registry.pb.go @@ -435,6 +435,7 @@ type Category struct { DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` SortOrder int32 `protobuf:"varint,4,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` + PluginCount int32 `protobuf:"varint,5,opt,name=plugin_count,json=pluginCount,proto3" json:"plugin_count,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -497,6 +498,13 @@ func (x *Category) GetSortOrder() int32 { return 0 } +func (x *Category) GetPluginCount() int32 { + if x != nil { + return x.PluginCount + } + return 0 +} + type Version struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -2314,8 +2322,23 @@ type ResolveInstallRequest struct { // resolves (account_id, name) and verifies the caller's account // membership. Ignored for public scopes. ActiveAccountId string `protobuf:"bytes,4,opt,name=active_account_id,json=activeAccountId,proto3" json:"active_account_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // When latest_compatible is true the registry chooses the newest + // non-yanked version that exactly matches host_abi_version and whose + // plugin_sdk constraint accepts host_sdk_version and, for an admin bundle, + // whose admin_api constraint accepts host_api_version. Host contract fields + // and current_version are required unless allow_initial_version is set; the + // registry fails closed when it cannot prove compatibility. + HostSdkVersion string `protobuf:"bytes,5,opt,name=host_sdk_version,json=hostSdkVersion,proto3" json:"host_sdk_version,omitempty"` + HostAbiVersion uint32 `protobuf:"varint,6,opt,name=host_abi_version,json=hostAbiVersion,proto3" json:"host_abi_version,omitempty"` + LatestCompatible bool `protobuf:"varint,7,opt,name=latest_compatible,json=latestCompatible,proto3" json:"latest_compatible,omitempty"` + CurrentVersion string `protobuf:"bytes,8,opt,name=current_version,json=currentVersion,proto3" json:"current_version,omitempty"` + HostApiVersion string `protobuf:"bytes,9,opt,name=host_api_version,json=hostApiVersion,proto3" json:"host_api_version,omitempty"` + // allow_initial_version is reserved for authenticated delivery migrations + // whose legacy row has no semantic version. It selects the highest stable, + // compatible release without inventing a 0.x major. + AllowInitialVersion bool `protobuf:"varint,10,opt,name=allow_initial_version,json=allowInitialVersion,proto3" json:"allow_initial_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResolveInstallRequest) Reset() { @@ -2376,6 +2399,48 @@ func (x *ResolveInstallRequest) GetActiveAccountId() string { return "" } +func (x *ResolveInstallRequest) GetHostSdkVersion() string { + if x != nil { + return x.HostSdkVersion + } + return "" +} + +func (x *ResolveInstallRequest) GetHostAbiVersion() uint32 { + if x != nil { + return x.HostAbiVersion + } + return 0 +} + +func (x *ResolveInstallRequest) GetLatestCompatible() bool { + if x != nil { + return x.LatestCompatible + } + return false +} + +func (x *ResolveInstallRequest) GetCurrentVersion() string { + if x != nil { + return x.CurrentVersion + } + return "" +} + +func (x *ResolveInstallRequest) GetHostApiVersion() string { + if x != nil { + return x.HostApiVersion + } + return "" +} + +func (x *ResolveInstallRequest) GetAllowInitialVersion() bool { + if x != nil { + return x.AllowInitialVersion + } + return false +} + type ResolveInstallResponse struct { state protoimpl.MessageState `protogen:"open.v1"` VersionId string `protobuf:"bytes,1,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` @@ -2392,9 +2457,11 @@ type ResolveInstallResponse struct { // abi_version is the wasm ABI major of the resolved artifact (WO-WZ-011); 0 // for a legacy source archive. The installing instance rejects an artifact // whose abi_version its loader cannot run. - AbiVersion uint32 `protobuf:"varint,12,opt,name=abi_version,json=abiVersion,proto3" json:"abi_version,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + AbiVersion uint32 `protobuf:"varint,12,opt,name=abi_version,json=abiVersion,proto3" json:"abi_version,omitempty"` + AdminApiConstraint string `protobuf:"bytes,13,opt,name=admin_api_constraint,json=adminApiConstraint,proto3" json:"admin_api_constraint,omitempty"` + HasAdminUi bool `protobuf:"varint,14,opt,name=has_admin_ui,json=hasAdminUi,proto3" json:"has_admin_ui,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResolveInstallResponse) Reset() { @@ -2511,6 +2578,20 @@ func (x *ResolveInstallResponse) GetAbiVersion() uint32 { return 0 } +func (x *ResolveInstallResponse) GetAdminApiConstraint() string { + if x != nil { + return x.AdminApiConstraint + } + return "" +} + +func (x *ResolveInstallResponse) GetHasAdminUi() bool { + if x != nil { + return x.HasAdminUi + } + return false +} + type ListPrivatePluginsForInstanceRequest struct { state protoimpl.MessageState `protogen:"open.v1"` InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` @@ -2563,9 +2644,15 @@ type ResolveInstallForInstanceRequest struct { // scope_slug selects the plugin's scope. Empty or "private" resolves the // calling account's private plugin (the original behavior); any other value // resolves a PUBLIC plugin in that scope (ADR 0021). - ScopeSlug string `protobuf:"bytes,4,opt,name=scope_slug,json=scopeSlug,proto3" json:"scope_slug,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + ScopeSlug string `protobuf:"bytes,4,opt,name=scope_slug,json=scopeSlug,proto3" json:"scope_slug,omitempty"` + HostSdkVersion string `protobuf:"bytes,5,opt,name=host_sdk_version,json=hostSdkVersion,proto3" json:"host_sdk_version,omitempty"` + HostAbiVersion uint32 `protobuf:"varint,6,opt,name=host_abi_version,json=hostAbiVersion,proto3" json:"host_abi_version,omitempty"` + LatestCompatible bool `protobuf:"varint,7,opt,name=latest_compatible,json=latestCompatible,proto3" json:"latest_compatible,omitempty"` + CurrentVersion string `protobuf:"bytes,8,opt,name=current_version,json=currentVersion,proto3" json:"current_version,omitempty"` + HostApiVersion string `protobuf:"bytes,9,opt,name=host_api_version,json=hostApiVersion,proto3" json:"host_api_version,omitempty"` + AllowInitialVersion bool `protobuf:"varint,10,opt,name=allow_initial_version,json=allowInitialVersion,proto3" json:"allow_initial_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResolveInstallForInstanceRequest) Reset() { @@ -2626,6 +2713,168 @@ func (x *ResolveInstallForInstanceRequest) GetScopeSlug() string { return "" } +func (x *ResolveInstallForInstanceRequest) GetHostSdkVersion() string { + if x != nil { + return x.HostSdkVersion + } + return "" +} + +func (x *ResolveInstallForInstanceRequest) GetHostAbiVersion() uint32 { + if x != nil { + return x.HostAbiVersion + } + return 0 +} + +func (x *ResolveInstallForInstanceRequest) GetLatestCompatible() bool { + if x != nil { + return x.LatestCompatible + } + return false +} + +func (x *ResolveInstallForInstanceRequest) GetCurrentVersion() string { + if x != nil { + return x.CurrentVersion + } + return "" +} + +func (x *ResolveInstallForInstanceRequest) GetHostApiVersion() string { + if x != nil { + return x.HostApiVersion + } + return "" +} + +func (x *ResolveInstallForInstanceRequest) GetAllowInitialVersion() bool { + if x != nil { + return x.AllowInitialVersion + } + return false +} + +type ConfirmPluginInstallForInstanceRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + ScopeSlug string `protobuf:"bytes,2,opt,name=scope_slug,json=scopeSlug,proto3" json:"scope_slug,omitempty"` + PluginName string `protobuf:"bytes,3,opt,name=plugin_name,json=pluginName,proto3" json:"plugin_name,omitempty"` + VersionId string `protobuf:"bytes,4,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"` + Version string `protobuf:"bytes,5,opt,name=version,proto3" json:"version,omitempty"` + ArchiveSha256 string `protobuf:"bytes,6,opt,name=archive_sha256,json=archiveSha256,proto3" json:"archive_sha256,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfirmPluginInstallForInstanceRequest) Reset() { + *x = ConfirmPluginInstallForInstanceRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfirmPluginInstallForInstanceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfirmPluginInstallForInstanceRequest) ProtoMessage() {} + +func (x *ConfirmPluginInstallForInstanceRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[41] + 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 ConfirmPluginInstallForInstanceRequest.ProtoReflect.Descriptor instead. +func (*ConfirmPluginInstallForInstanceRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{41} +} + +func (x *ConfirmPluginInstallForInstanceRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *ConfirmPluginInstallForInstanceRequest) GetScopeSlug() string { + if x != nil { + return x.ScopeSlug + } + return "" +} + +func (x *ConfirmPluginInstallForInstanceRequest) GetPluginName() string { + if x != nil { + return x.PluginName + } + return "" +} + +func (x *ConfirmPluginInstallForInstanceRequest) GetVersionId() string { + if x != nil { + return x.VersionId + } + return "" +} + +func (x *ConfirmPluginInstallForInstanceRequest) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *ConfirmPluginInstallForInstanceRequest) GetArchiveSha256() string { + if x != nil { + return x.ArchiveSha256 + } + return "" +} + +type ConfirmPluginInstallForInstanceResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ConfirmPluginInstallForInstanceResponse) Reset() { + *x = ConfirmPluginInstallForInstanceResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ConfirmPluginInstallForInstanceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfirmPluginInstallForInstanceResponse) ProtoMessage() {} + +func (x *ConfirmPluginInstallForInstanceResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[42] + 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 ConfirmPluginInstallForInstanceResponse.ProtoReflect.Descriptor instead. +func (*ConfirmPluginInstallForInstanceResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{42} +} + type PendingReview struct { state protoimpl.MessageState `protogen:"open.v1"` ReviewId string `protobuf:"bytes,1,opt,name=review_id,json=reviewId,proto3" json:"review_id,omitempty"` @@ -2641,7 +2890,7 @@ type PendingReview struct { func (x *PendingReview) Reset() { *x = PendingReview{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[41] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2653,7 +2902,7 @@ func (x *PendingReview) String() string { func (*PendingReview) ProtoMessage() {} func (x *PendingReview) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[41] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2666,7 +2915,7 @@ func (x *PendingReview) ProtoReflect() protoreflect.Message { // Deprecated: Use PendingReview.ProtoReflect.Descriptor instead. func (*PendingReview) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{41} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{43} } func (x *PendingReview) GetReviewId() string { @@ -2727,7 +2976,7 @@ type SubmitForReviewRequest struct { func (x *SubmitForReviewRequest) Reset() { *x = SubmitForReviewRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[42] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2739,7 +2988,7 @@ func (x *SubmitForReviewRequest) String() string { func (*SubmitForReviewRequest) ProtoMessage() {} func (x *SubmitForReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[42] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2752,7 +3001,7 @@ func (x *SubmitForReviewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitForReviewRequest.ProtoReflect.Descriptor instead. func (*SubmitForReviewRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{42} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{44} } func (x *SubmitForReviewRequest) GetPluginId() string { @@ -2775,7 +3024,7 @@ type SubmitForReviewResponse struct { func (x *SubmitForReviewResponse) Reset() { *x = SubmitForReviewResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[43] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2787,7 +3036,7 @@ func (x *SubmitForReviewResponse) String() string { func (*SubmitForReviewResponse) ProtoMessage() {} func (x *SubmitForReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[43] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2800,7 +3049,7 @@ func (x *SubmitForReviewResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitForReviewResponse.ProtoReflect.Descriptor instead. func (*SubmitForReviewResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{43} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{45} } func (x *SubmitForReviewResponse) GetVisibility() string { @@ -2820,7 +3069,7 @@ type ListPendingReviewsRequest struct { func (x *ListPendingReviewsRequest) Reset() { *x = ListPendingReviewsRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[44] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2832,7 +3081,7 @@ func (x *ListPendingReviewsRequest) String() string { func (*ListPendingReviewsRequest) ProtoMessage() {} func (x *ListPendingReviewsRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[44] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2845,7 +3094,7 @@ func (x *ListPendingReviewsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPendingReviewsRequest.ProtoReflect.Descriptor instead. func (*ListPendingReviewsRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{44} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{46} } func (x *ListPendingReviewsRequest) GetLimit() int32 { @@ -2871,7 +3120,7 @@ type ListPendingReviewsResponse struct { func (x *ListPendingReviewsResponse) Reset() { *x = ListPendingReviewsResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[45] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2883,7 +3132,7 @@ func (x *ListPendingReviewsResponse) String() string { func (*ListPendingReviewsResponse) ProtoMessage() {} func (x *ListPendingReviewsResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[45] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2896,7 +3145,7 @@ func (x *ListPendingReviewsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPendingReviewsResponse.ProtoReflect.Descriptor instead. func (*ListPendingReviewsResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{45} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{47} } func (x *ListPendingReviewsResponse) GetReviews() []*PendingReview { @@ -2916,7 +3165,7 @@ type ApproveSubmissionRequest struct { func (x *ApproveSubmissionRequest) Reset() { *x = ApproveSubmissionRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[46] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2928,7 +3177,7 @@ func (x *ApproveSubmissionRequest) String() string { func (*ApproveSubmissionRequest) ProtoMessage() {} func (x *ApproveSubmissionRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[46] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2941,7 +3190,7 @@ func (x *ApproveSubmissionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApproveSubmissionRequest.ProtoReflect.Descriptor instead. func (*ApproveSubmissionRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{46} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{48} } func (x *ApproveSubmissionRequest) GetPluginId() string { @@ -2966,7 +3215,7 @@ type ApproveSubmissionResponse struct { func (x *ApproveSubmissionResponse) Reset() { *x = ApproveSubmissionResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[47] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2978,7 +3227,7 @@ func (x *ApproveSubmissionResponse) String() string { func (*ApproveSubmissionResponse) ProtoMessage() {} func (x *ApproveSubmissionResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[47] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2991,7 +3240,7 @@ func (x *ApproveSubmissionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ApproveSubmissionResponse.ProtoReflect.Descriptor instead. func (*ApproveSubmissionResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{47} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{49} } type RejectSubmissionRequest struct { @@ -3004,7 +3253,7 @@ type RejectSubmissionRequest struct { func (x *RejectSubmissionRequest) Reset() { *x = RejectSubmissionRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[48] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3016,7 +3265,7 @@ func (x *RejectSubmissionRequest) String() string { func (*RejectSubmissionRequest) ProtoMessage() {} func (x *RejectSubmissionRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[48] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3029,7 +3278,7 @@ func (x *RejectSubmissionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RejectSubmissionRequest.ProtoReflect.Descriptor instead. func (*RejectSubmissionRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{48} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{50} } func (x *RejectSubmissionRequest) GetPluginId() string { @@ -3054,7 +3303,7 @@ type RejectSubmissionResponse struct { func (x *RejectSubmissionResponse) Reset() { *x = RejectSubmissionResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[49] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3066,7 +3315,7 @@ func (x *RejectSubmissionResponse) String() string { func (*RejectSubmissionResponse) ProtoMessage() {} func (x *RejectSubmissionResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[49] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3079,7 +3328,7 @@ func (x *RejectSubmissionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RejectSubmissionResponse.ProtoReflect.Descriptor instead. func (*RejectSubmissionResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{49} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{51} } type RequestChangesRequest struct { @@ -3092,7 +3341,7 @@ type RequestChangesRequest struct { func (x *RequestChangesRequest) Reset() { *x = RequestChangesRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[50] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3104,7 +3353,7 @@ func (x *RequestChangesRequest) String() string { func (*RequestChangesRequest) ProtoMessage() {} func (x *RequestChangesRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[50] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3117,7 +3366,7 @@ func (x *RequestChangesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestChangesRequest.ProtoReflect.Descriptor instead. func (*RequestChangesRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{50} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{52} } func (x *RequestChangesRequest) GetPluginId() string { @@ -3142,7 +3391,7 @@ type RequestChangesResponse struct { func (x *RequestChangesResponse) Reset() { *x = RequestChangesResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[51] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3154,7 +3403,7 @@ func (x *RequestChangesResponse) String() string { func (*RequestChangesResponse) ProtoMessage() {} func (x *RequestChangesResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[51] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3167,7 +3416,439 @@ func (x *RequestChangesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestChangesResponse.ProtoReflect.Descriptor instead. func (*RequestChangesResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{51} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{53} +} + +type UnpublishPluginRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` // required — audit trail + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UnpublishPluginRequest) Reset() { + *x = UnpublishPluginRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UnpublishPluginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnpublishPluginRequest) ProtoMessage() {} + +func (x *UnpublishPluginRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[54] + 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 UnpublishPluginRequest.ProtoReflect.Descriptor instead. +func (*UnpublishPluginRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{54} +} + +func (x *UnpublishPluginRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *UnpublishPluginRequest) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +type UnpublishPluginResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UnpublishPluginResponse) Reset() { + *x = UnpublishPluginResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UnpublishPluginResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UnpublishPluginResponse) ProtoMessage() {} + +func (x *UnpublishPluginResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[55] + 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 UnpublishPluginResponse.ProtoReflect.Descriptor instead. +func (*UnpublishPluginResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{55} +} + +type TakedownPluginRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` // required — audit trail + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TakedownPluginRequest) Reset() { + *x = TakedownPluginRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TakedownPluginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TakedownPluginRequest) ProtoMessage() {} + +func (x *TakedownPluginRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[56] + 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 TakedownPluginRequest.ProtoReflect.Descriptor instead. +func (*TakedownPluginRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{56} +} + +func (x *TakedownPluginRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *TakedownPluginRequest) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +type TakedownPluginResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TakedownPluginResponse) Reset() { + *x = TakedownPluginResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TakedownPluginResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TakedownPluginResponse) ProtoMessage() {} + +func (x *TakedownPluginResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[57] + 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 TakedownPluginResponse.ProtoReflect.Descriptor instead. +func (*TakedownPluginResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{57} +} + +type RestorePluginRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RestorePluginRequest) Reset() { + *x = RestorePluginRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RestorePluginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RestorePluginRequest) ProtoMessage() {} + +func (x *RestorePluginRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[58] + 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 RestorePluginRequest.ProtoReflect.Descriptor instead. +func (*RestorePluginRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{58} +} + +func (x *RestorePluginRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +type RestorePluginResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RestorePluginResponse) Reset() { + *x = RestorePluginResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RestorePluginResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RestorePluginResponse) ProtoMessage() {} + +func (x *RestorePluginResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[59] + 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 RestorePluginResponse.ProtoReflect.Descriptor instead. +func (*RestorePluginResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{59} +} + +type YankVersionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // required — the version string to yank (e.g. "0.2.3") + Reason string `protobuf:"bytes,3,opt,name=reason,proto3" json:"reason,omitempty"` // required — audit trail + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *YankVersionRequest) Reset() { + *x = YankVersionRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *YankVersionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YankVersionRequest) ProtoMessage() {} + +func (x *YankVersionRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[60] + 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 YankVersionRequest.ProtoReflect.Descriptor instead. +func (*YankVersionRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{60} +} + +func (x *YankVersionRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +func (x *YankVersionRequest) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *YankVersionRequest) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +type YankVersionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *YankVersionResponse) Reset() { + *x = YankVersionResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *YankVersionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*YankVersionResponse) ProtoMessage() {} + +func (x *YankVersionResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[61] + 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 YankVersionResponse.ProtoReflect.Descriptor instead. +func (*YankVersionResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{61} +} + +type DeletePublicPluginRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PluginId string `protobuf:"bytes,1,opt,name=plugin_id,json=pluginId,proto3" json:"plugin_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePublicPluginRequest) Reset() { + *x = DeletePublicPluginRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePublicPluginRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePublicPluginRequest) ProtoMessage() {} + +func (x *DeletePublicPluginRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[62] + 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 DeletePublicPluginRequest.ProtoReflect.Descriptor instead. +func (*DeletePublicPluginRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{62} +} + +func (x *DeletePublicPluginRequest) GetPluginId() string { + if x != nil { + return x.PluginId + } + return "" +} + +type DeletePublicPluginResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeletePublicPluginResponse) Reset() { + *x = DeletePublicPluginResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeletePublicPluginResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePublicPluginResponse) ProtoMessage() {} + +func (x *DeletePublicPluginResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[63] + 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 DeletePublicPluginResponse.ProtoReflect.Descriptor instead. +func (*DeletePublicPluginResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{63} } type ListScreenshotsRequest struct { @@ -3180,7 +3861,7 @@ type ListScreenshotsRequest struct { func (x *ListScreenshotsRequest) Reset() { *x = ListScreenshotsRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[52] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3192,7 +3873,7 @@ func (x *ListScreenshotsRequest) String() string { func (*ListScreenshotsRequest) ProtoMessage() {} func (x *ListScreenshotsRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[52] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3205,7 +3886,7 @@ func (x *ListScreenshotsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListScreenshotsRequest.ProtoReflect.Descriptor instead. func (*ListScreenshotsRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{52} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{64} } func (x *ListScreenshotsRequest) GetScopeSlug() string { @@ -3231,7 +3912,7 @@ type ListScreenshotsResponse struct { func (x *ListScreenshotsResponse) Reset() { *x = ListScreenshotsResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[53] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3243,7 +3924,7 @@ func (x *ListScreenshotsResponse) String() string { func (*ListScreenshotsResponse) ProtoMessage() {} func (x *ListScreenshotsResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[53] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3256,7 +3937,7 @@ func (x *ListScreenshotsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListScreenshotsResponse.ProtoReflect.Descriptor instead. func (*ListScreenshotsResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{53} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{65} } func (x *ListScreenshotsResponse) GetScreenshots() []*PluginScreenshot { @@ -3279,7 +3960,7 @@ type UploadScreenshotRequest struct { func (x *UploadScreenshotRequest) Reset() { *x = UploadScreenshotRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[54] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3291,7 +3972,7 @@ func (x *UploadScreenshotRequest) String() string { func (*UploadScreenshotRequest) ProtoMessage() {} func (x *UploadScreenshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[54] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3304,7 +3985,7 @@ func (x *UploadScreenshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadScreenshotRequest.ProtoReflect.Descriptor instead. func (*UploadScreenshotRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{54} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{66} } func (x *UploadScreenshotRequest) GetPluginId() string { @@ -3344,7 +4025,7 @@ type UploadScreenshotResponse struct { func (x *UploadScreenshotResponse) Reset() { *x = UploadScreenshotResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[55] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3356,7 +4037,7 @@ func (x *UploadScreenshotResponse) String() string { func (*UploadScreenshotResponse) ProtoMessage() {} func (x *UploadScreenshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[55] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3369,7 +4050,7 @@ func (x *UploadScreenshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadScreenshotResponse.ProtoReflect.Descriptor instead. func (*UploadScreenshotResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{55} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{67} } func (x *UploadScreenshotResponse) GetScreenshot() *PluginScreenshot { @@ -3389,7 +4070,7 @@ type DeleteScreenshotRequest struct { func (x *DeleteScreenshotRequest) Reset() { *x = DeleteScreenshotRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[56] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3401,7 +4082,7 @@ func (x *DeleteScreenshotRequest) String() string { func (*DeleteScreenshotRequest) ProtoMessage() {} func (x *DeleteScreenshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[56] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3414,7 +4095,7 @@ func (x *DeleteScreenshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScreenshotRequest.ProtoReflect.Descriptor instead. func (*DeleteScreenshotRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{56} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{68} } func (x *DeleteScreenshotRequest) GetPluginId() string { @@ -3439,7 +4120,7 @@ type DeleteScreenshotResponse struct { func (x *DeleteScreenshotResponse) Reset() { *x = DeleteScreenshotResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[57] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3451,7 +4132,7 @@ func (x *DeleteScreenshotResponse) String() string { func (*DeleteScreenshotResponse) ProtoMessage() {} func (x *DeleteScreenshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[57] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3464,7 +4145,7 @@ func (x *DeleteScreenshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteScreenshotResponse.ProtoReflect.Descriptor instead. func (*DeleteScreenshotResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{57} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{69} } type ReorderScreenshotsRequest struct { @@ -3478,7 +4159,7 @@ type ReorderScreenshotsRequest struct { func (x *ReorderScreenshotsRequest) Reset() { *x = ReorderScreenshotsRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[58] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3490,7 +4171,7 @@ func (x *ReorderScreenshotsRequest) String() string { func (*ReorderScreenshotsRequest) ProtoMessage() {} func (x *ReorderScreenshotsRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[58] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3503,7 +4184,7 @@ func (x *ReorderScreenshotsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReorderScreenshotsRequest.ProtoReflect.Descriptor instead. func (*ReorderScreenshotsRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{58} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{70} } func (x *ReorderScreenshotsRequest) GetPluginId() string { @@ -3529,7 +4210,7 @@ type ReorderScreenshotsResponse struct { func (x *ReorderScreenshotsResponse) Reset() { *x = ReorderScreenshotsResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[59] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3541,7 +4222,7 @@ func (x *ReorderScreenshotsResponse) String() string { func (*ReorderScreenshotsResponse) ProtoMessage() {} func (x *ReorderScreenshotsResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[59] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3554,7 +4235,7 @@ func (x *ReorderScreenshotsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReorderScreenshotsResponse.ProtoReflect.Descriptor instead. func (*ReorderScreenshotsResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{59} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{71} } func (x *ReorderScreenshotsResponse) GetScreenshots() []*PluginScreenshot { @@ -3574,7 +4255,7 @@ type SetFeaturedScreenshotRequest struct { func (x *SetFeaturedScreenshotRequest) Reset() { *x = SetFeaturedScreenshotRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[60] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3586,7 +4267,7 @@ func (x *SetFeaturedScreenshotRequest) String() string { func (*SetFeaturedScreenshotRequest) ProtoMessage() {} func (x *SetFeaturedScreenshotRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[60] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3599,7 +4280,7 @@ func (x *SetFeaturedScreenshotRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetFeaturedScreenshotRequest.ProtoReflect.Descriptor instead. func (*SetFeaturedScreenshotRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{60} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{72} } func (x *SetFeaturedScreenshotRequest) GetPluginId() string { @@ -3624,7 +4305,7 @@ type SetFeaturedScreenshotResponse struct { func (x *SetFeaturedScreenshotResponse) Reset() { *x = SetFeaturedScreenshotResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[61] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3636,7 +4317,7 @@ func (x *SetFeaturedScreenshotResponse) String() string { func (*SetFeaturedScreenshotResponse) ProtoMessage() {} func (x *SetFeaturedScreenshotResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[61] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3649,7 +4330,7 @@ func (x *SetFeaturedScreenshotResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetFeaturedScreenshotResponse.ProtoReflect.Descriptor instead. func (*SetFeaturedScreenshotResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{61} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{73} } type PluginReview struct { @@ -3678,7 +4359,7 @@ type PluginReview struct { func (x *PluginReview) Reset() { *x = PluginReview{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[62] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3690,7 +4371,7 @@ func (x *PluginReview) String() string { func (*PluginReview) ProtoMessage() {} func (x *PluginReview) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[62] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3703,7 +4384,7 @@ func (x *PluginReview) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginReview.ProtoReflect.Descriptor instead. func (*PluginReview) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{62} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{74} } func (x *PluginReview) GetId() string { @@ -3817,7 +4498,7 @@ type PluginReviewReply struct { func (x *PluginReviewReply) Reset() { *x = PluginReviewReply{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[63] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3829,7 +4510,7 @@ func (x *PluginReviewReply) String() string { func (*PluginReviewReply) ProtoMessage() {} func (x *PluginReviewReply) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[63] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3842,7 +4523,7 @@ func (x *PluginReviewReply) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginReviewReply.ProtoReflect.Descriptor instead. func (*PluginReviewReply) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{63} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{75} } func (x *PluginReviewReply) GetId() string { @@ -3896,7 +4577,7 @@ type ReviewAggregate struct { func (x *ReviewAggregate) Reset() { *x = ReviewAggregate{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[64] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3908,7 +4589,7 @@ func (x *ReviewAggregate) String() string { func (*ReviewAggregate) ProtoMessage() {} func (x *ReviewAggregate) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[64] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3921,7 +4602,7 @@ func (x *ReviewAggregate) ProtoReflect() protoreflect.Message { // Deprecated: Use ReviewAggregate.ProtoReflect.Descriptor instead. func (*ReviewAggregate) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{64} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{76} } func (x *ReviewAggregate) GetRatingAvg() float32 { @@ -3985,7 +4666,7 @@ type ListReviewsRequest struct { func (x *ListReviewsRequest) Reset() { *x = ListReviewsRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[65] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3997,7 +4678,7 @@ func (x *ListReviewsRequest) String() string { func (*ListReviewsRequest) ProtoMessage() {} func (x *ListReviewsRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[65] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4010,7 +4691,7 @@ func (x *ListReviewsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReviewsRequest.ProtoReflect.Descriptor instead. func (*ListReviewsRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{65} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{77} } func (x *ListReviewsRequest) GetScopeSlug() string { @@ -4051,7 +4732,7 @@ type ListReviewsResponse struct { func (x *ListReviewsResponse) Reset() { *x = ListReviewsResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[66] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4063,7 +4744,7 @@ func (x *ListReviewsResponse) String() string { func (*ListReviewsResponse) ProtoMessage() {} func (x *ListReviewsResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[66] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4076,7 +4757,7 @@ func (x *ListReviewsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReviewsResponse.ProtoReflect.Descriptor instead. func (*ListReviewsResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{66} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{78} } func (x *ListReviewsResponse) GetReviews() []*PluginReview { @@ -4102,7 +4783,7 @@ type GetMyReviewRequest struct { func (x *GetMyReviewRequest) Reset() { *x = GetMyReviewRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[67] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4114,7 +4795,7 @@ func (x *GetMyReviewRequest) String() string { func (*GetMyReviewRequest) ProtoMessage() {} func (x *GetMyReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[67] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4127,7 +4808,7 @@ func (x *GetMyReviewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMyReviewRequest.ProtoReflect.Descriptor instead. func (*GetMyReviewRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{67} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{79} } func (x *GetMyReviewRequest) GetPluginId() string { @@ -4152,7 +4833,7 @@ type GetMyReviewResponse struct { func (x *GetMyReviewResponse) Reset() { *x = GetMyReviewResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[68] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4164,7 +4845,7 @@ func (x *GetMyReviewResponse) String() string { func (*GetMyReviewResponse) ProtoMessage() {} func (x *GetMyReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[68] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4177,7 +4858,7 @@ func (x *GetMyReviewResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMyReviewResponse.ProtoReflect.Descriptor instead. func (*GetMyReviewResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{68} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{80} } func (x *GetMyReviewResponse) GetReview() *PluginReview { @@ -4213,7 +4894,7 @@ type UpsertReviewRequest struct { func (x *UpsertReviewRequest) Reset() { *x = UpsertReviewRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[69] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4225,7 +4906,7 @@ func (x *UpsertReviewRequest) String() string { func (*UpsertReviewRequest) ProtoMessage() {} func (x *UpsertReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[69] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4238,7 +4919,7 @@ func (x *UpsertReviewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertReviewRequest.ProtoReflect.Descriptor instead. func (*UpsertReviewRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{69} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{81} } func (x *UpsertReviewRequest) GetPluginId() string { @@ -4278,7 +4959,7 @@ type UpsertReviewResponse struct { func (x *UpsertReviewResponse) Reset() { *x = UpsertReviewResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[70] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4290,7 +4971,7 @@ func (x *UpsertReviewResponse) String() string { func (*UpsertReviewResponse) ProtoMessage() {} func (x *UpsertReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[70] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4303,7 +4984,7 @@ func (x *UpsertReviewResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertReviewResponse.ProtoReflect.Descriptor instead. func (*UpsertReviewResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{70} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{82} } func (x *UpsertReviewResponse) GetReview() *PluginReview { @@ -4322,7 +5003,7 @@ type DeleteReviewRequest struct { func (x *DeleteReviewRequest) Reset() { *x = DeleteReviewRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[71] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4334,7 +5015,7 @@ func (x *DeleteReviewRequest) String() string { func (*DeleteReviewRequest) ProtoMessage() {} func (x *DeleteReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[71] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4347,7 +5028,7 @@ func (x *DeleteReviewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteReviewRequest.ProtoReflect.Descriptor instead. func (*DeleteReviewRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{71} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{83} } func (x *DeleteReviewRequest) GetPluginId() string { @@ -4365,7 +5046,7 @@ type DeleteReviewResponse struct { func (x *DeleteReviewResponse) Reset() { *x = DeleteReviewResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[72] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4377,7 +5058,7 @@ func (x *DeleteReviewResponse) String() string { func (*DeleteReviewResponse) ProtoMessage() {} func (x *DeleteReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[72] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4390,7 +5071,7 @@ func (x *DeleteReviewResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteReviewResponse.ProtoReflect.Descriptor instead. func (*DeleteReviewResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{72} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{84} } type ReplyToReviewRequest struct { @@ -4403,7 +5084,7 @@ type ReplyToReviewRequest struct { func (x *ReplyToReviewRequest) Reset() { *x = ReplyToReviewRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[73] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4415,7 +5096,7 @@ func (x *ReplyToReviewRequest) String() string { func (*ReplyToReviewRequest) ProtoMessage() {} func (x *ReplyToReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[73] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4428,7 +5109,7 @@ func (x *ReplyToReviewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplyToReviewRequest.ProtoReflect.Descriptor instead. func (*ReplyToReviewRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{73} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{85} } func (x *ReplyToReviewRequest) GetReviewId() string { @@ -4454,7 +5135,7 @@ type ReplyToReviewResponse struct { func (x *ReplyToReviewResponse) Reset() { *x = ReplyToReviewResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[74] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4466,7 +5147,7 @@ func (x *ReplyToReviewResponse) String() string { func (*ReplyToReviewResponse) ProtoMessage() {} func (x *ReplyToReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[74] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4479,7 +5160,7 @@ func (x *ReplyToReviewResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReplyToReviewResponse.ProtoReflect.Descriptor instead. func (*ReplyToReviewResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{74} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{86} } func (x *ReplyToReviewResponse) GetReply() *PluginReviewReply { @@ -4498,7 +5179,7 @@ type DeleteReplyRequest struct { func (x *DeleteReplyRequest) Reset() { *x = DeleteReplyRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[75] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4510,7 +5191,7 @@ func (x *DeleteReplyRequest) String() string { func (*DeleteReplyRequest) ProtoMessage() {} func (x *DeleteReplyRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[75] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4523,7 +5204,7 @@ func (x *DeleteReplyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteReplyRequest.ProtoReflect.Descriptor instead. func (*DeleteReplyRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{75} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{87} } func (x *DeleteReplyRequest) GetReviewId() string { @@ -4541,7 +5222,7 @@ type DeleteReplyResponse struct { func (x *DeleteReplyResponse) Reset() { *x = DeleteReplyResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[76] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4553,7 +5234,7 @@ func (x *DeleteReplyResponse) String() string { func (*DeleteReplyResponse) ProtoMessage() {} func (x *DeleteReplyResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[76] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4566,7 +5247,7 @@ func (x *DeleteReplyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteReplyResponse.ProtoReflect.Descriptor instead. func (*DeleteReplyResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{76} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{88} } type FlagReviewRequest struct { @@ -4579,7 +5260,7 @@ type FlagReviewRequest struct { func (x *FlagReviewRequest) Reset() { *x = FlagReviewRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[77] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4591,7 +5272,7 @@ func (x *FlagReviewRequest) String() string { func (*FlagReviewRequest) ProtoMessage() {} func (x *FlagReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[77] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4604,7 +5285,7 @@ func (x *FlagReviewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use FlagReviewRequest.ProtoReflect.Descriptor instead. func (*FlagReviewRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{77} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{89} } func (x *FlagReviewRequest) GetReviewId() string { @@ -4629,7 +5310,7 @@ type FlagReviewResponse struct { func (x *FlagReviewResponse) Reset() { *x = FlagReviewResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[78] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4641,7 +5322,7 @@ func (x *FlagReviewResponse) String() string { func (*FlagReviewResponse) ProtoMessage() {} func (x *FlagReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[78] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4654,7 +5335,7 @@ func (x *FlagReviewResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use FlagReviewResponse.ProtoReflect.Descriptor instead. func (*FlagReviewResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{78} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{90} } type FlaggedReview struct { @@ -4672,7 +5353,7 @@ type FlaggedReview struct { func (x *FlaggedReview) Reset() { *x = FlaggedReview{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[79] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4684,7 +5365,7 @@ func (x *FlaggedReview) String() string { func (*FlaggedReview) ProtoMessage() {} func (x *FlaggedReview) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[79] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4697,7 +5378,7 @@ func (x *FlaggedReview) ProtoReflect() protoreflect.Message { // Deprecated: Use FlaggedReview.ProtoReflect.Descriptor instead. func (*FlaggedReview) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{79} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{91} } func (x *FlaggedReview) GetReview() *PluginReview { @@ -4752,7 +5433,7 @@ type ListFlaggedReviewsRequest struct { func (x *ListFlaggedReviewsRequest) Reset() { *x = ListFlaggedReviewsRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[80] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4764,7 +5445,7 @@ func (x *ListFlaggedReviewsRequest) String() string { func (*ListFlaggedReviewsRequest) ProtoMessage() {} func (x *ListFlaggedReviewsRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[80] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4777,7 +5458,7 @@ func (x *ListFlaggedReviewsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListFlaggedReviewsRequest.ProtoReflect.Descriptor instead. func (*ListFlaggedReviewsRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{80} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{92} } func (x *ListFlaggedReviewsRequest) GetLimit() int32 { @@ -4803,7 +5484,7 @@ type ListFlaggedReviewsResponse struct { func (x *ListFlaggedReviewsResponse) Reset() { *x = ListFlaggedReviewsResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[81] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4815,7 +5496,7 @@ func (x *ListFlaggedReviewsResponse) String() string { func (*ListFlaggedReviewsResponse) ProtoMessage() {} func (x *ListFlaggedReviewsResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[81] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4828,7 +5509,7 @@ func (x *ListFlaggedReviewsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListFlaggedReviewsResponse.ProtoReflect.Descriptor instead. func (*ListFlaggedReviewsResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{81} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{93} } func (x *ListFlaggedReviewsResponse) GetReviews() []*FlaggedReview { @@ -4848,7 +5529,7 @@ type SoftDeleteReviewRequest struct { func (x *SoftDeleteReviewRequest) Reset() { *x = SoftDeleteReviewRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[82] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4860,7 +5541,7 @@ func (x *SoftDeleteReviewRequest) String() string { func (*SoftDeleteReviewRequest) ProtoMessage() {} func (x *SoftDeleteReviewRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[82] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4873,7 +5554,7 @@ func (x *SoftDeleteReviewRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SoftDeleteReviewRequest.ProtoReflect.Descriptor instead. func (*SoftDeleteReviewRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{82} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{94} } func (x *SoftDeleteReviewRequest) GetReviewId() string { @@ -4898,7 +5579,7 @@ type SoftDeleteReviewResponse struct { func (x *SoftDeleteReviewResponse) Reset() { *x = SoftDeleteReviewResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[83] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4910,7 +5591,7 @@ func (x *SoftDeleteReviewResponse) String() string { func (*SoftDeleteReviewResponse) ProtoMessage() {} func (x *SoftDeleteReviewResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[83] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4923,7 +5604,7 @@ func (x *SoftDeleteReviewResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SoftDeleteReviewResponse.ProtoReflect.Descriptor instead. func (*SoftDeleteReviewResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{83} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{95} } type SoftDeleteReplyRequest struct { @@ -4936,7 +5617,7 @@ type SoftDeleteReplyRequest struct { func (x *SoftDeleteReplyRequest) Reset() { *x = SoftDeleteReplyRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[84] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4948,7 +5629,7 @@ func (x *SoftDeleteReplyRequest) String() string { func (*SoftDeleteReplyRequest) ProtoMessage() {} func (x *SoftDeleteReplyRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[84] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4961,7 +5642,7 @@ func (x *SoftDeleteReplyRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SoftDeleteReplyRequest.ProtoReflect.Descriptor instead. func (*SoftDeleteReplyRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{84} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{96} } func (x *SoftDeleteReplyRequest) GetReviewId() string { @@ -4986,7 +5667,7 @@ type SoftDeleteReplyResponse struct { func (x *SoftDeleteReplyResponse) Reset() { *x = SoftDeleteReplyResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[85] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4998,7 +5679,7 @@ func (x *SoftDeleteReplyResponse) String() string { func (*SoftDeleteReplyResponse) ProtoMessage() {} func (x *SoftDeleteReplyResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[85] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5011,7 +5692,7 @@ func (x *SoftDeleteReplyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SoftDeleteReplyResponse.ProtoReflect.Descriptor instead. func (*SoftDeleteReplyResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{85} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{97} } type PublishVersionRequest struct { @@ -5028,7 +5709,7 @@ type PublishVersionRequest struct { func (x *PublishVersionRequest) Reset() { *x = PublishVersionRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[86] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5040,7 +5721,7 @@ func (x *PublishVersionRequest) String() string { func (*PublishVersionRequest) ProtoMessage() {} func (x *PublishVersionRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[86] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5053,7 +5734,7 @@ func (x *PublishVersionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishVersionRequest.ProtoReflect.Descriptor instead. func (*PublishVersionRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{86} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{98} } func (x *PublishVersionRequest) GetPluginId() string { @@ -5109,7 +5790,7 @@ type PublishVersionResponse struct { func (x *PublishVersionResponse) Reset() { *x = PublishVersionResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[87] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5121,7 +5802,7 @@ func (x *PublishVersionResponse) String() string { func (*PublishVersionResponse) ProtoMessage() {} func (x *PublishVersionResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[87] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5134,7 +5815,7 @@ func (x *PublishVersionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PublishVersionResponse.ProtoReflect.Descriptor instead. func (*PublishVersionResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{87} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{99} } func (x *PublishVersionResponse) GetVersion() *Version { @@ -5167,7 +5848,7 @@ type StartDeviceRequest struct { func (x *StartDeviceRequest) Reset() { *x = StartDeviceRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[88] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5179,7 +5860,7 @@ func (x *StartDeviceRequest) String() string { func (*StartDeviceRequest) ProtoMessage() {} func (x *StartDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[88] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5192,7 +5873,7 @@ func (x *StartDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StartDeviceRequest.ProtoReflect.Descriptor instead. func (*StartDeviceRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{88} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{100} } func (x *StartDeviceRequest) GetScopes() []string { @@ -5215,7 +5896,7 @@ type StartDeviceResponse struct { func (x *StartDeviceResponse) Reset() { *x = StartDeviceResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[89] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5227,7 +5908,7 @@ func (x *StartDeviceResponse) String() string { func (*StartDeviceResponse) ProtoMessage() {} func (x *StartDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[89] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5240,7 +5921,7 @@ func (x *StartDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StartDeviceResponse.ProtoReflect.Descriptor instead. func (*StartDeviceResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{89} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{101} } func (x *StartDeviceResponse) GetDeviceCode() string { @@ -5287,7 +5968,7 @@ type PollDeviceRequest struct { func (x *PollDeviceRequest) Reset() { *x = PollDeviceRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[90] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5299,7 +5980,7 @@ func (x *PollDeviceRequest) String() string { func (*PollDeviceRequest) ProtoMessage() {} func (x *PollDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[90] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5312,7 +5993,7 @@ func (x *PollDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PollDeviceRequest.ProtoReflect.Descriptor instead. func (*PollDeviceRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{90} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{102} } func (x *PollDeviceRequest) GetDeviceCode() string { @@ -5323,18 +6004,20 @@ func (x *PollDeviceRequest) GetDeviceCode() string { } type PollDeviceResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - AccountId string `protobuf:"bytes,3,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - AccountSlug string `protobuf:"bytes,4,opt,name=account_slug,json=accountSlug,proto3" json:"account_slug,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AccessToken string `protobuf:"bytes,1,opt,name=access_token,json=accessToken,proto3" json:"access_token,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + // Account chosen on the device-approval page (empty when none was chosen). + // The CLI uses it as the active account and skips its stdin picker. + AccountId string `protobuf:"bytes,3,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + AccountSlug string `protobuf:"bytes,4,opt,name=account_slug,json=accountSlug,proto3" json:"account_slug,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PollDeviceResponse) Reset() { *x = PollDeviceResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[91] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5346,7 +6029,7 @@ func (x *PollDeviceResponse) String() string { func (*PollDeviceResponse) ProtoMessage() {} func (x *PollDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[91] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5359,7 +6042,7 @@ func (x *PollDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PollDeviceResponse.ProtoReflect.Descriptor instead. func (*PollDeviceResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{91} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{103} } func (x *PollDeviceResponse) GetAccessToken() string { @@ -5391,16 +6074,18 @@ func (x *PollDeviceResponse) GetAccountSlug() string { } type ApproveDeviceRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - UserCode string `protobuf:"bytes,1,opt,name=user_code,json=userCode,proto3" json:"user_code,omitempty"` - AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + UserCode string `protobuf:"bytes,1,opt,name=user_code,json=userCode,proto3" json:"user_code,omitempty"` + // Optional org account the approving user selects for the CLI to act as. + // Must be an account the user is a member of. + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ApproveDeviceRequest) Reset() { *x = ApproveDeviceRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[92] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5412,7 +6097,7 @@ func (x *ApproveDeviceRequest) String() string { func (*ApproveDeviceRequest) ProtoMessage() {} func (x *ApproveDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[92] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5425,7 +6110,7 @@ func (x *ApproveDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ApproveDeviceRequest.ProtoReflect.Descriptor instead. func (*ApproveDeviceRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{92} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{104} } func (x *ApproveDeviceRequest) GetUserCode() string { @@ -5450,7 +6135,7 @@ type ApproveDeviceResponse struct { func (x *ApproveDeviceResponse) Reset() { *x = ApproveDeviceResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[93] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5462,7 +6147,7 @@ func (x *ApproveDeviceResponse) String() string { func (*ApproveDeviceResponse) ProtoMessage() {} func (x *ApproveDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[93] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5475,7 +6160,7 @@ func (x *ApproveDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ApproveDeviceResponse.ProtoReflect.Descriptor instead. func (*ApproveDeviceResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{93} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{105} } type DenyDeviceRequest struct { @@ -5487,7 +6172,7 @@ type DenyDeviceRequest struct { func (x *DenyDeviceRequest) Reset() { *x = DenyDeviceRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[94] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5499,7 +6184,7 @@ func (x *DenyDeviceRequest) String() string { func (*DenyDeviceRequest) ProtoMessage() {} func (x *DenyDeviceRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[94] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5512,7 +6197,7 @@ func (x *DenyDeviceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DenyDeviceRequest.ProtoReflect.Descriptor instead. func (*DenyDeviceRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{94} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{106} } func (x *DenyDeviceRequest) GetUserCode() string { @@ -5530,7 +6215,7 @@ type DenyDeviceResponse struct { func (x *DenyDeviceResponse) Reset() { *x = DenyDeviceResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[95] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5542,7 +6227,7 @@ func (x *DenyDeviceResponse) String() string { func (*DenyDeviceResponse) ProtoMessage() {} func (x *DenyDeviceResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[95] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5555,7 +6240,7 @@ func (x *DenyDeviceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DenyDeviceResponse.ProtoReflect.Descriptor instead. func (*DenyDeviceResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{95} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{107} } type GetDeviceStatusRequest struct { @@ -5567,7 +6252,7 @@ type GetDeviceStatusRequest struct { func (x *GetDeviceStatusRequest) Reset() { *x = GetDeviceStatusRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[96] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5579,7 +6264,7 @@ func (x *GetDeviceStatusRequest) String() string { func (*GetDeviceStatusRequest) ProtoMessage() {} func (x *GetDeviceStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[96] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5592,7 +6277,7 @@ func (x *GetDeviceStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeviceStatusRequest.ProtoReflect.Descriptor instead. func (*GetDeviceStatusRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{96} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{108} } func (x *GetDeviceStatusRequest) GetUserCode() string { @@ -5614,7 +6299,7 @@ type GetDeviceStatusResponse struct { func (x *GetDeviceStatusResponse) Reset() { *x = GetDeviceStatusResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[97] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5626,7 +6311,7 @@ func (x *GetDeviceStatusResponse) String() string { func (*GetDeviceStatusResponse) ProtoMessage() {} func (x *GetDeviceStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[97] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5639,7 +6324,7 @@ func (x *GetDeviceStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeviceStatusResponse.ProtoReflect.Descriptor instead. func (*GetDeviceStatusResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{97} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{109} } func (x *GetDeviceStatusResponse) GetValid() bool { @@ -5678,7 +6363,7 @@ type WhoamiRequest struct { func (x *WhoamiRequest) Reset() { *x = WhoamiRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[98] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5690,7 +6375,7 @@ func (x *WhoamiRequest) String() string { func (*WhoamiRequest) ProtoMessage() {} func (x *WhoamiRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[98] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5703,7 +6388,7 @@ func (x *WhoamiRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WhoamiRequest.ProtoReflect.Descriptor instead. func (*WhoamiRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{98} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{110} } type WhoamiResponse struct { @@ -5717,7 +6402,7 @@ type WhoamiResponse struct { func (x *WhoamiResponse) Reset() { *x = WhoamiResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[99] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5729,7 +6414,7 @@ func (x *WhoamiResponse) String() string { func (*WhoamiResponse) ProtoMessage() {} func (x *WhoamiResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[99] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5742,7 +6427,7 @@ func (x *WhoamiResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WhoamiResponse.ProtoReflect.Descriptor instead. func (*WhoamiResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{99} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{111} } func (x *WhoamiResponse) GetUserId() string { @@ -5782,7 +6467,7 @@ type MyAccount struct { func (x *MyAccount) Reset() { *x = MyAccount{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[100] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5794,7 +6479,7 @@ func (x *MyAccount) String() string { func (*MyAccount) ProtoMessage() {} func (x *MyAccount) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[100] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5807,7 +6492,7 @@ func (x *MyAccount) ProtoReflect() protoreflect.Message { // Deprecated: Use MyAccount.ProtoReflect.Descriptor instead. func (*MyAccount) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{100} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{112} } func (x *MyAccount) GetId() string { @@ -5839,7 +6524,7 @@ type ListMyAccountsForCLIRequest struct { func (x *ListMyAccountsForCLIRequest) Reset() { *x = ListMyAccountsForCLIRequest{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[101] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5851,7 +6536,7 @@ func (x *ListMyAccountsForCLIRequest) String() string { func (*ListMyAccountsForCLIRequest) ProtoMessage() {} func (x *ListMyAccountsForCLIRequest) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[101] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5864,7 +6549,7 @@ func (x *ListMyAccountsForCLIRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMyAccountsForCLIRequest.ProtoReflect.Descriptor instead. func (*ListMyAccountsForCLIRequest) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{101} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{113} } type ListMyAccountsForCLIResponse struct { @@ -5876,7 +6561,7 @@ type ListMyAccountsForCLIResponse struct { func (x *ListMyAccountsForCLIResponse) Reset() { *x = ListMyAccountsForCLIResponse{} - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[102] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5888,7 +6573,7 @@ func (x *ListMyAccountsForCLIResponse) String() string { func (*ListMyAccountsForCLIResponse) ProtoMessage() {} func (x *ListMyAccountsForCLIResponse) ProtoReflect() protoreflect.Message { - mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[102] + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5901,7 +6586,7 @@ func (x *ListMyAccountsForCLIResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListMyAccountsForCLIResponse.ProtoReflect.Descriptor instead. func (*ListMyAccountsForCLIResponse) Descriptor() ([]byte, []int) { - return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{102} + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{114} } func (x *ListMyAccountsForCLIResponse) GetAccounts() []*MyAccount { @@ -5911,6 +6596,310 @@ func (x *ListMyAccountsForCLIResponse) GetAccounts() []*MyAccount { return nil } +type CreateCategoryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + SortOrder int32 `protobuf:"varint,4,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateCategoryRequest) Reset() { + *x = CreateCategoryRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateCategoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateCategoryRequest) ProtoMessage() {} + +func (x *CreateCategoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[115] + 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 CreateCategoryRequest.ProtoReflect.Descriptor instead. +func (*CreateCategoryRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{115} +} + +func (x *CreateCategoryRequest) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *CreateCategoryRequest) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *CreateCategoryRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *CreateCategoryRequest) GetSortOrder() int32 { + if x != nil { + return x.SortOrder + } + return 0 +} + +type CreateCategoryResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Category *Category `protobuf:"bytes,1,opt,name=category,proto3" json:"category,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateCategoryResponse) Reset() { + *x = CreateCategoryResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateCategoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateCategoryResponse) ProtoMessage() {} + +func (x *CreateCategoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[116] + 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 CreateCategoryResponse.ProtoReflect.Descriptor instead. +func (*CreateCategoryResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{116} +} + +func (x *CreateCategoryResponse) GetCategory() *Category { + if x != nil { + return x.Category + } + return nil +} + +type UpdateCategoryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + SortOrder int32 `protobuf:"varint,4,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateCategoryRequest) Reset() { + *x = UpdateCategoryRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateCategoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateCategoryRequest) ProtoMessage() {} + +func (x *UpdateCategoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[117] + 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 UpdateCategoryRequest.ProtoReflect.Descriptor instead. +func (*UpdateCategoryRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{117} +} + +func (x *UpdateCategoryRequest) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +func (x *UpdateCategoryRequest) GetDisplayName() string { + if x != nil { + return x.DisplayName + } + return "" +} + +func (x *UpdateCategoryRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *UpdateCategoryRequest) GetSortOrder() int32 { + if x != nil { + return x.SortOrder + } + return 0 +} + +type UpdateCategoryResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Category *Category `protobuf:"bytes,1,opt,name=category,proto3" json:"category,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateCategoryResponse) Reset() { + *x = UpdateCategoryResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateCategoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateCategoryResponse) ProtoMessage() {} + +func (x *UpdateCategoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[118] + 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 UpdateCategoryResponse.ProtoReflect.Descriptor instead. +func (*UpdateCategoryResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{118} +} + +func (x *UpdateCategoryResponse) GetCategory() *Category { + if x != nil { + return x.Category + } + return nil +} + +type DeleteCategoryRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Slug string `protobuf:"bytes,1,opt,name=slug,proto3" json:"slug,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteCategoryRequest) Reset() { + *x = DeleteCategoryRequest{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteCategoryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCategoryRequest) ProtoMessage() {} + +func (x *DeleteCategoryRequest) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[119] + 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 DeleteCategoryRequest.ProtoReflect.Descriptor instead. +func (*DeleteCategoryRequest) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{119} +} + +func (x *DeleteCategoryRequest) GetSlug() string { + if x != nil { + return x.Slug + } + return "" +} + +type DeleteCategoryResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteCategoryResponse) Reset() { + *x = DeleteCategoryResponse{} + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteCategoryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteCategoryResponse) ProtoMessage() {} + +func (x *DeleteCategoryResponse) ProtoReflect() protoreflect.Message { + mi := &file_orchestrator_v1_plugin_registry_proto_msgTypes[120] + 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 DeleteCategoryResponse.ProtoReflect.Descriptor instead. +func (*DeleteCategoryResponse) Descriptor() ([]byte, []int) { + return file_orchestrator_v1_plugin_registry_proto_rawDescGZIP(), []int{120} +} + var File_orchestrator_v1_plugin_registry_proto protoreflect.FileDescriptor const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + @@ -5954,13 +6943,14 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\x03url\x18\x02 \x01(\tR\x03url\x12\x1a\n" + "\bfeatured\x18\x03 \x01(\bR\bfeatured\x12\x1a\n" + "\bposition\x18\x04 \x01(\x05R\bposition\x12!\n" + - "\fcontent_type\x18\x05 \x01(\tR\vcontentType\"\x82\x01\n" + + "\fcontent_type\x18\x05 \x01(\tR\vcontentType\"\xa5\x01\n" + "\bCategory\x12\x12\n" + "\x04slug\x18\x01 \x01(\tR\x04slug\x12!\n" + "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12 \n" + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1d\n" + "\n" + - "sort_order\x18\x04 \x01(\x05R\tsortOrder\"\xff\x02\n" + + "sort_order\x18\x04 \x01(\x05R\tsortOrder\x12!\n" + + "\fplugin_count\x18\x05 \x01(\x05R\vpluginCount\"\xff\x02\n" + "\aVersion\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x1b\n" + "\tplugin_id\x18\x02 \x01(\tR\bpluginId\x12\x18\n" + @@ -6096,14 +7086,21 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\aversion\x18\x01 \x01(\v2\x18.orchestrator.v1.VersionR\aversion\x128\n" + "\brequires\x18\x02 \x03(\v2\x1c.orchestrator.v1.RequirementR\brequires\x12\x1b\n" + "\treadme_md\x18\x03 \x01(\tR\breadmeMd\x12!\n" + - "\fchangelog_md\x18\x04 \x01(\tR\vchangelogMd\"\xb1\x01\n" + + "\fchangelog_md\x18\x04 \x01(\tR\vchangelogMd\"\xb9\x03\n" + "\x15ResolveInstallRequest\x12\x1d\n" + "\n" + "scope_slug\x18\x01 \x01(\tR\tscopeSlug\x12\x1f\n" + "\vplugin_name\x18\x02 \x01(\tR\n" + "pluginName\x12,\n" + "\x12version_or_channel\x18\x03 \x01(\tR\x10versionOrChannel\x12*\n" + - "\x11active_account_id\x18\x04 \x01(\tR\x0factiveAccountId\"\xb6\x03\n" + + "\x11active_account_id\x18\x04 \x01(\tR\x0factiveAccountId\x12(\n" + + "\x10host_sdk_version\x18\x05 \x01(\tR\x0ehostSdkVersion\x12(\n" + + "\x10host_abi_version\x18\x06 \x01(\rR\x0ehostAbiVersion\x12+\n" + + "\x11latest_compatible\x18\a \x01(\bR\x10latestCompatible\x12'\n" + + "\x0fcurrent_version\x18\b \x01(\tR\x0ecurrentVersion\x12(\n" + + "\x10host_api_version\x18\t \x01(\tR\x0ehostApiVersion\x122\n" + + "\x15allow_initial_version\x18\n" + + " \x01(\bR\x13allowInitialVersion\"\x8a\x04\n" + "\x16ResolveInstallResponse\x12\x1d\n" + "\n" + "version_id\x18\x01 \x01(\tR\tversionId\x12\x1d\n" + @@ -6122,10 +7119,13 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + " \x01(\bR\x06yanked\x12\x1a\n" + "\bwarnings\x18\v \x03(\tR\bwarnings\x12\x1f\n" + "\vabi_version\x18\f \x01(\rR\n" + - "abiVersion\"G\n" + + "abiVersion\x120\n" + + "\x14admin_api_constraint\x18\r \x01(\tR\x12adminApiConstraint\x12 \n" + + "\fhas_admin_ui\x18\x0e \x01(\bR\n" + + "hasAdminUi\"G\n" + "$ListPrivatePluginsForInstanceRequest\x12\x1f\n" + "\vinstance_id\x18\x01 \x01(\tR\n" + - "instanceId\"\xb1\x01\n" + + "instanceId\"\xb9\x03\n" + " ResolveInstallForInstanceRequest\x12\x1f\n" + "\vinstance_id\x18\x01 \x01(\tR\n" + "instanceId\x12\x1f\n" + @@ -6133,7 +7133,26 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "pluginName\x12,\n" + "\x12version_or_channel\x18\x03 \x01(\tR\x10versionOrChannel\x12\x1d\n" + "\n" + - "scope_slug\x18\x04 \x01(\tR\tscopeSlug\"\xa9\x02\n" + + "scope_slug\x18\x04 \x01(\tR\tscopeSlug\x12(\n" + + "\x10host_sdk_version\x18\x05 \x01(\tR\x0ehostSdkVersion\x12(\n" + + "\x10host_abi_version\x18\x06 \x01(\rR\x0ehostAbiVersion\x12+\n" + + "\x11latest_compatible\x18\a \x01(\bR\x10latestCompatible\x12'\n" + + "\x0fcurrent_version\x18\b \x01(\tR\x0ecurrentVersion\x12(\n" + + "\x10host_api_version\x18\t \x01(\tR\x0ehostApiVersion\x122\n" + + "\x15allow_initial_version\x18\n" + + " \x01(\bR\x13allowInitialVersion\"\xe9\x01\n" + + "&ConfirmPluginInstallForInstanceRequest\x12\x1f\n" + + "\vinstance_id\x18\x01 \x01(\tR\n" + + "instanceId\x12\x1d\n" + + "\n" + + "scope_slug\x18\x02 \x01(\tR\tscopeSlug\x12\x1f\n" + + "\vplugin_name\x18\x03 \x01(\tR\n" + + "pluginName\x12\x1d\n" + + "\n" + + "version_id\x18\x04 \x01(\tR\tversionId\x12\x18\n" + + "\aversion\x18\x05 \x01(\tR\aversion\x12%\n" + + "\x0earchive_sha256\x18\x06 \x01(\tR\rarchiveSha256\")\n" + + "'ConfirmPluginInstallForInstanceResponse\"\xa9\x02\n" + "\rPendingReview\x12\x1b\n" + "\treview_id\x18\x01 \x01(\tR\breviewId\x12\x1b\n" + "\tplugin_id\x18\x02 \x01(\tR\bpluginId\x12\x1d\n" + @@ -6166,7 +7185,26 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\x15RequestChangesRequest\x12\x1b\n" + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12\x16\n" + "\x06reason\x18\x02 \x01(\tR\x06reason\"\x18\n" + - "\x16RequestChangesResponse\"X\n" + + "\x16RequestChangesResponse\"M\n" + + "\x16UnpublishPluginRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12\x16\n" + + "\x06reason\x18\x02 \x01(\tR\x06reason\"\x19\n" + + "\x17UnpublishPluginResponse\"L\n" + + "\x15TakedownPluginRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12\x16\n" + + "\x06reason\x18\x02 \x01(\tR\x06reason\"\x18\n" + + "\x16TakedownPluginResponse\"3\n" + + "\x14RestorePluginRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\"\x17\n" + + "\x15RestorePluginResponse\"c\n" + + "\x12YankVersionRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\x12\x18\n" + + "\aversion\x18\x02 \x01(\tR\aversion\x12\x16\n" + + "\x06reason\x18\x03 \x01(\tR\x06reason\"\x15\n" + + "\x13YankVersionResponse\"8\n" + + "\x19DeletePublicPluginRequest\x12\x1b\n" + + "\tplugin_id\x18\x01 \x01(\tR\bpluginId\"\x1c\n" + + "\x1aDeletePublicPluginResponse\"X\n" + "\x16ListScreenshotsRequest\x12\x1d\n" + "\n" + "scope_slug\x18\x01 \x01(\tR\tscopeSlug\x12\x1f\n" + @@ -6349,7 +7387,26 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\x04name\x18\x03 \x01(\tR\x04name\"\x1d\n" + "\x1bListMyAccountsForCLIRequest\"V\n" + "\x1cListMyAccountsForCLIResponse\x126\n" + - "\baccounts\x18\x01 \x03(\v2\x1a.orchestrator.v1.MyAccountR\baccounts*\xd8\x01\n" + + "\baccounts\x18\x01 \x03(\v2\x1a.orchestrator.v1.MyAccountR\baccounts\"\x8f\x01\n" + + "\x15CreateCategoryRequest\x12\x12\n" + + "\x04slug\x18\x01 \x01(\tR\x04slug\x12!\n" + + "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1d\n" + + "\n" + + "sort_order\x18\x04 \x01(\x05R\tsortOrder\"O\n" + + "\x16CreateCategoryResponse\x125\n" + + "\bcategory\x18\x01 \x01(\v2\x19.orchestrator.v1.CategoryR\bcategory\"\x8f\x01\n" + + "\x15UpdateCategoryRequest\x12\x12\n" + + "\x04slug\x18\x01 \x01(\tR\x04slug\x12!\n" + + "\fdisplay_name\x18\x02 \x01(\tR\vdisplayName\x12 \n" + + "\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1d\n" + + "\n" + + "sort_order\x18\x04 \x01(\x05R\tsortOrder\"O\n" + + "\x16UpdateCategoryResponse\x125\n" + + "\bcategory\x18\x01 \x01(\v2\x19.orchestrator.v1.CategoryR\bcategory\"+\n" + + "\x15DeleteCategoryRequest\x12\x12\n" + + "\x04slug\x18\x01 \x01(\tR\x04slug\"\x18\n" + + "\x16DeleteCategoryResponse*\xd8\x01\n" + "\x10PluginVisibility\x12!\n" + "\x1dPLUGIN_VISIBILITY_UNSPECIFIED\x10\x00\x12\x1d\n" + "\x19PLUGIN_VISIBILITY_PRIVATE\x10\x01\x12\"\n" + @@ -6361,7 +7418,7 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\vCreateScope\x12#.orchestrator.v1.CreateScopeRequest\x1a$.orchestrator.v1.CreateScopeResponse\x12[\n" + "\fListMyScopes\x12$.orchestrator.v1.ListMyScopesRequest\x1a%.orchestrator.v1.ListMyScopesResponse\x12O\n" + "\bGetScope\x12 .orchestrator.v1.GetScopeRequest\x1a!.orchestrator.v1.GetScopeResponse\x12^\n" + - "\rListMyPlugins\x12%.orchestrator.v1.ListMyPluginsRequest\x1a&.orchestrator.v1.ListMyPluginsResponse2\xef\v\n" + + "\rListMyPlugins\x12%.orchestrator.v1.ListMyPluginsRequest\x1a&.orchestrator.v1.ListMyPluginsResponse2\x86\r\n" + "\x15PluginRegistryService\x12[\n" + "\fCreatePlugin\x12$.orchestrator.v1.CreatePluginRequest\x1a%.orchestrator.v1.CreatePluginResponse\x12R\n" + "\tGetPlugin\x12!.orchestrator.v1.GetPluginRequest\x1a\".orchestrator.v1.GetPluginResponse\x12X\n" + @@ -6377,15 +7434,24 @@ const file_orchestrator_v1_plugin_registry_proto_rawDesc = "" + "\x1aDeletePrivatePluginVersion\x122.orchestrator.v1.DeletePrivatePluginVersionRequest\x1a3.orchestrator.v1.DeletePrivatePluginVersionResponse\x12\x8e\x01\n" + "\x1dListPrivatePluginInstallSites\x125.orchestrator.v1.ListPrivatePluginInstallSitesRequest\x1a6.orchestrator.v1.ListPrivatePluginInstallSitesResponse\x12\x83\x01\n" + "\x1dListPrivatePluginsForInstance\x125.orchestrator.v1.ListPrivatePluginsForInstanceRequest\x1a+.orchestrator.v1.ListPrivatePluginsResponse\x12w\n" + - "\x19ResolveInstallForInstance\x121.orchestrator.v1.ResolveInstallForInstanceRequest\x1a'.orchestrator.v1.ResolveInstallResponse2\xfe\x05\n" + + "\x19ResolveInstallForInstance\x121.orchestrator.v1.ResolveInstallForInstanceRequest\x1a'.orchestrator.v1.ResolveInstallResponse\x12\x94\x01\n" + + "\x1fConfirmPluginInstallForInstance\x127.orchestrator.v1.ConfirmPluginInstallForInstanceRequest\x1a8.orchestrator.v1.ConfirmPluginInstallForInstanceResponse2\x99\f\n" + "\x17PluginModerationService\x12m\n" + "\x12ListPendingReviews\x12*.orchestrator.v1.ListPendingReviewsRequest\x1a+.orchestrator.v1.ListPendingReviewsResponse\x12j\n" + "\x11ApproveSubmission\x12).orchestrator.v1.ApproveSubmissionRequest\x1a*.orchestrator.v1.ApproveSubmissionResponse\x12g\n" + "\x10RejectSubmission\x12(.orchestrator.v1.RejectSubmissionRequest\x1a).orchestrator.v1.RejectSubmissionResponse\x12a\n" + - "\x0eRequestChanges\x12&.orchestrator.v1.RequestChangesRequest\x1a'.orchestrator.v1.RequestChangesResponse\x12m\n" + + "\x0eRequestChanges\x12&.orchestrator.v1.RequestChangesRequest\x1a'.orchestrator.v1.RequestChangesResponse\x12d\n" + + "\x0fUnpublishPlugin\x12'.orchestrator.v1.UnpublishPluginRequest\x1a(.orchestrator.v1.UnpublishPluginResponse\x12a\n" + + "\x0eTakedownPlugin\x12&.orchestrator.v1.TakedownPluginRequest\x1a'.orchestrator.v1.TakedownPluginResponse\x12^\n" + + "\rRestorePlugin\x12%.orchestrator.v1.RestorePluginRequest\x1a&.orchestrator.v1.RestorePluginResponse\x12X\n" + + "\vYankVersion\x12#.orchestrator.v1.YankVersionRequest\x1a$.orchestrator.v1.YankVersionResponse\x12m\n" + + "\x12DeletePublicPlugin\x12*.orchestrator.v1.DeletePublicPluginRequest\x1a+.orchestrator.v1.DeletePublicPluginResponse\x12m\n" + "\x12ListFlaggedReviews\x12*.orchestrator.v1.ListFlaggedReviewsRequest\x1a+.orchestrator.v1.ListFlaggedReviewsResponse\x12g\n" + "\x10SoftDeleteReview\x12(.orchestrator.v1.SoftDeleteReviewRequest\x1a).orchestrator.v1.SoftDeleteReviewResponse\x12d\n" + - "\x0fSoftDeleteReply\x12'.orchestrator.v1.SoftDeleteReplyRequest\x1a(.orchestrator.v1.SoftDeleteReplyResponse2\xb5\x04\n" + + "\x0fSoftDeleteReply\x12'.orchestrator.v1.SoftDeleteReplyRequest\x1a(.orchestrator.v1.SoftDeleteReplyResponse\x12a\n" + + "\x0eCreateCategory\x12&.orchestrator.v1.CreateCategoryRequest\x1a'.orchestrator.v1.CreateCategoryResponse\x12a\n" + + "\x0eUpdateCategory\x12&.orchestrator.v1.UpdateCategoryRequest\x1a'.orchestrator.v1.UpdateCategoryResponse\x12a\n" + + "\x0eDeleteCategory\x12&.orchestrator.v1.DeleteCategoryRequest\x1a'.orchestrator.v1.DeleteCategoryResponse2\xb5\x04\n" + "\x14PluginGalleryService\x12d\n" + "\x0fListScreenshots\x12'.orchestrator.v1.ListScreenshotsRequest\x1a(.orchestrator.v1.ListScreenshotsResponse\x12g\n" + "\x10UploadScreenshot\x12(.orchestrator.v1.UploadScreenshotRequest\x1a).orchestrator.v1.UploadScreenshotResponse\x12g\n" + @@ -6428,121 +7494,139 @@ func file_orchestrator_v1_plugin_registry_proto_rawDescGZIP() []byte { } var file_orchestrator_v1_plugin_registry_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_orchestrator_v1_plugin_registry_proto_msgTypes = make([]protoimpl.MessageInfo, 105) +var file_orchestrator_v1_plugin_registry_proto_msgTypes = make([]protoimpl.MessageInfo, 123) var file_orchestrator_v1_plugin_registry_proto_goTypes = []any{ - (PluginVisibility)(0), // 0: orchestrator.v1.PluginVisibility - (*Scope)(nil), // 1: orchestrator.v1.Scope - (*Plugin)(nil), // 2: orchestrator.v1.Plugin - (*PluginScreenshot)(nil), // 3: orchestrator.v1.PluginScreenshot - (*Category)(nil), // 4: orchestrator.v1.Category - (*Version)(nil), // 5: orchestrator.v1.Version - (*Requirement)(nil), // 6: orchestrator.v1.Requirement - (*CreateScopeRequest)(nil), // 7: orchestrator.v1.CreateScopeRequest - (*CreateScopeResponse)(nil), // 8: orchestrator.v1.CreateScopeResponse - (*ListMyScopesRequest)(nil), // 9: orchestrator.v1.ListMyScopesRequest - (*ListMyScopesResponse)(nil), // 10: orchestrator.v1.ListMyScopesResponse - (*GetScopeRequest)(nil), // 11: orchestrator.v1.GetScopeRequest - (*GetScopeResponse)(nil), // 12: orchestrator.v1.GetScopeResponse - (*ListMyPluginsRequest)(nil), // 13: orchestrator.v1.ListMyPluginsRequest - (*ListMyPluginsResponse)(nil), // 14: orchestrator.v1.ListMyPluginsResponse - (*CreatePluginRequest)(nil), // 15: orchestrator.v1.CreatePluginRequest - (*CreatePluginResponse)(nil), // 16: orchestrator.v1.CreatePluginResponse - (*GetPluginRequest)(nil), // 17: orchestrator.v1.GetPluginRequest - (*GetPluginResponse)(nil), // 18: orchestrator.v1.GetPluginResponse - (*ListPluginsRequest)(nil), // 19: orchestrator.v1.ListPluginsRequest - (*ListPluginsResponse)(nil), // 20: orchestrator.v1.ListPluginsResponse - (*ListCategoriesRequest)(nil), // 21: orchestrator.v1.ListCategoriesRequest - (*ListCategoriesResponse)(nil), // 22: orchestrator.v1.ListCategoriesResponse - (*ListTagsRequest)(nil), // 23: orchestrator.v1.ListTagsRequest - (*ListTagsResponse)(nil), // 24: orchestrator.v1.ListTagsResponse - (*TagCount)(nil), // 25: orchestrator.v1.TagCount - (*ListPrivatePluginsRequest)(nil), // 26: orchestrator.v1.ListPrivatePluginsRequest - (*ListPrivatePluginsResponse)(nil), // 27: orchestrator.v1.ListPrivatePluginsResponse - (*PrivatePluginSummary)(nil), // 28: orchestrator.v1.PrivatePluginSummary - (*DeletePrivatePluginRequest)(nil), // 29: orchestrator.v1.DeletePrivatePluginRequest - (*DeletePrivatePluginResponse)(nil), // 30: orchestrator.v1.DeletePrivatePluginResponse - (*DeletePrivatePluginVersionRequest)(nil), // 31: orchestrator.v1.DeletePrivatePluginVersionRequest - (*DeletePrivatePluginVersionResponse)(nil), // 32: orchestrator.v1.DeletePrivatePluginVersionResponse - (*ListPrivatePluginInstallSitesRequest)(nil), // 33: orchestrator.v1.ListPrivatePluginInstallSitesRequest - (*ListPrivatePluginInstallSitesResponse)(nil), // 34: orchestrator.v1.ListPrivatePluginInstallSitesResponse - (*PrivatePluginInstallSite)(nil), // 35: orchestrator.v1.PrivatePluginInstallSite - (*GetVersionRequest)(nil), // 36: orchestrator.v1.GetVersionRequest - (*GetVersionResponse)(nil), // 37: orchestrator.v1.GetVersionResponse - (*ResolveInstallRequest)(nil), // 38: orchestrator.v1.ResolveInstallRequest - (*ResolveInstallResponse)(nil), // 39: orchestrator.v1.ResolveInstallResponse - (*ListPrivatePluginsForInstanceRequest)(nil), // 40: orchestrator.v1.ListPrivatePluginsForInstanceRequest - (*ResolveInstallForInstanceRequest)(nil), // 41: orchestrator.v1.ResolveInstallForInstanceRequest - (*PendingReview)(nil), // 42: orchestrator.v1.PendingReview - (*SubmitForReviewRequest)(nil), // 43: orchestrator.v1.SubmitForReviewRequest - (*SubmitForReviewResponse)(nil), // 44: orchestrator.v1.SubmitForReviewResponse - (*ListPendingReviewsRequest)(nil), // 45: orchestrator.v1.ListPendingReviewsRequest - (*ListPendingReviewsResponse)(nil), // 46: orchestrator.v1.ListPendingReviewsResponse - (*ApproveSubmissionRequest)(nil), // 47: orchestrator.v1.ApproveSubmissionRequest - (*ApproveSubmissionResponse)(nil), // 48: orchestrator.v1.ApproveSubmissionResponse - (*RejectSubmissionRequest)(nil), // 49: orchestrator.v1.RejectSubmissionRequest - (*RejectSubmissionResponse)(nil), // 50: orchestrator.v1.RejectSubmissionResponse - (*RequestChangesRequest)(nil), // 51: orchestrator.v1.RequestChangesRequest - (*RequestChangesResponse)(nil), // 52: orchestrator.v1.RequestChangesResponse - (*ListScreenshotsRequest)(nil), // 53: orchestrator.v1.ListScreenshotsRequest - (*ListScreenshotsResponse)(nil), // 54: orchestrator.v1.ListScreenshotsResponse - (*UploadScreenshotRequest)(nil), // 55: orchestrator.v1.UploadScreenshotRequest - (*UploadScreenshotResponse)(nil), // 56: orchestrator.v1.UploadScreenshotResponse - (*DeleteScreenshotRequest)(nil), // 57: orchestrator.v1.DeleteScreenshotRequest - (*DeleteScreenshotResponse)(nil), // 58: orchestrator.v1.DeleteScreenshotResponse - (*ReorderScreenshotsRequest)(nil), // 59: orchestrator.v1.ReorderScreenshotsRequest - (*ReorderScreenshotsResponse)(nil), // 60: orchestrator.v1.ReorderScreenshotsResponse - (*SetFeaturedScreenshotRequest)(nil), // 61: orchestrator.v1.SetFeaturedScreenshotRequest - (*SetFeaturedScreenshotResponse)(nil), // 62: orchestrator.v1.SetFeaturedScreenshotResponse - (*PluginReview)(nil), // 63: orchestrator.v1.PluginReview - (*PluginReviewReply)(nil), // 64: orchestrator.v1.PluginReviewReply - (*ReviewAggregate)(nil), // 65: orchestrator.v1.ReviewAggregate - (*ListReviewsRequest)(nil), // 66: orchestrator.v1.ListReviewsRequest - (*ListReviewsResponse)(nil), // 67: orchestrator.v1.ListReviewsResponse - (*GetMyReviewRequest)(nil), // 68: orchestrator.v1.GetMyReviewRequest - (*GetMyReviewResponse)(nil), // 69: orchestrator.v1.GetMyReviewResponse - (*UpsertReviewRequest)(nil), // 70: orchestrator.v1.UpsertReviewRequest - (*UpsertReviewResponse)(nil), // 71: orchestrator.v1.UpsertReviewResponse - (*DeleteReviewRequest)(nil), // 72: orchestrator.v1.DeleteReviewRequest - (*DeleteReviewResponse)(nil), // 73: orchestrator.v1.DeleteReviewResponse - (*ReplyToReviewRequest)(nil), // 74: orchestrator.v1.ReplyToReviewRequest - (*ReplyToReviewResponse)(nil), // 75: orchestrator.v1.ReplyToReviewResponse - (*DeleteReplyRequest)(nil), // 76: orchestrator.v1.DeleteReplyRequest - (*DeleteReplyResponse)(nil), // 77: orchestrator.v1.DeleteReplyResponse - (*FlagReviewRequest)(nil), // 78: orchestrator.v1.FlagReviewRequest - (*FlagReviewResponse)(nil), // 79: orchestrator.v1.FlagReviewResponse - (*FlaggedReview)(nil), // 80: orchestrator.v1.FlaggedReview - (*ListFlaggedReviewsRequest)(nil), // 81: orchestrator.v1.ListFlaggedReviewsRequest - (*ListFlaggedReviewsResponse)(nil), // 82: orchestrator.v1.ListFlaggedReviewsResponse - (*SoftDeleteReviewRequest)(nil), // 83: orchestrator.v1.SoftDeleteReviewRequest - (*SoftDeleteReviewResponse)(nil), // 84: orchestrator.v1.SoftDeleteReviewResponse - (*SoftDeleteReplyRequest)(nil), // 85: orchestrator.v1.SoftDeleteReplyRequest - (*SoftDeleteReplyResponse)(nil), // 86: orchestrator.v1.SoftDeleteReplyResponse - (*PublishVersionRequest)(nil), // 87: orchestrator.v1.PublishVersionRequest - (*PublishVersionResponse)(nil), // 88: orchestrator.v1.PublishVersionResponse - (*StartDeviceRequest)(nil), // 89: orchestrator.v1.StartDeviceRequest - (*StartDeviceResponse)(nil), // 90: orchestrator.v1.StartDeviceResponse - (*PollDeviceRequest)(nil), // 91: orchestrator.v1.PollDeviceRequest - (*PollDeviceResponse)(nil), // 92: orchestrator.v1.PollDeviceResponse - (*ApproveDeviceRequest)(nil), // 93: orchestrator.v1.ApproveDeviceRequest - (*ApproveDeviceResponse)(nil), // 94: orchestrator.v1.ApproveDeviceResponse - (*DenyDeviceRequest)(nil), // 95: orchestrator.v1.DenyDeviceRequest - (*DenyDeviceResponse)(nil), // 96: orchestrator.v1.DenyDeviceResponse - (*GetDeviceStatusRequest)(nil), // 97: orchestrator.v1.GetDeviceStatusRequest - (*GetDeviceStatusResponse)(nil), // 98: orchestrator.v1.GetDeviceStatusResponse - (*WhoamiRequest)(nil), // 99: orchestrator.v1.WhoamiRequest - (*WhoamiResponse)(nil), // 100: orchestrator.v1.WhoamiResponse - (*MyAccount)(nil), // 101: orchestrator.v1.MyAccount - (*ListMyAccountsForCLIRequest)(nil), // 102: orchestrator.v1.ListMyAccountsForCLIRequest - (*ListMyAccountsForCLIResponse)(nil), // 103: orchestrator.v1.ListMyAccountsForCLIResponse - nil, // 104: orchestrator.v1.GetPluginResponse.ChannelsEntry - nil, // 105: orchestrator.v1.PrivatePluginSummary.ChannelVersionsEntry - (*timestamppb.Timestamp)(nil), // 106: google.protobuf.Timestamp + (PluginVisibility)(0), // 0: orchestrator.v1.PluginVisibility + (*Scope)(nil), // 1: orchestrator.v1.Scope + (*Plugin)(nil), // 2: orchestrator.v1.Plugin + (*PluginScreenshot)(nil), // 3: orchestrator.v1.PluginScreenshot + (*Category)(nil), // 4: orchestrator.v1.Category + (*Version)(nil), // 5: orchestrator.v1.Version + (*Requirement)(nil), // 6: orchestrator.v1.Requirement + (*CreateScopeRequest)(nil), // 7: orchestrator.v1.CreateScopeRequest + (*CreateScopeResponse)(nil), // 8: orchestrator.v1.CreateScopeResponse + (*ListMyScopesRequest)(nil), // 9: orchestrator.v1.ListMyScopesRequest + (*ListMyScopesResponse)(nil), // 10: orchestrator.v1.ListMyScopesResponse + (*GetScopeRequest)(nil), // 11: orchestrator.v1.GetScopeRequest + (*GetScopeResponse)(nil), // 12: orchestrator.v1.GetScopeResponse + (*ListMyPluginsRequest)(nil), // 13: orchestrator.v1.ListMyPluginsRequest + (*ListMyPluginsResponse)(nil), // 14: orchestrator.v1.ListMyPluginsResponse + (*CreatePluginRequest)(nil), // 15: orchestrator.v1.CreatePluginRequest + (*CreatePluginResponse)(nil), // 16: orchestrator.v1.CreatePluginResponse + (*GetPluginRequest)(nil), // 17: orchestrator.v1.GetPluginRequest + (*GetPluginResponse)(nil), // 18: orchestrator.v1.GetPluginResponse + (*ListPluginsRequest)(nil), // 19: orchestrator.v1.ListPluginsRequest + (*ListPluginsResponse)(nil), // 20: orchestrator.v1.ListPluginsResponse + (*ListCategoriesRequest)(nil), // 21: orchestrator.v1.ListCategoriesRequest + (*ListCategoriesResponse)(nil), // 22: orchestrator.v1.ListCategoriesResponse + (*ListTagsRequest)(nil), // 23: orchestrator.v1.ListTagsRequest + (*ListTagsResponse)(nil), // 24: orchestrator.v1.ListTagsResponse + (*TagCount)(nil), // 25: orchestrator.v1.TagCount + (*ListPrivatePluginsRequest)(nil), // 26: orchestrator.v1.ListPrivatePluginsRequest + (*ListPrivatePluginsResponse)(nil), // 27: orchestrator.v1.ListPrivatePluginsResponse + (*PrivatePluginSummary)(nil), // 28: orchestrator.v1.PrivatePluginSummary + (*DeletePrivatePluginRequest)(nil), // 29: orchestrator.v1.DeletePrivatePluginRequest + (*DeletePrivatePluginResponse)(nil), // 30: orchestrator.v1.DeletePrivatePluginResponse + (*DeletePrivatePluginVersionRequest)(nil), // 31: orchestrator.v1.DeletePrivatePluginVersionRequest + (*DeletePrivatePluginVersionResponse)(nil), // 32: orchestrator.v1.DeletePrivatePluginVersionResponse + (*ListPrivatePluginInstallSitesRequest)(nil), // 33: orchestrator.v1.ListPrivatePluginInstallSitesRequest + (*ListPrivatePluginInstallSitesResponse)(nil), // 34: orchestrator.v1.ListPrivatePluginInstallSitesResponse + (*PrivatePluginInstallSite)(nil), // 35: orchestrator.v1.PrivatePluginInstallSite + (*GetVersionRequest)(nil), // 36: orchestrator.v1.GetVersionRequest + (*GetVersionResponse)(nil), // 37: orchestrator.v1.GetVersionResponse + (*ResolveInstallRequest)(nil), // 38: orchestrator.v1.ResolveInstallRequest + (*ResolveInstallResponse)(nil), // 39: orchestrator.v1.ResolveInstallResponse + (*ListPrivatePluginsForInstanceRequest)(nil), // 40: orchestrator.v1.ListPrivatePluginsForInstanceRequest + (*ResolveInstallForInstanceRequest)(nil), // 41: orchestrator.v1.ResolveInstallForInstanceRequest + (*ConfirmPluginInstallForInstanceRequest)(nil), // 42: orchestrator.v1.ConfirmPluginInstallForInstanceRequest + (*ConfirmPluginInstallForInstanceResponse)(nil), // 43: orchestrator.v1.ConfirmPluginInstallForInstanceResponse + (*PendingReview)(nil), // 44: orchestrator.v1.PendingReview + (*SubmitForReviewRequest)(nil), // 45: orchestrator.v1.SubmitForReviewRequest + (*SubmitForReviewResponse)(nil), // 46: orchestrator.v1.SubmitForReviewResponse + (*ListPendingReviewsRequest)(nil), // 47: orchestrator.v1.ListPendingReviewsRequest + (*ListPendingReviewsResponse)(nil), // 48: orchestrator.v1.ListPendingReviewsResponse + (*ApproveSubmissionRequest)(nil), // 49: orchestrator.v1.ApproveSubmissionRequest + (*ApproveSubmissionResponse)(nil), // 50: orchestrator.v1.ApproveSubmissionResponse + (*RejectSubmissionRequest)(nil), // 51: orchestrator.v1.RejectSubmissionRequest + (*RejectSubmissionResponse)(nil), // 52: orchestrator.v1.RejectSubmissionResponse + (*RequestChangesRequest)(nil), // 53: orchestrator.v1.RequestChangesRequest + (*RequestChangesResponse)(nil), // 54: orchestrator.v1.RequestChangesResponse + (*UnpublishPluginRequest)(nil), // 55: orchestrator.v1.UnpublishPluginRequest + (*UnpublishPluginResponse)(nil), // 56: orchestrator.v1.UnpublishPluginResponse + (*TakedownPluginRequest)(nil), // 57: orchestrator.v1.TakedownPluginRequest + (*TakedownPluginResponse)(nil), // 58: orchestrator.v1.TakedownPluginResponse + (*RestorePluginRequest)(nil), // 59: orchestrator.v1.RestorePluginRequest + (*RestorePluginResponse)(nil), // 60: orchestrator.v1.RestorePluginResponse + (*YankVersionRequest)(nil), // 61: orchestrator.v1.YankVersionRequest + (*YankVersionResponse)(nil), // 62: orchestrator.v1.YankVersionResponse + (*DeletePublicPluginRequest)(nil), // 63: orchestrator.v1.DeletePublicPluginRequest + (*DeletePublicPluginResponse)(nil), // 64: orchestrator.v1.DeletePublicPluginResponse + (*ListScreenshotsRequest)(nil), // 65: orchestrator.v1.ListScreenshotsRequest + (*ListScreenshotsResponse)(nil), // 66: orchestrator.v1.ListScreenshotsResponse + (*UploadScreenshotRequest)(nil), // 67: orchestrator.v1.UploadScreenshotRequest + (*UploadScreenshotResponse)(nil), // 68: orchestrator.v1.UploadScreenshotResponse + (*DeleteScreenshotRequest)(nil), // 69: orchestrator.v1.DeleteScreenshotRequest + (*DeleteScreenshotResponse)(nil), // 70: orchestrator.v1.DeleteScreenshotResponse + (*ReorderScreenshotsRequest)(nil), // 71: orchestrator.v1.ReorderScreenshotsRequest + (*ReorderScreenshotsResponse)(nil), // 72: orchestrator.v1.ReorderScreenshotsResponse + (*SetFeaturedScreenshotRequest)(nil), // 73: orchestrator.v1.SetFeaturedScreenshotRequest + (*SetFeaturedScreenshotResponse)(nil), // 74: orchestrator.v1.SetFeaturedScreenshotResponse + (*PluginReview)(nil), // 75: orchestrator.v1.PluginReview + (*PluginReviewReply)(nil), // 76: orchestrator.v1.PluginReviewReply + (*ReviewAggregate)(nil), // 77: orchestrator.v1.ReviewAggregate + (*ListReviewsRequest)(nil), // 78: orchestrator.v1.ListReviewsRequest + (*ListReviewsResponse)(nil), // 79: orchestrator.v1.ListReviewsResponse + (*GetMyReviewRequest)(nil), // 80: orchestrator.v1.GetMyReviewRequest + (*GetMyReviewResponse)(nil), // 81: orchestrator.v1.GetMyReviewResponse + (*UpsertReviewRequest)(nil), // 82: orchestrator.v1.UpsertReviewRequest + (*UpsertReviewResponse)(nil), // 83: orchestrator.v1.UpsertReviewResponse + (*DeleteReviewRequest)(nil), // 84: orchestrator.v1.DeleteReviewRequest + (*DeleteReviewResponse)(nil), // 85: orchestrator.v1.DeleteReviewResponse + (*ReplyToReviewRequest)(nil), // 86: orchestrator.v1.ReplyToReviewRequest + (*ReplyToReviewResponse)(nil), // 87: orchestrator.v1.ReplyToReviewResponse + (*DeleteReplyRequest)(nil), // 88: orchestrator.v1.DeleteReplyRequest + (*DeleteReplyResponse)(nil), // 89: orchestrator.v1.DeleteReplyResponse + (*FlagReviewRequest)(nil), // 90: orchestrator.v1.FlagReviewRequest + (*FlagReviewResponse)(nil), // 91: orchestrator.v1.FlagReviewResponse + (*FlaggedReview)(nil), // 92: orchestrator.v1.FlaggedReview + (*ListFlaggedReviewsRequest)(nil), // 93: orchestrator.v1.ListFlaggedReviewsRequest + (*ListFlaggedReviewsResponse)(nil), // 94: orchestrator.v1.ListFlaggedReviewsResponse + (*SoftDeleteReviewRequest)(nil), // 95: orchestrator.v1.SoftDeleteReviewRequest + (*SoftDeleteReviewResponse)(nil), // 96: orchestrator.v1.SoftDeleteReviewResponse + (*SoftDeleteReplyRequest)(nil), // 97: orchestrator.v1.SoftDeleteReplyRequest + (*SoftDeleteReplyResponse)(nil), // 98: orchestrator.v1.SoftDeleteReplyResponse + (*PublishVersionRequest)(nil), // 99: orchestrator.v1.PublishVersionRequest + (*PublishVersionResponse)(nil), // 100: orchestrator.v1.PublishVersionResponse + (*StartDeviceRequest)(nil), // 101: orchestrator.v1.StartDeviceRequest + (*StartDeviceResponse)(nil), // 102: orchestrator.v1.StartDeviceResponse + (*PollDeviceRequest)(nil), // 103: orchestrator.v1.PollDeviceRequest + (*PollDeviceResponse)(nil), // 104: orchestrator.v1.PollDeviceResponse + (*ApproveDeviceRequest)(nil), // 105: orchestrator.v1.ApproveDeviceRequest + (*ApproveDeviceResponse)(nil), // 106: orchestrator.v1.ApproveDeviceResponse + (*DenyDeviceRequest)(nil), // 107: orchestrator.v1.DenyDeviceRequest + (*DenyDeviceResponse)(nil), // 108: orchestrator.v1.DenyDeviceResponse + (*GetDeviceStatusRequest)(nil), // 109: orchestrator.v1.GetDeviceStatusRequest + (*GetDeviceStatusResponse)(nil), // 110: orchestrator.v1.GetDeviceStatusResponse + (*WhoamiRequest)(nil), // 111: orchestrator.v1.WhoamiRequest + (*WhoamiResponse)(nil), // 112: orchestrator.v1.WhoamiResponse + (*MyAccount)(nil), // 113: orchestrator.v1.MyAccount + (*ListMyAccountsForCLIRequest)(nil), // 114: orchestrator.v1.ListMyAccountsForCLIRequest + (*ListMyAccountsForCLIResponse)(nil), // 115: orchestrator.v1.ListMyAccountsForCLIResponse + (*CreateCategoryRequest)(nil), // 116: orchestrator.v1.CreateCategoryRequest + (*CreateCategoryResponse)(nil), // 117: orchestrator.v1.CreateCategoryResponse + (*UpdateCategoryRequest)(nil), // 118: orchestrator.v1.UpdateCategoryRequest + (*UpdateCategoryResponse)(nil), // 119: orchestrator.v1.UpdateCategoryResponse + (*DeleteCategoryRequest)(nil), // 120: orchestrator.v1.DeleteCategoryRequest + (*DeleteCategoryResponse)(nil), // 121: orchestrator.v1.DeleteCategoryResponse + nil, // 122: orchestrator.v1.GetPluginResponse.ChannelsEntry + nil, // 123: orchestrator.v1.PrivatePluginSummary.ChannelVersionsEntry + (*timestamppb.Timestamp)(nil), // 124: google.protobuf.Timestamp } var file_orchestrator_v1_plugin_registry_proto_depIdxs = []int32{ - 106, // 0: orchestrator.v1.Scope.created_at:type_name -> google.protobuf.Timestamp + 124, // 0: orchestrator.v1.Scope.created_at:type_name -> google.protobuf.Timestamp 0, // 1: orchestrator.v1.Plugin.visibility:type_name -> orchestrator.v1.PluginVisibility - 106, // 2: orchestrator.v1.Plugin.updated_at:type_name -> google.protobuf.Timestamp - 106, // 3: orchestrator.v1.Version.published_at:type_name -> google.protobuf.Timestamp + 124, // 2: orchestrator.v1.Plugin.updated_at:type_name -> google.protobuf.Timestamp + 124, // 3: orchestrator.v1.Version.published_at:type_name -> google.protobuf.Timestamp 1, // 4: orchestrator.v1.CreateScopeResponse.scope:type_name -> orchestrator.v1.Scope 1, // 5: orchestrator.v1.ListMyScopesResponse.scopes:type_name -> orchestrator.v1.Scope 1, // 6: orchestrator.v1.GetScopeResponse.scope:type_name -> orchestrator.v1.Scope @@ -6552,132 +7636,152 @@ var file_orchestrator_v1_plugin_registry_proto_depIdxs = []int32{ 2, // 10: orchestrator.v1.CreatePluginResponse.plugin:type_name -> orchestrator.v1.Plugin 2, // 11: orchestrator.v1.GetPluginResponse.plugin:type_name -> orchestrator.v1.Plugin 5, // 12: orchestrator.v1.GetPluginResponse.versions:type_name -> orchestrator.v1.Version - 104, // 13: orchestrator.v1.GetPluginResponse.channels:type_name -> orchestrator.v1.GetPluginResponse.ChannelsEntry + 122, // 13: orchestrator.v1.GetPluginResponse.channels:type_name -> orchestrator.v1.GetPluginResponse.ChannelsEntry 3, // 14: orchestrator.v1.GetPluginResponse.screenshots:type_name -> orchestrator.v1.PluginScreenshot 2, // 15: orchestrator.v1.ListPluginsResponse.plugins:type_name -> orchestrator.v1.Plugin 4, // 16: orchestrator.v1.ListCategoriesResponse.categories:type_name -> orchestrator.v1.Category 25, // 17: orchestrator.v1.ListTagsResponse.tags:type_name -> orchestrator.v1.TagCount 28, // 18: orchestrator.v1.ListPrivatePluginsResponse.plugins:type_name -> orchestrator.v1.PrivatePluginSummary 2, // 19: orchestrator.v1.PrivatePluginSummary.plugin:type_name -> orchestrator.v1.Plugin - 105, // 20: orchestrator.v1.PrivatePluginSummary.channel_versions:type_name -> orchestrator.v1.PrivatePluginSummary.ChannelVersionsEntry + 123, // 20: orchestrator.v1.PrivatePluginSummary.channel_versions:type_name -> orchestrator.v1.PrivatePluginSummary.ChannelVersionsEntry 35, // 21: orchestrator.v1.ListPrivatePluginInstallSitesResponse.sites:type_name -> orchestrator.v1.PrivatePluginInstallSite 5, // 22: orchestrator.v1.GetVersionResponse.version:type_name -> orchestrator.v1.Version 6, // 23: orchestrator.v1.GetVersionResponse.requires:type_name -> orchestrator.v1.Requirement 6, // 24: orchestrator.v1.ResolveInstallResponse.requires:type_name -> orchestrator.v1.Requirement - 106, // 25: orchestrator.v1.PendingReview.submitted_at:type_name -> google.protobuf.Timestamp - 42, // 26: orchestrator.v1.ListPendingReviewsResponse.reviews:type_name -> orchestrator.v1.PendingReview + 124, // 25: orchestrator.v1.PendingReview.submitted_at:type_name -> google.protobuf.Timestamp + 44, // 26: orchestrator.v1.ListPendingReviewsResponse.reviews:type_name -> orchestrator.v1.PendingReview 3, // 27: orchestrator.v1.ListScreenshotsResponse.screenshots:type_name -> orchestrator.v1.PluginScreenshot 3, // 28: orchestrator.v1.UploadScreenshotResponse.screenshot:type_name -> orchestrator.v1.PluginScreenshot 3, // 29: orchestrator.v1.ReorderScreenshotsResponse.screenshots:type_name -> orchestrator.v1.PluginScreenshot - 106, // 30: orchestrator.v1.PluginReview.created_at:type_name -> google.protobuf.Timestamp - 106, // 31: orchestrator.v1.PluginReview.updated_at:type_name -> google.protobuf.Timestamp - 64, // 32: orchestrator.v1.PluginReview.reply:type_name -> orchestrator.v1.PluginReviewReply - 106, // 33: orchestrator.v1.PluginReviewReply.created_at:type_name -> google.protobuf.Timestamp - 63, // 34: orchestrator.v1.ListReviewsResponse.reviews:type_name -> orchestrator.v1.PluginReview - 65, // 35: orchestrator.v1.ListReviewsResponse.aggregate:type_name -> orchestrator.v1.ReviewAggregate - 63, // 36: orchestrator.v1.GetMyReviewResponse.review:type_name -> orchestrator.v1.PluginReview - 63, // 37: orchestrator.v1.UpsertReviewResponse.review:type_name -> orchestrator.v1.PluginReview - 64, // 38: orchestrator.v1.ReplyToReviewResponse.reply:type_name -> orchestrator.v1.PluginReviewReply - 63, // 39: orchestrator.v1.FlaggedReview.review:type_name -> orchestrator.v1.PluginReview - 106, // 40: orchestrator.v1.FlaggedReview.first_flagged_at:type_name -> google.protobuf.Timestamp - 80, // 41: orchestrator.v1.ListFlaggedReviewsResponse.reviews:type_name -> orchestrator.v1.FlaggedReview + 124, // 30: orchestrator.v1.PluginReview.created_at:type_name -> google.protobuf.Timestamp + 124, // 31: orchestrator.v1.PluginReview.updated_at:type_name -> google.protobuf.Timestamp + 76, // 32: orchestrator.v1.PluginReview.reply:type_name -> orchestrator.v1.PluginReviewReply + 124, // 33: orchestrator.v1.PluginReviewReply.created_at:type_name -> google.protobuf.Timestamp + 75, // 34: orchestrator.v1.ListReviewsResponse.reviews:type_name -> orchestrator.v1.PluginReview + 77, // 35: orchestrator.v1.ListReviewsResponse.aggregate:type_name -> orchestrator.v1.ReviewAggregate + 75, // 36: orchestrator.v1.GetMyReviewResponse.review:type_name -> orchestrator.v1.PluginReview + 75, // 37: orchestrator.v1.UpsertReviewResponse.review:type_name -> orchestrator.v1.PluginReview + 76, // 38: orchestrator.v1.ReplyToReviewResponse.reply:type_name -> orchestrator.v1.PluginReviewReply + 75, // 39: orchestrator.v1.FlaggedReview.review:type_name -> orchestrator.v1.PluginReview + 124, // 40: orchestrator.v1.FlaggedReview.first_flagged_at:type_name -> google.protobuf.Timestamp + 92, // 41: orchestrator.v1.ListFlaggedReviewsResponse.reviews:type_name -> orchestrator.v1.FlaggedReview 5, // 42: orchestrator.v1.PublishVersionResponse.version:type_name -> orchestrator.v1.Version - 101, // 43: orchestrator.v1.ListMyAccountsForCLIResponse.accounts:type_name -> orchestrator.v1.MyAccount - 7, // 44: orchestrator.v1.PluginScopeService.CreateScope:input_type -> orchestrator.v1.CreateScopeRequest - 9, // 45: orchestrator.v1.PluginScopeService.ListMyScopes:input_type -> orchestrator.v1.ListMyScopesRequest - 11, // 46: orchestrator.v1.PluginScopeService.GetScope:input_type -> orchestrator.v1.GetScopeRequest - 13, // 47: orchestrator.v1.PluginScopeService.ListMyPlugins:input_type -> orchestrator.v1.ListMyPluginsRequest - 15, // 48: orchestrator.v1.PluginRegistryService.CreatePlugin:input_type -> orchestrator.v1.CreatePluginRequest - 17, // 49: orchestrator.v1.PluginRegistryService.GetPlugin:input_type -> orchestrator.v1.GetPluginRequest - 19, // 50: orchestrator.v1.PluginRegistryService.ListPlugins:input_type -> orchestrator.v1.ListPluginsRequest - 36, // 51: orchestrator.v1.PluginRegistryService.GetVersion:input_type -> orchestrator.v1.GetVersionRequest - 38, // 52: orchestrator.v1.PluginRegistryService.ResolveInstall:input_type -> orchestrator.v1.ResolveInstallRequest - 21, // 53: orchestrator.v1.PluginRegistryService.ListCategories:input_type -> orchestrator.v1.ListCategoriesRequest - 23, // 54: orchestrator.v1.PluginRegistryService.ListTags:input_type -> orchestrator.v1.ListTagsRequest - 43, // 55: orchestrator.v1.PluginRegistryService.SubmitForReview:input_type -> orchestrator.v1.SubmitForReviewRequest - 26, // 56: orchestrator.v1.PluginRegistryService.ListPrivatePlugins:input_type -> orchestrator.v1.ListPrivatePluginsRequest - 29, // 57: orchestrator.v1.PluginRegistryService.DeletePrivatePlugin:input_type -> orchestrator.v1.DeletePrivatePluginRequest - 31, // 58: orchestrator.v1.PluginRegistryService.DeletePrivatePluginVersion:input_type -> orchestrator.v1.DeletePrivatePluginVersionRequest - 33, // 59: orchestrator.v1.PluginRegistryService.ListPrivatePluginInstallSites:input_type -> orchestrator.v1.ListPrivatePluginInstallSitesRequest - 40, // 60: orchestrator.v1.PluginRegistryService.ListPrivatePluginsForInstance:input_type -> orchestrator.v1.ListPrivatePluginsForInstanceRequest - 41, // 61: orchestrator.v1.PluginRegistryService.ResolveInstallForInstance:input_type -> orchestrator.v1.ResolveInstallForInstanceRequest - 45, // 62: orchestrator.v1.PluginModerationService.ListPendingReviews:input_type -> orchestrator.v1.ListPendingReviewsRequest - 47, // 63: orchestrator.v1.PluginModerationService.ApproveSubmission:input_type -> orchestrator.v1.ApproveSubmissionRequest - 49, // 64: orchestrator.v1.PluginModerationService.RejectSubmission:input_type -> orchestrator.v1.RejectSubmissionRequest - 51, // 65: orchestrator.v1.PluginModerationService.RequestChanges:input_type -> orchestrator.v1.RequestChangesRequest - 81, // 66: orchestrator.v1.PluginModerationService.ListFlaggedReviews:input_type -> orchestrator.v1.ListFlaggedReviewsRequest - 83, // 67: orchestrator.v1.PluginModerationService.SoftDeleteReview:input_type -> orchestrator.v1.SoftDeleteReviewRequest - 85, // 68: orchestrator.v1.PluginModerationService.SoftDeleteReply:input_type -> orchestrator.v1.SoftDeleteReplyRequest - 53, // 69: orchestrator.v1.PluginGalleryService.ListScreenshots:input_type -> orchestrator.v1.ListScreenshotsRequest - 55, // 70: orchestrator.v1.PluginGalleryService.UploadScreenshot:input_type -> orchestrator.v1.UploadScreenshotRequest - 57, // 71: orchestrator.v1.PluginGalleryService.DeleteScreenshot:input_type -> orchestrator.v1.DeleteScreenshotRequest - 59, // 72: orchestrator.v1.PluginGalleryService.ReorderScreenshots:input_type -> orchestrator.v1.ReorderScreenshotsRequest - 61, // 73: orchestrator.v1.PluginGalleryService.SetFeaturedScreenshot:input_type -> orchestrator.v1.SetFeaturedScreenshotRequest - 66, // 74: orchestrator.v1.PluginReviewService.ListReviews:input_type -> orchestrator.v1.ListReviewsRequest - 68, // 75: orchestrator.v1.PluginReviewService.GetMyReview:input_type -> orchestrator.v1.GetMyReviewRequest - 70, // 76: orchestrator.v1.PluginReviewService.UpsertReview:input_type -> orchestrator.v1.UpsertReviewRequest - 72, // 77: orchestrator.v1.PluginReviewService.DeleteReview:input_type -> orchestrator.v1.DeleteReviewRequest - 74, // 78: orchestrator.v1.PluginReviewService.ReplyToReview:input_type -> orchestrator.v1.ReplyToReviewRequest - 76, // 79: orchestrator.v1.PluginReviewService.DeleteReply:input_type -> orchestrator.v1.DeleteReplyRequest - 78, // 80: orchestrator.v1.PluginReviewService.FlagReview:input_type -> orchestrator.v1.FlagReviewRequest - 87, // 81: orchestrator.v1.PluginPublishService.PublishVersion:input_type -> orchestrator.v1.PublishVersionRequest - 89, // 82: orchestrator.v1.PluginAuthService.StartDevice:input_type -> orchestrator.v1.StartDeviceRequest - 91, // 83: orchestrator.v1.PluginAuthService.PollDevice:input_type -> orchestrator.v1.PollDeviceRequest - 93, // 84: orchestrator.v1.PluginAuthService.ApproveDevice:input_type -> orchestrator.v1.ApproveDeviceRequest - 95, // 85: orchestrator.v1.PluginAuthService.DenyDevice:input_type -> orchestrator.v1.DenyDeviceRequest - 97, // 86: orchestrator.v1.PluginAuthService.GetDeviceStatus:input_type -> orchestrator.v1.GetDeviceStatusRequest - 99, // 87: orchestrator.v1.PluginAuthService.Whoami:input_type -> orchestrator.v1.WhoamiRequest - 102, // 88: orchestrator.v1.PluginAuthService.ListMyAccountsForCLI:input_type -> orchestrator.v1.ListMyAccountsForCLIRequest - 8, // 89: orchestrator.v1.PluginScopeService.CreateScope:output_type -> orchestrator.v1.CreateScopeResponse - 10, // 90: orchestrator.v1.PluginScopeService.ListMyScopes:output_type -> orchestrator.v1.ListMyScopesResponse - 12, // 91: orchestrator.v1.PluginScopeService.GetScope:output_type -> orchestrator.v1.GetScopeResponse - 14, // 92: orchestrator.v1.PluginScopeService.ListMyPlugins:output_type -> orchestrator.v1.ListMyPluginsResponse - 16, // 93: orchestrator.v1.PluginRegistryService.CreatePlugin:output_type -> orchestrator.v1.CreatePluginResponse - 18, // 94: orchestrator.v1.PluginRegistryService.GetPlugin:output_type -> orchestrator.v1.GetPluginResponse - 20, // 95: orchestrator.v1.PluginRegistryService.ListPlugins:output_type -> orchestrator.v1.ListPluginsResponse - 37, // 96: orchestrator.v1.PluginRegistryService.GetVersion:output_type -> orchestrator.v1.GetVersionResponse - 39, // 97: orchestrator.v1.PluginRegistryService.ResolveInstall:output_type -> orchestrator.v1.ResolveInstallResponse - 22, // 98: orchestrator.v1.PluginRegistryService.ListCategories:output_type -> orchestrator.v1.ListCategoriesResponse - 24, // 99: orchestrator.v1.PluginRegistryService.ListTags:output_type -> orchestrator.v1.ListTagsResponse - 44, // 100: orchestrator.v1.PluginRegistryService.SubmitForReview:output_type -> orchestrator.v1.SubmitForReviewResponse - 27, // 101: orchestrator.v1.PluginRegistryService.ListPrivatePlugins:output_type -> orchestrator.v1.ListPrivatePluginsResponse - 30, // 102: orchestrator.v1.PluginRegistryService.DeletePrivatePlugin:output_type -> orchestrator.v1.DeletePrivatePluginResponse - 32, // 103: orchestrator.v1.PluginRegistryService.DeletePrivatePluginVersion:output_type -> orchestrator.v1.DeletePrivatePluginVersionResponse - 34, // 104: orchestrator.v1.PluginRegistryService.ListPrivatePluginInstallSites:output_type -> orchestrator.v1.ListPrivatePluginInstallSitesResponse - 27, // 105: orchestrator.v1.PluginRegistryService.ListPrivatePluginsForInstance:output_type -> orchestrator.v1.ListPrivatePluginsResponse - 39, // 106: orchestrator.v1.PluginRegistryService.ResolveInstallForInstance:output_type -> orchestrator.v1.ResolveInstallResponse - 46, // 107: orchestrator.v1.PluginModerationService.ListPendingReviews:output_type -> orchestrator.v1.ListPendingReviewsResponse - 48, // 108: orchestrator.v1.PluginModerationService.ApproveSubmission:output_type -> orchestrator.v1.ApproveSubmissionResponse - 50, // 109: orchestrator.v1.PluginModerationService.RejectSubmission:output_type -> orchestrator.v1.RejectSubmissionResponse - 52, // 110: orchestrator.v1.PluginModerationService.RequestChanges:output_type -> orchestrator.v1.RequestChangesResponse - 82, // 111: orchestrator.v1.PluginModerationService.ListFlaggedReviews:output_type -> orchestrator.v1.ListFlaggedReviewsResponse - 84, // 112: orchestrator.v1.PluginModerationService.SoftDeleteReview:output_type -> orchestrator.v1.SoftDeleteReviewResponse - 86, // 113: orchestrator.v1.PluginModerationService.SoftDeleteReply:output_type -> orchestrator.v1.SoftDeleteReplyResponse - 54, // 114: orchestrator.v1.PluginGalleryService.ListScreenshots:output_type -> orchestrator.v1.ListScreenshotsResponse - 56, // 115: orchestrator.v1.PluginGalleryService.UploadScreenshot:output_type -> orchestrator.v1.UploadScreenshotResponse - 58, // 116: orchestrator.v1.PluginGalleryService.DeleteScreenshot:output_type -> orchestrator.v1.DeleteScreenshotResponse - 60, // 117: orchestrator.v1.PluginGalleryService.ReorderScreenshots:output_type -> orchestrator.v1.ReorderScreenshotsResponse - 62, // 118: orchestrator.v1.PluginGalleryService.SetFeaturedScreenshot:output_type -> orchestrator.v1.SetFeaturedScreenshotResponse - 67, // 119: orchestrator.v1.PluginReviewService.ListReviews:output_type -> orchestrator.v1.ListReviewsResponse - 69, // 120: orchestrator.v1.PluginReviewService.GetMyReview:output_type -> orchestrator.v1.GetMyReviewResponse - 71, // 121: orchestrator.v1.PluginReviewService.UpsertReview:output_type -> orchestrator.v1.UpsertReviewResponse - 73, // 122: orchestrator.v1.PluginReviewService.DeleteReview:output_type -> orchestrator.v1.DeleteReviewResponse - 75, // 123: orchestrator.v1.PluginReviewService.ReplyToReview:output_type -> orchestrator.v1.ReplyToReviewResponse - 77, // 124: orchestrator.v1.PluginReviewService.DeleteReply:output_type -> orchestrator.v1.DeleteReplyResponse - 79, // 125: orchestrator.v1.PluginReviewService.FlagReview:output_type -> orchestrator.v1.FlagReviewResponse - 88, // 126: orchestrator.v1.PluginPublishService.PublishVersion:output_type -> orchestrator.v1.PublishVersionResponse - 90, // 127: orchestrator.v1.PluginAuthService.StartDevice:output_type -> orchestrator.v1.StartDeviceResponse - 92, // 128: orchestrator.v1.PluginAuthService.PollDevice:output_type -> orchestrator.v1.PollDeviceResponse - 94, // 129: orchestrator.v1.PluginAuthService.ApproveDevice:output_type -> orchestrator.v1.ApproveDeviceResponse - 96, // 130: orchestrator.v1.PluginAuthService.DenyDevice:output_type -> orchestrator.v1.DenyDeviceResponse - 98, // 131: orchestrator.v1.PluginAuthService.GetDeviceStatus:output_type -> orchestrator.v1.GetDeviceStatusResponse - 100, // 132: orchestrator.v1.PluginAuthService.Whoami:output_type -> orchestrator.v1.WhoamiResponse - 103, // 133: orchestrator.v1.PluginAuthService.ListMyAccountsForCLI:output_type -> orchestrator.v1.ListMyAccountsForCLIResponse - 89, // [89:134] is the sub-list for method output_type - 44, // [44:89] is the sub-list for method input_type - 44, // [44:44] is the sub-list for extension type_name - 44, // [44:44] is the sub-list for extension extendee - 0, // [0:44] is the sub-list for field type_name + 113, // 43: orchestrator.v1.ListMyAccountsForCLIResponse.accounts:type_name -> orchestrator.v1.MyAccount + 4, // 44: orchestrator.v1.CreateCategoryResponse.category:type_name -> orchestrator.v1.Category + 4, // 45: orchestrator.v1.UpdateCategoryResponse.category:type_name -> orchestrator.v1.Category + 7, // 46: orchestrator.v1.PluginScopeService.CreateScope:input_type -> orchestrator.v1.CreateScopeRequest + 9, // 47: orchestrator.v1.PluginScopeService.ListMyScopes:input_type -> orchestrator.v1.ListMyScopesRequest + 11, // 48: orchestrator.v1.PluginScopeService.GetScope:input_type -> orchestrator.v1.GetScopeRequest + 13, // 49: orchestrator.v1.PluginScopeService.ListMyPlugins:input_type -> orchestrator.v1.ListMyPluginsRequest + 15, // 50: orchestrator.v1.PluginRegistryService.CreatePlugin:input_type -> orchestrator.v1.CreatePluginRequest + 17, // 51: orchestrator.v1.PluginRegistryService.GetPlugin:input_type -> orchestrator.v1.GetPluginRequest + 19, // 52: orchestrator.v1.PluginRegistryService.ListPlugins:input_type -> orchestrator.v1.ListPluginsRequest + 36, // 53: orchestrator.v1.PluginRegistryService.GetVersion:input_type -> orchestrator.v1.GetVersionRequest + 38, // 54: orchestrator.v1.PluginRegistryService.ResolveInstall:input_type -> orchestrator.v1.ResolveInstallRequest + 21, // 55: orchestrator.v1.PluginRegistryService.ListCategories:input_type -> orchestrator.v1.ListCategoriesRequest + 23, // 56: orchestrator.v1.PluginRegistryService.ListTags:input_type -> orchestrator.v1.ListTagsRequest + 45, // 57: orchestrator.v1.PluginRegistryService.SubmitForReview:input_type -> orchestrator.v1.SubmitForReviewRequest + 26, // 58: orchestrator.v1.PluginRegistryService.ListPrivatePlugins:input_type -> orchestrator.v1.ListPrivatePluginsRequest + 29, // 59: orchestrator.v1.PluginRegistryService.DeletePrivatePlugin:input_type -> orchestrator.v1.DeletePrivatePluginRequest + 31, // 60: orchestrator.v1.PluginRegistryService.DeletePrivatePluginVersion:input_type -> orchestrator.v1.DeletePrivatePluginVersionRequest + 33, // 61: orchestrator.v1.PluginRegistryService.ListPrivatePluginInstallSites:input_type -> orchestrator.v1.ListPrivatePluginInstallSitesRequest + 40, // 62: orchestrator.v1.PluginRegistryService.ListPrivatePluginsForInstance:input_type -> orchestrator.v1.ListPrivatePluginsForInstanceRequest + 41, // 63: orchestrator.v1.PluginRegistryService.ResolveInstallForInstance:input_type -> orchestrator.v1.ResolveInstallForInstanceRequest + 42, // 64: orchestrator.v1.PluginRegistryService.ConfirmPluginInstallForInstance:input_type -> orchestrator.v1.ConfirmPluginInstallForInstanceRequest + 47, // 65: orchestrator.v1.PluginModerationService.ListPendingReviews:input_type -> orchestrator.v1.ListPendingReviewsRequest + 49, // 66: orchestrator.v1.PluginModerationService.ApproveSubmission:input_type -> orchestrator.v1.ApproveSubmissionRequest + 51, // 67: orchestrator.v1.PluginModerationService.RejectSubmission:input_type -> orchestrator.v1.RejectSubmissionRequest + 53, // 68: orchestrator.v1.PluginModerationService.RequestChanges:input_type -> orchestrator.v1.RequestChangesRequest + 55, // 69: orchestrator.v1.PluginModerationService.UnpublishPlugin:input_type -> orchestrator.v1.UnpublishPluginRequest + 57, // 70: orchestrator.v1.PluginModerationService.TakedownPlugin:input_type -> orchestrator.v1.TakedownPluginRequest + 59, // 71: orchestrator.v1.PluginModerationService.RestorePlugin:input_type -> orchestrator.v1.RestorePluginRequest + 61, // 72: orchestrator.v1.PluginModerationService.YankVersion:input_type -> orchestrator.v1.YankVersionRequest + 63, // 73: orchestrator.v1.PluginModerationService.DeletePublicPlugin:input_type -> orchestrator.v1.DeletePublicPluginRequest + 93, // 74: orchestrator.v1.PluginModerationService.ListFlaggedReviews:input_type -> orchestrator.v1.ListFlaggedReviewsRequest + 95, // 75: orchestrator.v1.PluginModerationService.SoftDeleteReview:input_type -> orchestrator.v1.SoftDeleteReviewRequest + 97, // 76: orchestrator.v1.PluginModerationService.SoftDeleteReply:input_type -> orchestrator.v1.SoftDeleteReplyRequest + 116, // 77: orchestrator.v1.PluginModerationService.CreateCategory:input_type -> orchestrator.v1.CreateCategoryRequest + 118, // 78: orchestrator.v1.PluginModerationService.UpdateCategory:input_type -> orchestrator.v1.UpdateCategoryRequest + 120, // 79: orchestrator.v1.PluginModerationService.DeleteCategory:input_type -> orchestrator.v1.DeleteCategoryRequest + 65, // 80: orchestrator.v1.PluginGalleryService.ListScreenshots:input_type -> orchestrator.v1.ListScreenshotsRequest + 67, // 81: orchestrator.v1.PluginGalleryService.UploadScreenshot:input_type -> orchestrator.v1.UploadScreenshotRequest + 69, // 82: orchestrator.v1.PluginGalleryService.DeleteScreenshot:input_type -> orchestrator.v1.DeleteScreenshotRequest + 71, // 83: orchestrator.v1.PluginGalleryService.ReorderScreenshots:input_type -> orchestrator.v1.ReorderScreenshotsRequest + 73, // 84: orchestrator.v1.PluginGalleryService.SetFeaturedScreenshot:input_type -> orchestrator.v1.SetFeaturedScreenshotRequest + 78, // 85: orchestrator.v1.PluginReviewService.ListReviews:input_type -> orchestrator.v1.ListReviewsRequest + 80, // 86: orchestrator.v1.PluginReviewService.GetMyReview:input_type -> orchestrator.v1.GetMyReviewRequest + 82, // 87: orchestrator.v1.PluginReviewService.UpsertReview:input_type -> orchestrator.v1.UpsertReviewRequest + 84, // 88: orchestrator.v1.PluginReviewService.DeleteReview:input_type -> orchestrator.v1.DeleteReviewRequest + 86, // 89: orchestrator.v1.PluginReviewService.ReplyToReview:input_type -> orchestrator.v1.ReplyToReviewRequest + 88, // 90: orchestrator.v1.PluginReviewService.DeleteReply:input_type -> orchestrator.v1.DeleteReplyRequest + 90, // 91: orchestrator.v1.PluginReviewService.FlagReview:input_type -> orchestrator.v1.FlagReviewRequest + 99, // 92: orchestrator.v1.PluginPublishService.PublishVersion:input_type -> orchestrator.v1.PublishVersionRequest + 101, // 93: orchestrator.v1.PluginAuthService.StartDevice:input_type -> orchestrator.v1.StartDeviceRequest + 103, // 94: orchestrator.v1.PluginAuthService.PollDevice:input_type -> orchestrator.v1.PollDeviceRequest + 105, // 95: orchestrator.v1.PluginAuthService.ApproveDevice:input_type -> orchestrator.v1.ApproveDeviceRequest + 107, // 96: orchestrator.v1.PluginAuthService.DenyDevice:input_type -> orchestrator.v1.DenyDeviceRequest + 109, // 97: orchestrator.v1.PluginAuthService.GetDeviceStatus:input_type -> orchestrator.v1.GetDeviceStatusRequest + 111, // 98: orchestrator.v1.PluginAuthService.Whoami:input_type -> orchestrator.v1.WhoamiRequest + 114, // 99: orchestrator.v1.PluginAuthService.ListMyAccountsForCLI:input_type -> orchestrator.v1.ListMyAccountsForCLIRequest + 8, // 100: orchestrator.v1.PluginScopeService.CreateScope:output_type -> orchestrator.v1.CreateScopeResponse + 10, // 101: orchestrator.v1.PluginScopeService.ListMyScopes:output_type -> orchestrator.v1.ListMyScopesResponse + 12, // 102: orchestrator.v1.PluginScopeService.GetScope:output_type -> orchestrator.v1.GetScopeResponse + 14, // 103: orchestrator.v1.PluginScopeService.ListMyPlugins:output_type -> orchestrator.v1.ListMyPluginsResponse + 16, // 104: orchestrator.v1.PluginRegistryService.CreatePlugin:output_type -> orchestrator.v1.CreatePluginResponse + 18, // 105: orchestrator.v1.PluginRegistryService.GetPlugin:output_type -> orchestrator.v1.GetPluginResponse + 20, // 106: orchestrator.v1.PluginRegistryService.ListPlugins:output_type -> orchestrator.v1.ListPluginsResponse + 37, // 107: orchestrator.v1.PluginRegistryService.GetVersion:output_type -> orchestrator.v1.GetVersionResponse + 39, // 108: orchestrator.v1.PluginRegistryService.ResolveInstall:output_type -> orchestrator.v1.ResolveInstallResponse + 22, // 109: orchestrator.v1.PluginRegistryService.ListCategories:output_type -> orchestrator.v1.ListCategoriesResponse + 24, // 110: orchestrator.v1.PluginRegistryService.ListTags:output_type -> orchestrator.v1.ListTagsResponse + 46, // 111: orchestrator.v1.PluginRegistryService.SubmitForReview:output_type -> orchestrator.v1.SubmitForReviewResponse + 27, // 112: orchestrator.v1.PluginRegistryService.ListPrivatePlugins:output_type -> orchestrator.v1.ListPrivatePluginsResponse + 30, // 113: orchestrator.v1.PluginRegistryService.DeletePrivatePlugin:output_type -> orchestrator.v1.DeletePrivatePluginResponse + 32, // 114: orchestrator.v1.PluginRegistryService.DeletePrivatePluginVersion:output_type -> orchestrator.v1.DeletePrivatePluginVersionResponse + 34, // 115: orchestrator.v1.PluginRegistryService.ListPrivatePluginInstallSites:output_type -> orchestrator.v1.ListPrivatePluginInstallSitesResponse + 27, // 116: orchestrator.v1.PluginRegistryService.ListPrivatePluginsForInstance:output_type -> orchestrator.v1.ListPrivatePluginsResponse + 39, // 117: orchestrator.v1.PluginRegistryService.ResolveInstallForInstance:output_type -> orchestrator.v1.ResolveInstallResponse + 43, // 118: orchestrator.v1.PluginRegistryService.ConfirmPluginInstallForInstance:output_type -> orchestrator.v1.ConfirmPluginInstallForInstanceResponse + 48, // 119: orchestrator.v1.PluginModerationService.ListPendingReviews:output_type -> orchestrator.v1.ListPendingReviewsResponse + 50, // 120: orchestrator.v1.PluginModerationService.ApproveSubmission:output_type -> orchestrator.v1.ApproveSubmissionResponse + 52, // 121: orchestrator.v1.PluginModerationService.RejectSubmission:output_type -> orchestrator.v1.RejectSubmissionResponse + 54, // 122: orchestrator.v1.PluginModerationService.RequestChanges:output_type -> orchestrator.v1.RequestChangesResponse + 56, // 123: orchestrator.v1.PluginModerationService.UnpublishPlugin:output_type -> orchestrator.v1.UnpublishPluginResponse + 58, // 124: orchestrator.v1.PluginModerationService.TakedownPlugin:output_type -> orchestrator.v1.TakedownPluginResponse + 60, // 125: orchestrator.v1.PluginModerationService.RestorePlugin:output_type -> orchestrator.v1.RestorePluginResponse + 62, // 126: orchestrator.v1.PluginModerationService.YankVersion:output_type -> orchestrator.v1.YankVersionResponse + 64, // 127: orchestrator.v1.PluginModerationService.DeletePublicPlugin:output_type -> orchestrator.v1.DeletePublicPluginResponse + 94, // 128: orchestrator.v1.PluginModerationService.ListFlaggedReviews:output_type -> orchestrator.v1.ListFlaggedReviewsResponse + 96, // 129: orchestrator.v1.PluginModerationService.SoftDeleteReview:output_type -> orchestrator.v1.SoftDeleteReviewResponse + 98, // 130: orchestrator.v1.PluginModerationService.SoftDeleteReply:output_type -> orchestrator.v1.SoftDeleteReplyResponse + 117, // 131: orchestrator.v1.PluginModerationService.CreateCategory:output_type -> orchestrator.v1.CreateCategoryResponse + 119, // 132: orchestrator.v1.PluginModerationService.UpdateCategory:output_type -> orchestrator.v1.UpdateCategoryResponse + 121, // 133: orchestrator.v1.PluginModerationService.DeleteCategory:output_type -> orchestrator.v1.DeleteCategoryResponse + 66, // 134: orchestrator.v1.PluginGalleryService.ListScreenshots:output_type -> orchestrator.v1.ListScreenshotsResponse + 68, // 135: orchestrator.v1.PluginGalleryService.UploadScreenshot:output_type -> orchestrator.v1.UploadScreenshotResponse + 70, // 136: orchestrator.v1.PluginGalleryService.DeleteScreenshot:output_type -> orchestrator.v1.DeleteScreenshotResponse + 72, // 137: orchestrator.v1.PluginGalleryService.ReorderScreenshots:output_type -> orchestrator.v1.ReorderScreenshotsResponse + 74, // 138: orchestrator.v1.PluginGalleryService.SetFeaturedScreenshot:output_type -> orchestrator.v1.SetFeaturedScreenshotResponse + 79, // 139: orchestrator.v1.PluginReviewService.ListReviews:output_type -> orchestrator.v1.ListReviewsResponse + 81, // 140: orchestrator.v1.PluginReviewService.GetMyReview:output_type -> orchestrator.v1.GetMyReviewResponse + 83, // 141: orchestrator.v1.PluginReviewService.UpsertReview:output_type -> orchestrator.v1.UpsertReviewResponse + 85, // 142: orchestrator.v1.PluginReviewService.DeleteReview:output_type -> orchestrator.v1.DeleteReviewResponse + 87, // 143: orchestrator.v1.PluginReviewService.ReplyToReview:output_type -> orchestrator.v1.ReplyToReviewResponse + 89, // 144: orchestrator.v1.PluginReviewService.DeleteReply:output_type -> orchestrator.v1.DeleteReplyResponse + 91, // 145: orchestrator.v1.PluginReviewService.FlagReview:output_type -> orchestrator.v1.FlagReviewResponse + 100, // 146: orchestrator.v1.PluginPublishService.PublishVersion:output_type -> orchestrator.v1.PublishVersionResponse + 102, // 147: orchestrator.v1.PluginAuthService.StartDevice:output_type -> orchestrator.v1.StartDeviceResponse + 104, // 148: orchestrator.v1.PluginAuthService.PollDevice:output_type -> orchestrator.v1.PollDeviceResponse + 106, // 149: orchestrator.v1.PluginAuthService.ApproveDevice:output_type -> orchestrator.v1.ApproveDeviceResponse + 108, // 150: orchestrator.v1.PluginAuthService.DenyDevice:output_type -> orchestrator.v1.DenyDeviceResponse + 110, // 151: orchestrator.v1.PluginAuthService.GetDeviceStatus:output_type -> orchestrator.v1.GetDeviceStatusResponse + 112, // 152: orchestrator.v1.PluginAuthService.Whoami:output_type -> orchestrator.v1.WhoamiResponse + 115, // 153: orchestrator.v1.PluginAuthService.ListMyAccountsForCLI:output_type -> orchestrator.v1.ListMyAccountsForCLIResponse + 100, // [100:154] is the sub-list for method output_type + 46, // [46:100] is the sub-list for method input_type + 46, // [46:46] is the sub-list for extension type_name + 46, // [46:46] is the sub-list for extension extendee + 0, // [0:46] is the sub-list for field type_name } func init() { file_orchestrator_v1_plugin_registry_proto_init() } @@ -6691,7 +7795,7 @@ func file_orchestrator_v1_plugin_registry_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_orchestrator_v1_plugin_registry_proto_rawDesc), len(file_orchestrator_v1_plugin_registry_proto_rawDesc)), NumEnums: 1, - NumMessages: 105, + NumMessages: 123, NumExtensions: 0, NumServices: 7, }, diff --git a/proto/orchestrator/v1/plugin_registry.proto b/proto/orchestrator/v1/plugin_registry.proto index ba70b5c..35f373d 100644 --- a/proto/orchestrator/v1/plugin_registry.proto +++ b/proto/orchestrator/v1/plugin_registry.proto @@ -39,6 +39,11 @@ service PluginRegistryService { // required (the calling instance, not a user, is the trust unit). rpc ListPrivatePluginsForInstance(ListPrivatePluginsForInstanceRequest) returns (ListPrivatePluginsResponse); rpc ResolveInstallForInstance(ResolveInstallForInstanceRequest) returns (ResolveInstallResponse); + rpc BeginPluginInstallForInstance(BeginPluginInstallForInstanceRequest) returns (ResolveInstallResponse); + rpc CancelPluginInstallForInstance(CancelPluginInstallForInstanceRequest) returns (CancelPluginInstallForInstanceResponse); + rpc AdoptPluginInstallForInstance(AdoptPluginInstallForInstanceRequest) returns (AdoptPluginInstallForInstanceResponse); + rpc ConfirmPluginInstallForInstance(ConfirmPluginInstallForInstanceRequest) returns (ConfirmPluginInstallForInstanceResponse); + rpc ConfirmPluginUninstallForInstance(ConfirmPluginUninstallForInstanceRequest) returns (ConfirmPluginUninstallForInstanceResponse); } // PluginModerationService is the superadmin-only side: lists pending submissions @@ -50,11 +55,36 @@ service PluginModerationService { rpc RejectSubmission(RejectSubmissionRequest) returns (RejectSubmissionResponse); rpc RequestChanges(RequestChangesRequest) returns (RequestChangesResponse); + // Post-publication lifecycle control (WO-057). These act on plugins that are + // already public (or under_review), giving operators the ability to pull a + // plugin back out of the catalog after it shipped: + // - UnpublishPlugin: public -> under_review. Stops new installs, leaves + // existing installs untouched. Reversible via re-moderation. + // - TakedownPlugin: public|under_review -> taken_down. For malware. The + // instance sweep that force-uninstalls it everywhere is a separate flow + // (WO-059); this RPC only moves catalog state. + // - RestorePlugin: taken_down -> under_review (operator re-approves; not + // auto-republished). + // - YankVersion: marks a single version unusable without touching siblings. + // - DeletePublicPlugin: superadmin hard-delete incl. archive blobs. + rpc UnpublishPlugin(UnpublishPluginRequest) returns (UnpublishPluginResponse); + rpc TakedownPlugin(TakedownPluginRequest) returns (TakedownPluginResponse); + rpc RestorePlugin(RestorePluginRequest) returns (RestorePluginResponse); + rpc YankVersion(YankVersionRequest) returns (YankVersionResponse); + rpc DeletePublicPlugin(DeletePublicPluginRequest) returns (DeletePublicPluginResponse); + // Star-review moderation (ADR 0021). Unrelated to the submission queue // above: these act on user reviews (PluginReviewService), not plugins. rpc ListFlaggedReviews(ListFlaggedReviewsRequest) returns (ListFlaggedReviewsResponse); rpc SoftDeleteReview(SoftDeleteReviewRequest) returns (SoftDeleteReviewResponse); rpc SoftDeleteReply(SoftDeleteReplyRequest) returns (SoftDeleteReplyResponse); + + // Registry category catalog management. Slugs are immutable once created + // because plugin.mod manifests persist them; metadata and ordering remain + // editable. Deletion is rejected while any plugin uses the category. + rpc CreateCategory(CreateCategoryRequest) returns (CreateCategoryResponse); + rpc UpdateCategory(UpdateCategoryRequest) returns (UpdateCategoryResponse); + rpc DeleteCategory(DeleteCategoryRequest) returns (DeleteCategoryResponse); } // PluginGalleryService manages a plugin's screenshot gallery. Reads are @@ -180,6 +210,7 @@ message Category { string display_name = 2; string description = 3; int32 sort_order = 4; + int32 plugin_count = 5; } message Version { @@ -355,6 +386,21 @@ message ResolveInstallRequest { // resolves (account_id, name) and verifies the caller's account // membership. Ignored for public scopes. string active_account_id = 4; + // When latest_compatible is true the registry chooses the newest + // non-yanked version that exactly matches host_abi_version and whose + // plugin_sdk constraint accepts host_sdk_version and, for an admin bundle, + // whose admin_api constraint accepts host_api_version. Host contract fields + // and current_version are required unless allow_initial_version is set; the + // registry fails closed when it cannot prove compatibility. + string host_sdk_version = 5; + uint32 host_abi_version = 6; + bool latest_compatible = 7; + string current_version = 8; + string host_api_version = 9; + // allow_initial_version is reserved for authenticated delivery migrations + // whose legacy row has no semantic version. It selects the highest stable, + // compatible release without inventing a 0.x major. + bool allow_initial_version = 10; } message ResolveInstallResponse { string version_id = 1; @@ -372,6 +418,13 @@ message ResolveInstallResponse { // for a legacy source archive. The installing instance rejects an artifact // whose abi_version its loader cannot run. uint32 abi_version = 12; + string admin_api_constraint = 13; + bool has_admin_ui = 14; + // BeginPluginInstallForInstance issues the operation identity after a + // side-effect-free resolve has selected a target. Plain resolve responses + // leave these fields empty. + string install_operation_token = 15; + uint64 install_operation_generation = 16; } // --- Instance-authenticated request shapes --- @@ -394,8 +447,74 @@ message ResolveInstallForInstanceRequest { // calling account's private plugin (the original behavior); any other value // resolves a PUBLIC plugin in that scope (ADR 0021). string scope_slug = 4; + string host_sdk_version = 5; + uint32 host_abi_version = 6; + bool latest_compatible = 7; + string current_version = 8; + string host_api_version = 9; + bool allow_initial_version = 10; + reserved 11; } +message BeginPluginInstallForInstanceRequest { + string instance_id = 1; + string version_id = 2; + // Generated once by the CMS for this exact local mutation. Retrying with + // the same ID returns the original operation token/generation. + string install_operation_id = 3; +} + +message CancelPluginInstallForInstanceRequest { + string instance_id = 1; + string install_operation_token = 2; + uint64 install_operation_generation = 3; +} + +message CancelPluginInstallForInstanceResponse {} + +message ConfirmPluginInstallForInstanceRequest { + string instance_id = 1; + string scope_slug = 2; + string plugin_name = 3; + string version_id = 4; + string version = 5; + string archive_sha256 = 6; + string install_operation_token = 7; + uint64 install_operation_generation = 8; +} + +message ConfirmPluginInstallForInstanceResponse {} + +message AdoptPluginInstallForInstanceRequest { + string instance_id = 1; + string version_id = 2; + string archive_sha256 = 3; + // install_operation_id is generated once by the CMS and retained until the + // legacy current-install event has been adopted locally and remotely. + string install_operation_id = 4; + string scope_slug = 5; + string plugin_name = 6; + string version = 7; +} + +message AdoptPluginInstallForInstanceResponse { + string install_operation_token = 1; + uint64 install_operation_generation = 2; + string version_id = 3; + string version = 4; + string archive_sha256 = 5; +} + +message ConfirmPluginUninstallForInstanceRequest { + string instance_id = 1; + string scope_slug = 2; + string plugin_name = 3; + string install_operation_token = 4; + uint64 install_operation_generation = 5; +} + +message ConfirmPluginUninstallForInstanceResponse {} + // --- Review / moderation --- message PendingReview { @@ -445,6 +564,37 @@ message RequestChangesRequest { } message RequestChangesResponse {} +// --- Post-publication lifecycle (WO-057) --- + +message UnpublishPluginRequest { + string plugin_id = 1; + string reason = 2; // required — audit trail +} +message UnpublishPluginResponse {} + +message TakedownPluginRequest { + string plugin_id = 1; + string reason = 2; // required — audit trail +} +message TakedownPluginResponse {} + +message RestorePluginRequest { + string plugin_id = 1; +} +message RestorePluginResponse {} + +message YankVersionRequest { + string plugin_id = 1; + string version = 2; // required — the version string to yank (e.g. "0.2.3") + string reason = 3; // required — audit trail +} +message YankVersionResponse {} + +message DeletePublicPluginRequest { + string plugin_id = 1; +} +message DeletePublicPluginResponse {} + // --- Gallery service --- message ListScreenshotsRequest { @@ -650,12 +800,16 @@ message PollDeviceRequest { string device_code = 1; } message PollDeviceResponse { string access_token = 1; string status = 2; + // Account chosen on the device-approval page (empty when none was chosen). + // The CLI uses it as the active account and skips its stdin picker. string account_id = 3; string account_slug = 4; } message ApproveDeviceRequest { string user_code = 1; + // Optional org account the approving user selects for the CLI to act as. + // Must be an account the user is a member of. string account_id = 2; } message ApproveDeviceResponse {} @@ -693,3 +847,24 @@ message ListMyAccountsForCLIRequest {} message ListMyAccountsForCLIResponse { repeated MyAccount accounts = 1; } + +// --- Registry category administration --- + +message CreateCategoryRequest { + string slug = 1; + string display_name = 2; + string description = 3; + int32 sort_order = 4; +} +message CreateCategoryResponse { Category category = 1; } + +message UpdateCategoryRequest { + string slug = 1; + string display_name = 2; + string description = 3; + int32 sort_order = 4; +} +message UpdateCategoryResponse { Category category = 1; } + +message DeleteCategoryRequest { string slug = 1; } +message DeleteCategoryResponse {}