pluginsdk/abi/v1/manifest.pb.go
Alex Dunmow 623ea2e14b feat(manifest): public_routes + sitemap manifest capability (ADR 0026)
Plugins declare site-root path claims (exact or prefix) and a sitemap
contribution flag in plugin.mod; the packer validates and stamps them
into PluginManifest. Validation rejects reserved prefixes (/admin,
/api/plugins, /ws), traversal, duplicates, and prefix claims that cover
a reserved prefix.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-12 02:41:31 +08:00

1630 lines
54 KiB
Go

// manifest.proto — the static plugin manifest (WO-WZ-001).
//
// PluginManifest is the wire form of everything that is *static data* in
// core/plugin/registration.go (PluginRegistration). It is produced once at
// publish time by calling the guest's DESCRIBE hook and stored as manifest.pb
// inside the .bnp artifact; the CMS loader reads it without instantiating the
// wasm module.
//
// Function-valued registration fields cannot cross the wire; they map to
// either a hook (Load/Unload/JobHandlers/MediaHooks/HTTPHandler), a boolean
// presence flag here, or an artifact directory (Assets → assets/,
// Schemas → schemas/, Migrations → migrations/). See core/docs/wasm-abi.md
// for the full field-by-field mapping.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc (unknown)
// source: v1/manifest.proto
package abiv1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// PluginManifest mirrors the static surface of plugin.PluginRegistration.
type PluginManifest struct {
state protoimpl.MessageState `protogen:"open.v1"`
// ABI major version the plugin was built against. The host rejects
// manifests whose major version it does not support.
AbiVersion uint32 `protobuf:"varint,1,opt,name=abi_version,json=abiVersion,proto3" json:"abi_version,omitempty"`
// PluginRegistration.Name / .Version.
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
// PluginRegistration.Dependencies.
Dependencies []*Dependency `protobuf:"bytes,4,rep,name=dependencies,proto3" json:"dependencies,omitempty"`
// Blocks registered via BlockRegistry.Register (captured by DESCRIBE).
Blocks []*BlockMeta `protobuf:"bytes,5,rep,name=blocks,proto3" json:"blocks,omitempty"`
// Blocks registered via BlockRegistry.RegisterTemplateOverride[WithSource].
BlockTemplateOverrides []*BlockTemplateOverride `protobuf:"bytes,6,rep,name=block_template_overrides,json=blockTemplateOverrides,proto3" json:"block_template_overrides,omitempty"`
// Templates registered via TemplateRegistry (captured by DESCRIBE).
TemplateKeys []string `protobuf:"bytes,7,rep,name=template_keys,json=templateKeys,proto3" json:"template_keys,omitempty"` // TemplateRegistry.Register
SystemTemplates []*SystemTemplateMeta `protobuf:"bytes,8,rep,name=system_templates,json=systemTemplates,proto3" json:"system_templates,omitempty"` // RegisterSystemTemplate
PageTemplates []*PageTemplateMeta `protobuf:"bytes,9,rep,name=page_templates,json=pageTemplates,proto3" json:"page_templates,omitempty"` // RegisterPageTemplate
EmailWrapperSystemKeys []string `protobuf:"bytes,10,rep,name=email_wrapper_system_keys,json=emailWrapperSystemKeys,proto3" json:"email_wrapper_system_keys,omitempty"` // RegisterEmailWrapper
// PluginRegistration.AdminPages.
AdminPages []*AdminPage `protobuf:"bytes,11,rep,name=admin_pages,json=adminPages,proto3" json:"admin_pages,omitempty"`
// PluginRegistration.SettingsSchema / .ThemePresets / .BundledFonts (JSON).
SettingsSchema []byte `protobuf:"bytes,12,opt,name=settings_schema,json=settingsSchema,proto3" json:"settings_schema,omitempty"`
ThemePresets []byte `protobuf:"bytes,13,opt,name=theme_presets,json=themePresets,proto3" json:"theme_presets,omitempty"`
BundledFonts []byte `protobuf:"bytes,14,opt,name=bundled_fonts,json=bundledFonts,proto3" json:"bundled_fonts,omitempty"`
// PluginRegistration.MasterPages.
MasterPages []*MasterPageDefinition `protobuf:"bytes,15,rep,name=master_pages,json=masterPages,proto3" json:"master_pages,omitempty"`
// PluginRegistration.AIActions.
AiActions []*AiAction `protobuf:"bytes,16,rep,name=ai_actions,json=aiActions,proto3" json:"ai_actions,omitempty"`
// RBAC roles for the plugin's own Connect services, merged from
// ServiceRegistration (full method name → role, e.g.
// "/symposium.v1.ForumService/CreateThread" → "admin").
RbacMethodRoles map[string]string `protobuf:"bytes,17,rep,name=rbac_method_roles,json=rbacMethodRoles,proto3" json:"rbac_method_roles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// PluginRegistration.CSSManifest.
CssManifest *CssManifest `protobuf:"bytes,18,opt,name=css_manifest,json=cssManifest,proto3" json:"css_manifest,omitempty"`
// PluginRegistration.RequiredIconPacks.
RequiredIconPacks []string `protobuf:"bytes,19,rep,name=required_icon_packs,json=requiredIconPacks,proto3" json:"required_icon_packs,omitempty"`
// PluginRegistration.DirectoryExtensions (static fields only; the
// panel-section / pin-decorator callbacks are counted so the host knows
// how many guest callbacks exist).
DirectoryExtensions *DirectoryExtensions `protobuf:"bytes,20,opt,name=directory_extensions,json=directoryExtensions,proto3" json:"directory_extensions,omitempty"`
// Job types the plugin handles (keys of PluginRegistration.JobHandlers).
// The host dispatches these via the JOB hook.
JobTypes []string `protobuf:"bytes,21,rep,name=job_types,json=jobTypes,proto3" json:"job_types,omitempty"`
// Content types the plugin registered RAG content fetchers for
// (RAGService.RegisterContentFetcher inverts to a manifest declaration;
// the host calls back via the RAG_FETCH hook).
RagContentFetcherTypes []string `protobuf:"bytes,22,rep,name=rag_content_fetcher_types,json=ragContentFetcherTypes,proto3" json:"rag_content_fetcher_types,omitempty"`
// PluginRegistration.SettingsPanel — Module Federation path of the
// settings panel component ("" when the plugin has none).
SettingsPanel string `protobuf:"bytes,23,opt,name=settings_panel,json=settingsPanel,proto3" json:"settings_panel,omitempty"`
// Presence flags for function-valued registration fields that invert to
// hooks at runtime.
HasHttpHandler bool `protobuf:"varint,24,opt,name=has_http_handler,json=hasHttpHandler,proto3" json:"has_http_handler,omitempty"` // PluginRegistration.HTTPHandler → HANDLE_HTTP
HasLoadHook bool `protobuf:"varint,25,opt,name=has_load_hook,json=hasLoadHook,proto3" json:"has_load_hook,omitempty"` // PluginRegistration.Load → LOAD
HasUnloadHook bool `protobuf:"varint,26,opt,name=has_unload_hook,json=hasUnloadHook,proto3" json:"has_unload_hook,omitempty"` // PluginRegistration.Unload → UNLOAD
HasMediaHooks bool `protobuf:"varint,27,opt,name=has_media_hooks,json=hasMediaHooks,proto3" json:"has_media_hooks,omitempty"` // PluginRegistration.MediaHooks → MEDIA_HOOK
HasProvisioner bool `protobuf:"varint,28,opt,name=has_provisioner,json=hasProvisioner,proto3" json:"has_provisioner,omitempty"` // PluginRegistration.RegisterWithProvisioner
// Core CMS services the plugin mounts with custom RBAC roles
// (CoreServiceBindings.Bind becomes a static declaration; the host
// constructs and mounts the handlers).
CoreServiceBindings []*CoreServiceBinding `protobuf:"bytes,29,rep,name=core_service_bindings,json=coreServiceBindings,proto3" json:"core_service_bindings,omitempty"`
// data_dir requests a persistent per-plugin /data preopen at load. Its
// source of truth is the plugin.mod `data_dir = true` key, which lives
// outside the guest code, so DESCRIBE cannot populate it: the packer
// (`ninja plugin build`) stamps it into the manifest from plugin.mod so
// the loader reads one source. OFF by default.
DataDir bool `protobuf:"varint,30,opt,name=data_dir,json=dataDir,proto3" json:"data_dir,omitempty"`
// Template tags the plugin provides (blocks.RegisterTag). For each name the
// host registers a pongo2 tag that invokes the guest via HOOK_RENDER_TAG.
// Captured by DESCRIBE from the blocks tag registry (Register-time).
DeclaredTags []string `protobuf:"bytes,31,rep,name=declared_tags,json=declaredTags,proto3" json:"declared_tags,omitempty"`
// Template filters the plugin provides (blocks.RegisterFilter). For each
// name the host registers a pongo2 filter that invokes the guest via
// HOOK_APPLY_FILTER. Captured by DESCRIBE from the blocks filter registry.
DeclaredFilters []string `protobuf:"bytes,32,rep,name=declared_filters,json=declaredFilters,proto3" json:"declared_filters,omitempty"`
// codeless marks a declarative artifact with NO plugin.wasm (WO-WZ-020):
// the host runs it entirely — block definitions from the artifact's
// blocks/ dir (blocks.yaml manifest-FS layout), seed data from seed/,
// assets/migrations as usual — and never instantiates a guest. A codeless
// manifest MUST NOT declare any computing hook (http handler, jobs,
// load/unload, RAG fetchers, media hooks, tags/filters, provisioner,
// service bindings, directory callbacks); the packer and the host reader
// both reject the combination. Not produced by DESCRIBE (there is no guest
// to describe): `ninja plugin build` synthesizes the manifest from
// plugin.mod + the artifact's declarative files.
Codeless bool `protobuf:"varint,33,opt,name=codeless,proto3" json:"codeless,omitempty"`
// allowed_hosts declares the egress host patterns the plugin needs for
// http.request (exact hostname or left-anchored multi-label wildcard,
// e.g. "*.cal.com"; https/443 only unless an entry names an explicit
// port). Like data_dir, its source of truth is plugin.mod — the packer
// stamps it — because it lives outside the guest code. The host refuses
// to load the plugin until an admin grants the full declared set
// (ADR 0023, cms repo). Empty means no egress.
AllowedHosts []string `protobuf:"bytes,34,rep,name=allowed_hosts,json=allowedHosts,proto3" json:"allowed_hosts,omitempty"`
// max_response_mb requests a larger per-request http.request response cap
// than the 10 MB default. Rides the same admin grant as allowed_hosts.
// Zero means the default.
MaxResponseMb uint32 `protobuf:"varint,35,opt,name=max_response_mb,json=maxResponseMb,proto3" json:"max_response_mb,omitempty"`
// public_routes declares the site-root paths the plugin serves through its
// HTTP handler (ADR 0026, cms repo): exact paths and path prefixes the host
// mounts at the public site root, dispatching to HOOK_HANDLE_HTTP with the
// full unstripped request path. Like data_dir and allowed_hosts, the source
// of truth is plugin.mod; the packer validates and stamps it. Conflict
// rules are host-side: core routes always win, between plugins the
// first-installed plugin wins, and conflicts are surfaced in the admin UI,
// never silently dropped. Empty means the plugin serves HTTP only under
// /api/plugins/<name>.
PublicRoutes []*PublicRoute `protobuf:"bytes,36,rep,name=public_routes,json=publicRoutes,proto3" json:"public_routes,omitempty"`
// sitemap requests sitemap contribution: when true the host fetches
// entries from the plugin's well-known sitemap endpoint (served by its
// HTTP handler) and merges them into the site sitemap. Requires
// has_http_handler.
Sitemap bool `protobuf:"varint,37,opt,name=sitemap,proto3" json:"sitemap,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PluginManifest) Reset() {
*x = PluginManifest{}
mi := &file_v1_manifest_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PluginManifest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PluginManifest) ProtoMessage() {}
func (x *PluginManifest) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[0]
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 PluginManifest.ProtoReflect.Descriptor instead.
func (*PluginManifest) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{0}
}
func (x *PluginManifest) GetAbiVersion() uint32 {
if x != nil {
return x.AbiVersion
}
return 0
}
func (x *PluginManifest) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *PluginManifest) GetVersion() string {
if x != nil {
return x.Version
}
return ""
}
func (x *PluginManifest) GetDependencies() []*Dependency {
if x != nil {
return x.Dependencies
}
return nil
}
func (x *PluginManifest) GetBlocks() []*BlockMeta {
if x != nil {
return x.Blocks
}
return nil
}
func (x *PluginManifest) GetBlockTemplateOverrides() []*BlockTemplateOverride {
if x != nil {
return x.BlockTemplateOverrides
}
return nil
}
func (x *PluginManifest) GetTemplateKeys() []string {
if x != nil {
return x.TemplateKeys
}
return nil
}
func (x *PluginManifest) GetSystemTemplates() []*SystemTemplateMeta {
if x != nil {
return x.SystemTemplates
}
return nil
}
func (x *PluginManifest) GetPageTemplates() []*PageTemplateMeta {
if x != nil {
return x.PageTemplates
}
return nil
}
func (x *PluginManifest) GetEmailWrapperSystemKeys() []string {
if x != nil {
return x.EmailWrapperSystemKeys
}
return nil
}
func (x *PluginManifest) GetAdminPages() []*AdminPage {
if x != nil {
return x.AdminPages
}
return nil
}
func (x *PluginManifest) GetSettingsSchema() []byte {
if x != nil {
return x.SettingsSchema
}
return nil
}
func (x *PluginManifest) GetThemePresets() []byte {
if x != nil {
return x.ThemePresets
}
return nil
}
func (x *PluginManifest) GetBundledFonts() []byte {
if x != nil {
return x.BundledFonts
}
return nil
}
func (x *PluginManifest) GetMasterPages() []*MasterPageDefinition {
if x != nil {
return x.MasterPages
}
return nil
}
func (x *PluginManifest) GetAiActions() []*AiAction {
if x != nil {
return x.AiActions
}
return nil
}
func (x *PluginManifest) GetRbacMethodRoles() map[string]string {
if x != nil {
return x.RbacMethodRoles
}
return nil
}
func (x *PluginManifest) GetCssManifest() *CssManifest {
if x != nil {
return x.CssManifest
}
return nil
}
func (x *PluginManifest) GetRequiredIconPacks() []string {
if x != nil {
return x.RequiredIconPacks
}
return nil
}
func (x *PluginManifest) GetDirectoryExtensions() *DirectoryExtensions {
if x != nil {
return x.DirectoryExtensions
}
return nil
}
func (x *PluginManifest) GetJobTypes() []string {
if x != nil {
return x.JobTypes
}
return nil
}
func (x *PluginManifest) GetRagContentFetcherTypes() []string {
if x != nil {
return x.RagContentFetcherTypes
}
return nil
}
func (x *PluginManifest) GetSettingsPanel() string {
if x != nil {
return x.SettingsPanel
}
return ""
}
func (x *PluginManifest) GetHasHttpHandler() bool {
if x != nil {
return x.HasHttpHandler
}
return false
}
func (x *PluginManifest) GetHasLoadHook() bool {
if x != nil {
return x.HasLoadHook
}
return false
}
func (x *PluginManifest) GetHasUnloadHook() bool {
if x != nil {
return x.HasUnloadHook
}
return false
}
func (x *PluginManifest) GetHasMediaHooks() bool {
if x != nil {
return x.HasMediaHooks
}
return false
}
func (x *PluginManifest) GetHasProvisioner() bool {
if x != nil {
return x.HasProvisioner
}
return false
}
func (x *PluginManifest) GetCoreServiceBindings() []*CoreServiceBinding {
if x != nil {
return x.CoreServiceBindings
}
return nil
}
func (x *PluginManifest) GetDataDir() bool {
if x != nil {
return x.DataDir
}
return false
}
func (x *PluginManifest) GetDeclaredTags() []string {
if x != nil {
return x.DeclaredTags
}
return nil
}
func (x *PluginManifest) GetDeclaredFilters() []string {
if x != nil {
return x.DeclaredFilters
}
return nil
}
func (x *PluginManifest) GetCodeless() bool {
if x != nil {
return x.Codeless
}
return false
}
func (x *PluginManifest) GetAllowedHosts() []string {
if x != nil {
return x.AllowedHosts
}
return nil
}
func (x *PluginManifest) GetMaxResponseMb() uint32 {
if x != nil {
return x.MaxResponseMb
}
return 0
}
func (x *PluginManifest) GetPublicRoutes() []*PublicRoute {
if x != nil {
return x.PublicRoutes
}
return nil
}
func (x *PluginManifest) GetSitemap() bool {
if x != nil {
return x.Sitemap
}
return false
}
// PublicRoute is one site-root path claim (see PluginManifest.public_routes).
type PublicRoute struct {
state protoimpl.MessageState `protogen:"open.v1"`
// Absolute site-root path, e.g. "/area" or "/api/directory". Validated by
// the packer: must start with "/", no reserved prefixes ("/admin",
// "/api/plugins", "/ws"), no traversal or empty segments.
Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
// When true the claim covers every path under path as well (a path-prefix
// mount); when false only the exact path is claimed.
Prefix bool `protobuf:"varint,2,opt,name=prefix,proto3" json:"prefix,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PublicRoute) Reset() {
*x = PublicRoute{}
mi := &file_v1_manifest_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PublicRoute) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PublicRoute) ProtoMessage() {}
func (x *PublicRoute) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[1]
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 PublicRoute.ProtoReflect.Descriptor instead.
func (*PublicRoute) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{1}
}
func (x *PublicRoute) GetPath() string {
if x != nil {
return x.Path
}
return ""
}
func (x *PublicRoute) GetPrefix() bool {
if x != nil {
return x.Prefix
}
return false
}
// Dependency mirrors plugin.Dependency.
type Dependency struct {
state protoimpl.MessageState `protogen:"open.v1"`
Plugin string `protobuf:"bytes,1,opt,name=plugin,proto3" json:"plugin,omitempty"`
MinVersion string `protobuf:"bytes,2,opt,name=min_version,json=minVersion,proto3" json:"min_version,omitempty"`
Required bool `protobuf:"varint,3,opt,name=required,proto3" json:"required,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Dependency) Reset() {
*x = Dependency{}
mi := &file_v1_manifest_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Dependency) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Dependency) ProtoMessage() {}
func (x *Dependency) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[2]
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 Dependency.ProtoReflect.Descriptor instead.
func (*Dependency) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{2}
}
func (x *Dependency) GetPlugin() string {
if x != nil {
return x.Plugin
}
return ""
}
func (x *Dependency) GetMinVersion() string {
if x != nil {
return x.MinVersion
}
return ""
}
func (x *Dependency) GetRequired() bool {
if x != nil {
return x.Required
}
return false
}
// BlockMeta mirrors blocks.BlockMeta. Source is omitted: the host assigns it
// from the manifest's plugin name at load time.
type BlockMeta struct {
state protoimpl.MessageState `protogen:"open.v1"`
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
// blocks.BlockCategory string ("content", "layout", "navigation", "blog",
// "theme").
Category string `protobuf:"bytes,4,opt,name=category,proto3" json:"category,omitempty"`
HasInternalSlot bool `protobuf:"varint,5,opt,name=has_internal_slot,json=hasInternalSlot,proto3" json:"has_internal_slot,omitempty"`
Hidden bool `protobuf:"varint,6,opt,name=hidden,proto3" json:"hidden,omitempty"`
EditorJs string `protobuf:"bytes,7,opt,name=editor_js,json=editorJs,proto3" json:"editor_js,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *BlockMeta) Reset() {
*x = BlockMeta{}
mi := &file_v1_manifest_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *BlockMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BlockMeta) ProtoMessage() {}
func (x *BlockMeta) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BlockMeta.ProtoReflect.Descriptor instead.
func (*BlockMeta) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{3}
}
func (x *BlockMeta) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *BlockMeta) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *BlockMeta) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *BlockMeta) GetCategory() string {
if x != nil {
return x.Category
}
return ""
}
func (x *BlockMeta) GetHasInternalSlot() bool {
if x != nil {
return x.HasInternalSlot
}
return false
}
func (x *BlockMeta) GetHidden() bool {
if x != nil {
return x.Hidden
}
return false
}
func (x *BlockMeta) GetEditorJs() string {
if x != nil {
return x.EditorJs
}
return ""
}
// BlockTemplateOverride captures BlockRegistry.RegisterTemplateOverride and
// RegisterTemplateOverrideWithSource registrations.
type BlockTemplateOverride struct {
state protoimpl.MessageState `protogen:"open.v1"`
TemplateKey string `protobuf:"bytes,1,opt,name=template_key,json=templateKey,proto3" json:"template_key,omitempty"`
BlockKey string `protobuf:"bytes,2,opt,name=block_key,json=blockKey,proto3" json:"block_key,omitempty"`
// Override source label; empty for plain RegisterTemplateOverride.
Source string `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *BlockTemplateOverride) Reset() {
*x = BlockTemplateOverride{}
mi := &file_v1_manifest_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *BlockTemplateOverride) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BlockTemplateOverride) ProtoMessage() {}
func (x *BlockTemplateOverride) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BlockTemplateOverride.ProtoReflect.Descriptor instead.
func (*BlockTemplateOverride) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{4}
}
func (x *BlockTemplateOverride) GetTemplateKey() string {
if x != nil {
return x.TemplateKey
}
return ""
}
func (x *BlockTemplateOverride) GetBlockKey() string {
if x != nil {
return x.BlockKey
}
return ""
}
func (x *BlockTemplateOverride) GetSource() string {
if x != nil {
return x.Source
}
return ""
}
// SystemTemplateMeta mirrors templates.SystemTemplateMeta.
type SystemTemplateMeta struct {
state protoimpl.MessageState `protogen:"open.v1"`
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *SystemTemplateMeta) Reset() {
*x = SystemTemplateMeta{}
mi := &file_v1_manifest_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *SystemTemplateMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SystemTemplateMeta) ProtoMessage() {}
func (x *SystemTemplateMeta) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SystemTemplateMeta.ProtoReflect.Descriptor instead.
func (*SystemTemplateMeta) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{5}
}
func (x *SystemTemplateMeta) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *SystemTemplateMeta) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *SystemTemplateMeta) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
// PageTemplateMeta mirrors templates.PageTemplateMeta plus the system
// template it was registered under.
type PageTemplateMeta struct {
state protoimpl.MessageState `protogen:"open.v1"`
SystemKey string `protobuf:"bytes,1,opt,name=system_key,json=systemKey,proto3" json:"system_key,omitempty"`
Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
Slots []string `protobuf:"bytes,5,rep,name=slots,proto3" json:"slots,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PageTemplateMeta) Reset() {
*x = PageTemplateMeta{}
mi := &file_v1_manifest_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PageTemplateMeta) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PageTemplateMeta) ProtoMessage() {}
func (x *PageTemplateMeta) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[6]
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 PageTemplateMeta.ProtoReflect.Descriptor instead.
func (*PageTemplateMeta) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{6}
}
func (x *PageTemplateMeta) GetSystemKey() string {
if x != nil {
return x.SystemKey
}
return ""
}
func (x *PageTemplateMeta) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *PageTemplateMeta) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *PageTemplateMeta) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *PageTemplateMeta) GetSlots() []string {
if x != nil {
return x.Slots
}
return nil
}
// AdminPage mirrors plugin.AdminPage.
type AdminPage struct {
state protoimpl.MessageState `protogen:"open.v1"`
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
Icon string `protobuf:"bytes,3,opt,name=icon,proto3" json:"icon,omitempty"`
Route string `protobuf:"bytes,4,opt,name=route,proto3" json:"route,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *AdminPage) Reset() {
*x = AdminPage{}
mi := &file_v1_manifest_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AdminPage) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AdminPage) ProtoMessage() {}
func (x *AdminPage) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[7]
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 AdminPage.ProtoReflect.Descriptor instead.
func (*AdminPage) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{7}
}
func (x *AdminPage) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *AdminPage) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *AdminPage) GetIcon() string {
if x != nil {
return x.Icon
}
return ""
}
func (x *AdminPage) GetRoute() string {
if x != nil {
return x.Route
}
return ""
}
// AiAction mirrors plugin.AIAction.
type AiAction struct {
state protoimpl.MessageState `protogen:"open.v1"`
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
DefaultProvider string `protobuf:"bytes,4,opt,name=default_provider,json=defaultProvider,proto3" json:"default_provider,omitempty"`
DefaultModel string `protobuf:"bytes,5,opt,name=default_model,json=defaultModel,proto3" json:"default_model,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *AiAction) Reset() {
*x = AiAction{}
mi := &file_v1_manifest_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AiAction) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AiAction) ProtoMessage() {}
func (x *AiAction) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[8]
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 AiAction.ProtoReflect.Descriptor instead.
func (*AiAction) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{8}
}
func (x *AiAction) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *AiAction) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *AiAction) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *AiAction) GetDefaultProvider() string {
if x != nil {
return x.DefaultProvider
}
return ""
}
func (x *AiAction) GetDefaultModel() string {
if x != nil {
return x.DefaultModel
}
return ""
}
// CssManifest mirrors plugin.CSSManifest.
type CssManifest struct {
state protoimpl.MessageState `protogen:"open.v1"`
NpmPackages map[string]string `protobuf:"bytes,1,rep,name=npm_packages,json=npmPackages,proto3" json:"npm_packages,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
CssDirectives []string `protobuf:"bytes,2,rep,name=css_directives,json=cssDirectives,proto3" json:"css_directives,omitempty"`
InputCssAppend string `protobuf:"bytes,3,opt,name=input_css_append,json=inputCssAppend,proto3" json:"input_css_append,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CssManifest) Reset() {
*x = CssManifest{}
mi := &file_v1_manifest_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CssManifest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CssManifest) ProtoMessage() {}
func (x *CssManifest) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[9]
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 CssManifest.ProtoReflect.Descriptor instead.
func (*CssManifest) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{9}
}
func (x *CssManifest) GetNpmPackages() map[string]string {
if x != nil {
return x.NpmPackages
}
return nil
}
func (x *CssManifest) GetCssDirectives() []string {
if x != nil {
return x.CssDirectives
}
return nil
}
func (x *CssManifest) GetInputCssAppend() string {
if x != nil {
return x.InputCssAppend
}
return ""
}
// DirectoryExtensions mirrors the static fields of plugin.DirectoryExtensions.
type DirectoryExtensions struct {
state protoimpl.MessageState `protogen:"open.v1"`
BooleanFilterFields []string `protobuf:"bytes,1,rep,name=boolean_filter_fields,json=booleanFilterFields,proto3" json:"boolean_filter_fields,omitempty"`
SelectFilterFields []string `protobuf:"bytes,2,rep,name=select_filter_fields,json=selectFilterFields,proto3" json:"select_filter_fields,omitempty"`
BadgeLabels map[string]*BadgeLabel `protobuf:"bytes,3,rep,name=badge_labels,json=badgeLabels,proto3" json:"badge_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// Counts of the callback slices (PanelSections / PinDecorators) so the host
// knows how many guest callbacks the plugin registered. Their invocation
// hook is a runtime-WO concern.
PanelSectionCount uint32 `protobuf:"varint,4,opt,name=panel_section_count,json=panelSectionCount,proto3" json:"panel_section_count,omitempty"`
PinDecoratorCount uint32 `protobuf:"varint,5,opt,name=pin_decorator_count,json=pinDecoratorCount,proto3" json:"pin_decorator_count,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *DirectoryExtensions) Reset() {
*x = DirectoryExtensions{}
mi := &file_v1_manifest_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *DirectoryExtensions) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*DirectoryExtensions) ProtoMessage() {}
func (x *DirectoryExtensions) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[10]
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 DirectoryExtensions.ProtoReflect.Descriptor instead.
func (*DirectoryExtensions) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{10}
}
func (x *DirectoryExtensions) GetBooleanFilterFields() []string {
if x != nil {
return x.BooleanFilterFields
}
return nil
}
func (x *DirectoryExtensions) GetSelectFilterFields() []string {
if x != nil {
return x.SelectFilterFields
}
return nil
}
func (x *DirectoryExtensions) GetBadgeLabels() map[string]*BadgeLabel {
if x != nil {
return x.BadgeLabels
}
return nil
}
func (x *DirectoryExtensions) GetPanelSectionCount() uint32 {
if x != nil {
return x.PanelSectionCount
}
return 0
}
func (x *DirectoryExtensions) GetPinDecoratorCount() uint32 {
if x != nil {
return x.PinDecoratorCount
}
return 0
}
// BadgeLabel mirrors the [2]string value of DirectoryExtensions.BadgeLabels.
type BadgeLabel struct {
state protoimpl.MessageState `protogen:"open.v1"`
Positive string `protobuf:"bytes,1,opt,name=positive,proto3" json:"positive,omitempty"`
Negative string `protobuf:"bytes,2,opt,name=negative,proto3" json:"negative,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *BadgeLabel) Reset() {
*x = BadgeLabel{}
mi := &file_v1_manifest_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *BadgeLabel) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*BadgeLabel) ProtoMessage() {}
func (x *BadgeLabel) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use BadgeLabel.ProtoReflect.Descriptor instead.
func (*BadgeLabel) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{11}
}
func (x *BadgeLabel) GetPositive() string {
if x != nil {
return x.Positive
}
return ""
}
func (x *BadgeLabel) GetNegative() string {
if x != nil {
return x.Negative
}
return ""
}
// MasterPageDefinition mirrors plugin.MasterPageDefinition.
type MasterPageDefinition struct {
state protoimpl.MessageState `protogen:"open.v1"`
Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
PageTemplates []string `protobuf:"bytes,3,rep,name=page_templates,json=pageTemplates,proto3" json:"page_templates,omitempty"`
Blocks []*MasterPageBlock `protobuf:"bytes,4,rep,name=blocks,proto3" json:"blocks,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *MasterPageDefinition) Reset() {
*x = MasterPageDefinition{}
mi := &file_v1_manifest_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MasterPageDefinition) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MasterPageDefinition) ProtoMessage() {}
func (x *MasterPageDefinition) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MasterPageDefinition.ProtoReflect.Descriptor instead.
func (*MasterPageDefinition) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{12}
}
func (x *MasterPageDefinition) GetKey() string {
if x != nil {
return x.Key
}
return ""
}
func (x *MasterPageDefinition) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *MasterPageDefinition) GetPageTemplates() []string {
if x != nil {
return x.PageTemplates
}
return nil
}
func (x *MasterPageDefinition) GetBlocks() []*MasterPageBlock {
if x != nil {
return x.Blocks
}
return nil
}
// MasterPageBlock mirrors plugin.MasterPageBlock.
type MasterPageBlock struct {
state protoimpl.MessageState `protogen:"open.v1"`
BlockKey string `protobuf:"bytes,1,opt,name=block_key,json=blockKey,proto3" json:"block_key,omitempty"`
Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"`
// JSON encoding of the block's content map.
ContentJson []byte `protobuf:"bytes,3,opt,name=content_json,json=contentJson,proto3" json:"content_json,omitempty"`
HtmlContent *string `protobuf:"bytes,4,opt,name=html_content,json=htmlContent,proto3,oneof" json:"html_content,omitempty"`
Slot string `protobuf:"bytes,5,opt,name=slot,proto3" json:"slot,omitempty"`
SortOrder int32 `protobuf:"varint,6,opt,name=sort_order,json=sortOrder,proto3" json:"sort_order,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *MasterPageBlock) Reset() {
*x = MasterPageBlock{}
mi := &file_v1_manifest_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MasterPageBlock) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MasterPageBlock) ProtoMessage() {}
func (x *MasterPageBlock) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MasterPageBlock.ProtoReflect.Descriptor instead.
func (*MasterPageBlock) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{13}
}
func (x *MasterPageBlock) GetBlockKey() string {
if x != nil {
return x.BlockKey
}
return ""
}
func (x *MasterPageBlock) GetTitle() string {
if x != nil {
return x.Title
}
return ""
}
func (x *MasterPageBlock) GetContentJson() []byte {
if x != nil {
return x.ContentJson
}
return nil
}
func (x *MasterPageBlock) GetHtmlContent() string {
if x != nil && x.HtmlContent != nil {
return *x.HtmlContent
}
return ""
}
func (x *MasterPageBlock) GetSlot() string {
if x != nil {
return x.Slot
}
return ""
}
func (x *MasterPageBlock) GetSortOrder() int32 {
if x != nil {
return x.SortOrder
}
return 0
}
// CoreServiceBinding mirrors a plugin.CoreServiceBindings.Bind call: mount
// the named core-provided Connect service with these RBAC roles.
type CoreServiceBinding struct {
state protoimpl.MessageState `protogen:"open.v1"`
ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"`
MethodRoles map[string]string `protobuf:"bytes,2,rep,name=method_roles,json=methodRoles,proto3" json:"method_roles,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *CoreServiceBinding) Reset() {
*x = CoreServiceBinding{}
mi := &file_v1_manifest_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *CoreServiceBinding) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CoreServiceBinding) ProtoMessage() {}
func (x *CoreServiceBinding) ProtoReflect() protoreflect.Message {
mi := &file_v1_manifest_proto_msgTypes[14]
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 CoreServiceBinding.ProtoReflect.Descriptor instead.
func (*CoreServiceBinding) Descriptor() ([]byte, []int) {
return file_v1_manifest_proto_rawDescGZIP(), []int{14}
}
func (x *CoreServiceBinding) GetServiceName() string {
if x != nil {
return x.ServiceName
}
return ""
}
func (x *CoreServiceBinding) GetMethodRoles() map[string]string {
if x != nil {
return x.MethodRoles
}
return nil
}
var File_v1_manifest_proto protoreflect.FileDescriptor
const file_v1_manifest_proto_rawDesc = "" +
"\n" +
"\x11v1/manifest.proto\x12\x06abi.v1\"\xaf\x0e\n" +
"\x0ePluginManifest\x12\x1f\n" +
"\vabi_version\x18\x01 \x01(\rR\n" +
"abiVersion\x12\x12\n" +
"\x04name\x18\x02 \x01(\tR\x04name\x12\x18\n" +
"\aversion\x18\x03 \x01(\tR\aversion\x126\n" +
"\fdependencies\x18\x04 \x03(\v2\x12.abi.v1.DependencyR\fdependencies\x12)\n" +
"\x06blocks\x18\x05 \x03(\v2\x11.abi.v1.BlockMetaR\x06blocks\x12W\n" +
"\x18block_template_overrides\x18\x06 \x03(\v2\x1d.abi.v1.BlockTemplateOverrideR\x16blockTemplateOverrides\x12#\n" +
"\rtemplate_keys\x18\a \x03(\tR\ftemplateKeys\x12E\n" +
"\x10system_templates\x18\b \x03(\v2\x1a.abi.v1.SystemTemplateMetaR\x0fsystemTemplates\x12?\n" +
"\x0epage_templates\x18\t \x03(\v2\x18.abi.v1.PageTemplateMetaR\rpageTemplates\x129\n" +
"\x19email_wrapper_system_keys\x18\n" +
" \x03(\tR\x16emailWrapperSystemKeys\x122\n" +
"\vadmin_pages\x18\v \x03(\v2\x11.abi.v1.AdminPageR\n" +
"adminPages\x12'\n" +
"\x0fsettings_schema\x18\f \x01(\fR\x0esettingsSchema\x12#\n" +
"\rtheme_presets\x18\r \x01(\fR\fthemePresets\x12#\n" +
"\rbundled_fonts\x18\x0e \x01(\fR\fbundledFonts\x12?\n" +
"\fmaster_pages\x18\x0f \x03(\v2\x1c.abi.v1.MasterPageDefinitionR\vmasterPages\x12/\n" +
"\n" +
"ai_actions\x18\x10 \x03(\v2\x10.abi.v1.AiActionR\taiActions\x12W\n" +
"\x11rbac_method_roles\x18\x11 \x03(\v2+.abi.v1.PluginManifest.RbacMethodRolesEntryR\x0frbacMethodRoles\x126\n" +
"\fcss_manifest\x18\x12 \x01(\v2\x13.abi.v1.CssManifestR\vcssManifest\x12.\n" +
"\x13required_icon_packs\x18\x13 \x03(\tR\x11requiredIconPacks\x12N\n" +
"\x14directory_extensions\x18\x14 \x01(\v2\x1b.abi.v1.DirectoryExtensionsR\x13directoryExtensions\x12\x1b\n" +
"\tjob_types\x18\x15 \x03(\tR\bjobTypes\x129\n" +
"\x19rag_content_fetcher_types\x18\x16 \x03(\tR\x16ragContentFetcherTypes\x12%\n" +
"\x0esettings_panel\x18\x17 \x01(\tR\rsettingsPanel\x12(\n" +
"\x10has_http_handler\x18\x18 \x01(\bR\x0ehasHttpHandler\x12\"\n" +
"\rhas_load_hook\x18\x19 \x01(\bR\vhasLoadHook\x12&\n" +
"\x0fhas_unload_hook\x18\x1a \x01(\bR\rhasUnloadHook\x12&\n" +
"\x0fhas_media_hooks\x18\x1b \x01(\bR\rhasMediaHooks\x12'\n" +
"\x0fhas_provisioner\x18\x1c \x01(\bR\x0ehasProvisioner\x12N\n" +
"\x15core_service_bindings\x18\x1d \x03(\v2\x1a.abi.v1.CoreServiceBindingR\x13coreServiceBindings\x12\x19\n" +
"\bdata_dir\x18\x1e \x01(\bR\adataDir\x12#\n" +
"\rdeclared_tags\x18\x1f \x03(\tR\fdeclaredTags\x12)\n" +
"\x10declared_filters\x18 \x03(\tR\x0fdeclaredFilters\x12\x1a\n" +
"\bcodeless\x18! \x01(\bR\bcodeless\x12#\n" +
"\rallowed_hosts\x18\" \x03(\tR\fallowedHosts\x12&\n" +
"\x0fmax_response_mb\x18# \x01(\rR\rmaxResponseMb\x128\n" +
"\rpublic_routes\x18$ \x03(\v2\x13.abi.v1.PublicRouteR\fpublicRoutes\x12\x18\n" +
"\asitemap\x18% \x01(\bR\asitemap\x1aB\n" +
"\x14RbacMethodRolesEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"9\n" +
"\vPublicRoute\x12\x12\n" +
"\x04path\x18\x01 \x01(\tR\x04path\x12\x16\n" +
"\x06prefix\x18\x02 \x01(\bR\x06prefix\"a\n" +
"\n" +
"Dependency\x12\x16\n" +
"\x06plugin\x18\x01 \x01(\tR\x06plugin\x12\x1f\n" +
"\vmin_version\x18\x02 \x01(\tR\n" +
"minVersion\x12\x1a\n" +
"\brequired\x18\x03 \x01(\bR\brequired\"\xd2\x01\n" +
"\tBlockMeta\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
"\vdescription\x18\x03 \x01(\tR\vdescription\x12\x1a\n" +
"\bcategory\x18\x04 \x01(\tR\bcategory\x12*\n" +
"\x11has_internal_slot\x18\x05 \x01(\bR\x0fhasInternalSlot\x12\x16\n" +
"\x06hidden\x18\x06 \x01(\bR\x06hidden\x12\x1b\n" +
"\teditor_js\x18\a \x01(\tR\beditorJs\"o\n" +
"\x15BlockTemplateOverride\x12!\n" +
"\ftemplate_key\x18\x01 \x01(\tR\vtemplateKey\x12\x1b\n" +
"\tblock_key\x18\x02 \x01(\tR\bblockKey\x12\x16\n" +
"\x06source\x18\x03 \x01(\tR\x06source\"^\n" +
"\x12SystemTemplateMeta\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
"\vdescription\x18\x03 \x01(\tR\vdescription\"\x91\x01\n" +
"\x10PageTemplateMeta\x12\x1d\n" +
"\n" +
"system_key\x18\x01 \x01(\tR\tsystemKey\x12\x10\n" +
"\x03key\x18\x02 \x01(\tR\x03key\x12\x14\n" +
"\x05title\x18\x03 \x01(\tR\x05title\x12 \n" +
"\vdescription\x18\x04 \x01(\tR\vdescription\x12\x14\n" +
"\x05slots\x18\x05 \x03(\tR\x05slots\"]\n" +
"\tAdminPage\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05title\x18\x02 \x01(\tR\x05title\x12\x12\n" +
"\x04icon\x18\x03 \x01(\tR\x04icon\x12\x14\n" +
"\x05route\x18\x04 \x01(\tR\x05route\"\xa4\x01\n" +
"\bAiAction\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05title\x18\x02 \x01(\tR\x05title\x12 \n" +
"\vdescription\x18\x03 \x01(\tR\vdescription\x12)\n" +
"\x10default_provider\x18\x04 \x01(\tR\x0fdefaultProvider\x12#\n" +
"\rdefault_model\x18\x05 \x01(\tR\fdefaultModel\"\xe7\x01\n" +
"\vCssManifest\x12G\n" +
"\fnpm_packages\x18\x01 \x03(\v2$.abi.v1.CssManifest.NpmPackagesEntryR\vnpmPackages\x12%\n" +
"\x0ecss_directives\x18\x02 \x03(\tR\rcssDirectives\x12(\n" +
"\x10input_css_append\x18\x03 \x01(\tR\x0einputCssAppend\x1a>\n" +
"\x10NpmPackagesEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x80\x03\n" +
"\x13DirectoryExtensions\x122\n" +
"\x15boolean_filter_fields\x18\x01 \x03(\tR\x13booleanFilterFields\x120\n" +
"\x14select_filter_fields\x18\x02 \x03(\tR\x12selectFilterFields\x12O\n" +
"\fbadge_labels\x18\x03 \x03(\v2,.abi.v1.DirectoryExtensions.BadgeLabelsEntryR\vbadgeLabels\x12.\n" +
"\x13panel_section_count\x18\x04 \x01(\rR\x11panelSectionCount\x12.\n" +
"\x13pin_decorator_count\x18\x05 \x01(\rR\x11pinDecoratorCount\x1aR\n" +
"\x10BadgeLabelsEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12(\n" +
"\x05value\x18\x02 \x01(\v2\x12.abi.v1.BadgeLabelR\x05value:\x028\x01\"D\n" +
"\n" +
"BadgeLabel\x12\x1a\n" +
"\bpositive\x18\x01 \x01(\tR\bpositive\x12\x1a\n" +
"\bnegative\x18\x02 \x01(\tR\bnegative\"\x96\x01\n" +
"\x14MasterPageDefinition\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05title\x18\x02 \x01(\tR\x05title\x12%\n" +
"\x0epage_templates\x18\x03 \x03(\tR\rpageTemplates\x12/\n" +
"\x06blocks\x18\x04 \x03(\v2\x17.abi.v1.MasterPageBlockR\x06blocks\"\xd3\x01\n" +
"\x0fMasterPageBlock\x12\x1b\n" +
"\tblock_key\x18\x01 \x01(\tR\bblockKey\x12\x14\n" +
"\x05title\x18\x02 \x01(\tR\x05title\x12!\n" +
"\fcontent_json\x18\x03 \x01(\fR\vcontentJson\x12&\n" +
"\fhtml_content\x18\x04 \x01(\tH\x00R\vhtmlContent\x88\x01\x01\x12\x12\n" +
"\x04slot\x18\x05 \x01(\tR\x04slot\x12\x1d\n" +
"\n" +
"sort_order\x18\x06 \x01(\x05R\tsortOrderB\x0f\n" +
"\r_html_content\"\xc7\x01\n" +
"\x12CoreServiceBinding\x12!\n" +
"\fservice_name\x18\x01 \x01(\tR\vserviceName\x12N\n" +
"\fmethod_roles\x18\x02 \x03(\v2+.abi.v1.CoreServiceBinding.MethodRolesEntryR\vmethodRoles\x1a>\n" +
"\x10MethodRolesEntry\x12\x10\n" +
"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B5Z3git.dev.alexdunmow.com/block/pluginsdk/abi/v1;abiv1b\x06proto3"
var (
file_v1_manifest_proto_rawDescOnce sync.Once
file_v1_manifest_proto_rawDescData []byte
)
func file_v1_manifest_proto_rawDescGZIP() []byte {
file_v1_manifest_proto_rawDescOnce.Do(func() {
file_v1_manifest_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_v1_manifest_proto_rawDesc), len(file_v1_manifest_proto_rawDesc)))
})
return file_v1_manifest_proto_rawDescData
}
var file_v1_manifest_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
var file_v1_manifest_proto_goTypes = []any{
(*PluginManifest)(nil), // 0: abi.v1.PluginManifest
(*PublicRoute)(nil), // 1: abi.v1.PublicRoute
(*Dependency)(nil), // 2: abi.v1.Dependency
(*BlockMeta)(nil), // 3: abi.v1.BlockMeta
(*BlockTemplateOverride)(nil), // 4: abi.v1.BlockTemplateOverride
(*SystemTemplateMeta)(nil), // 5: abi.v1.SystemTemplateMeta
(*PageTemplateMeta)(nil), // 6: abi.v1.PageTemplateMeta
(*AdminPage)(nil), // 7: abi.v1.AdminPage
(*AiAction)(nil), // 8: abi.v1.AiAction
(*CssManifest)(nil), // 9: abi.v1.CssManifest
(*DirectoryExtensions)(nil), // 10: abi.v1.DirectoryExtensions
(*BadgeLabel)(nil), // 11: abi.v1.BadgeLabel
(*MasterPageDefinition)(nil), // 12: abi.v1.MasterPageDefinition
(*MasterPageBlock)(nil), // 13: abi.v1.MasterPageBlock
(*CoreServiceBinding)(nil), // 14: abi.v1.CoreServiceBinding
nil, // 15: abi.v1.PluginManifest.RbacMethodRolesEntry
nil, // 16: abi.v1.CssManifest.NpmPackagesEntry
nil, // 17: abi.v1.DirectoryExtensions.BadgeLabelsEntry
nil, // 18: abi.v1.CoreServiceBinding.MethodRolesEntry
}
var file_v1_manifest_proto_depIdxs = []int32{
2, // 0: abi.v1.PluginManifest.dependencies:type_name -> abi.v1.Dependency
3, // 1: abi.v1.PluginManifest.blocks:type_name -> abi.v1.BlockMeta
4, // 2: abi.v1.PluginManifest.block_template_overrides:type_name -> abi.v1.BlockTemplateOverride
5, // 3: abi.v1.PluginManifest.system_templates:type_name -> abi.v1.SystemTemplateMeta
6, // 4: abi.v1.PluginManifest.page_templates:type_name -> abi.v1.PageTemplateMeta
7, // 5: abi.v1.PluginManifest.admin_pages:type_name -> abi.v1.AdminPage
12, // 6: abi.v1.PluginManifest.master_pages:type_name -> abi.v1.MasterPageDefinition
8, // 7: abi.v1.PluginManifest.ai_actions:type_name -> abi.v1.AiAction
15, // 8: abi.v1.PluginManifest.rbac_method_roles:type_name -> abi.v1.PluginManifest.RbacMethodRolesEntry
9, // 9: abi.v1.PluginManifest.css_manifest:type_name -> abi.v1.CssManifest
10, // 10: abi.v1.PluginManifest.directory_extensions:type_name -> abi.v1.DirectoryExtensions
14, // 11: abi.v1.PluginManifest.core_service_bindings:type_name -> abi.v1.CoreServiceBinding
1, // 12: abi.v1.PluginManifest.public_routes:type_name -> abi.v1.PublicRoute
16, // 13: abi.v1.CssManifest.npm_packages:type_name -> abi.v1.CssManifest.NpmPackagesEntry
17, // 14: abi.v1.DirectoryExtensions.badge_labels:type_name -> abi.v1.DirectoryExtensions.BadgeLabelsEntry
13, // 15: abi.v1.MasterPageDefinition.blocks:type_name -> abi.v1.MasterPageBlock
18, // 16: abi.v1.CoreServiceBinding.method_roles:type_name -> abi.v1.CoreServiceBinding.MethodRolesEntry
11, // 17: abi.v1.DirectoryExtensions.BadgeLabelsEntry.value:type_name -> abi.v1.BadgeLabel
18, // [18:18] is the sub-list for method output_type
18, // [18:18] is the sub-list for method input_type
18, // [18:18] is the sub-list for extension type_name
18, // [18:18] is the sub-list for extension extendee
0, // [0:18] is the sub-list for field type_name
}
func init() { file_v1_manifest_proto_init() }
func file_v1_manifest_proto_init() {
if File_v1_manifest_proto != nil {
return
}
file_v1_manifest_proto_msgTypes[13].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_v1_manifest_proto_rawDesc), len(file_v1_manifest_proto_rawDesc)),
NumEnums: 0,
NumMessages: 19,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_v1_manifest_proto_goTypes,
DependencyIndexes: file_v1_manifest_proto_depIdxs,
MessageInfos: file_v1_manifest_proto_msgTypes,
}.Build()
File_v1_manifest_proto = out.File
file_v1_manifest_proto_goTypes = nil
file_v1_manifest_proto_depIdxs = nil
}