Skip to content
Snippets Groups Projects
Select Git revision
  • 590503d3c13f3abc9bc0dcfcd2ebb3290ad11d1c
  • master default protected
  • bugfix/fix-return-var-in-find
  • feature/upgrade2
  • v1.10.0
  • v1.8.2
  • v1.8.1
  • v1.8.0
  • 1.7.3
  • v1.7.1
  • v1.6.1
  • v1.6.0
  • v1.5.0
  • v1.4.1
  • v1.3.0
  • v1.2.2
  • v1.2.1
  • v1.2.0
  • v1.0.1
  • v1.0.0
  • v0.0.23
  • v0.0.17
  • v0.0.10
  • v0.0.9
24 results

README.md

Blame
  • manager_service.pb.go 49.87 KiB
    //*
    //
    //# Менеджер расширений
    //
    //Реализует функционал по координации расширений в системе и служит единой точкой доступа для работы с расширениями:
    //- Регистрирует все расширения в едином реестре
    //- Предоставляет доступ к реестру расширений на получение доступных расширений в системе
    //- Контролирует процесс установки расширения, устанавливает все необходимые зависимости в правильном порядке
    //- Контролирует создание системной коллекции `system_extensions` (System/Extensions) и создание/удалений в ней установленных расширений
    //- Контролирует создание системной коллекции `system_actions` (System/Actions). Выполняет удаление всех действий связанных
    //с расширением при его удалении.
    //- Выполняет переадресацию запросов на действия для расширений
    //
    //Менеджер расширений для контроля установленных расширений использует системные коллекции. При обращении к сервису контента
    //используются системный уровень прав для создания необходимых коллекций и получения данных:
    //1. `system_extensions` (System Extensions) - доступна только системным пользователям
    //2. `system_actions` (System Actions) - по умолчанию доступна только системным пользователям, настройки доступа на чтение
    //выдаются пользователям вручную. В зависимости от пользователя в интерфейсе отображаются те или иные доступные действия.
    //
    //Проверка наличия коллекций и создание в случае их отсутствия выполняется в момент установки расширений. После установки
    //расширения в коллекцию `system_extensions` добавляется запись об установленном расширении. Действия добавляются в
    //коллекцию `system_actions` расширениями по собственному усмотрению при установке.
    //
    //Для обращения к расширениям используются права текущего пользователя запрашивающего операцию. Если пользователь не
    //обладает необходимыми правами для выполнения действия то операция вернет ошибку.
    //
    
    // Code generated by protoc-gen-go. DO NOT EDIT.
    // versions:
    // 	protoc-gen-go v1.31.0
    // 	protoc        v4.24.3
    // source: extensions/manager_service.proto
    
    package extensions
    
    import (
    	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    	reflect "reflect"
    	sync "sync"
    )
    
    const (
    	// Verify that this generated code is sufficiently up-to-date.
    	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    	// Verify that runtime/protoimpl is sufficiently up-to-date.
    	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    )
    
    type State int32
    
    const (
    	State_UNKNOWN     State = 0
    	State_INSTALLED   State = 1
    	State_IN_PROGRESS State = 2
    	State_FAIL        State = 3
    	State_PENDING     State = 4
    )
    
    // Enum value maps for State.
    var (
    	State_name = map[int32]string{
    		0: "UNKNOWN",
    		1: "INSTALLED",
    		2: "IN_PROGRESS",
    		3: "FAIL",
    		4: "PENDING",
    	}
    	State_value = map[string]int32{
    		"UNKNOWN":     0,
    		"INSTALLED":   1,
    		"IN_PROGRESS": 2,
    		"FAIL":        3,
    		"PENDING":     4,
    	}
    )
    
    func (x State) Enum() *State {
    	p := new(State)
    	*p = x
    	return p
    }
    
    func (x State) String() string {
    	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    }
    
    func (State) Descriptor() protoreflect.EnumDescriptor {
    	return file_extensions_manager_service_proto_enumTypes[0].Descriptor()
    }
    
    func (State) Type() protoreflect.EnumType {
    	return &file_extensions_manager_service_proto_enumTypes[0]
    }
    
    func (x State) Number() protoreflect.EnumNumber {
    	return protoreflect.EnumNumber(x)
    }
    
    // Deprecated: Use State.Descriptor instead.
    func (State) EnumDescriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{0}
    }
    
    // ListExtensionsRequest - запрос на получение статуса расширений в пространстве и окружении.
    // Если список расширений в запросе не передан, возвращаются все установленные расширения
    //
    // Использование флагов `installed`/`uninstalled`:
    //   - если в ListExtensionsRequest.extensions передан список расширений, то флаги игнорируются
    //     и возвращается информация о переданных в запросе расширениях
    //   - `installed:false, uninstalled:false` (равноценно `installed:true, uninstalled:false`) -
    //     возвращается информация об установленных расширениях
    //   - `installed:false, uninstalled:true` - вернуть только зарегистрированные, но не установленные расширения
    //   - `installed:true, uninstalled:true` - вернуть информацию о всех зарегистрированных расширениях
    type ListExtensionsRequest struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extensions   []string `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`                          // Имя расширения (опционально), regexp
    	SpaceId      string   `protobuf:"bytes,2,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"`                 // Пространство имен расширения
    	EnvId        string   `protobuf:"bytes,3,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"`                       // Идентификатор окружения
    	Installed    bool     `protobuf:"varint,4,opt,name=installed,proto3" json:"installed,omitempty"`                           // Вернуть установленные расширения (по умолчанию)
    	NotInstalled bool     `protobuf:"varint,5,opt,name=not_installed,json=notInstalled,proto3" json:"not_installed,omitempty"` // Вернуть не установленные расширения
    }
    
    func (x *ListExtensionsRequest) Reset() {
    	*x = ListExtensionsRequest{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[0]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *ListExtensionsRequest) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*ListExtensionsRequest) ProtoMessage() {}
    
    func (x *ListExtensionsRequest) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[0]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use ListExtensionsRequest.ProtoReflect.Descriptor instead.
    func (*ListExtensionsRequest) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{0}
    }
    
    func (x *ListExtensionsRequest) GetExtensions() []string {
    	if x != nil {
    		return x.Extensions
    	}
    	return nil
    }
    
    func (x *ListExtensionsRequest) GetSpaceId() string {
    	if x != nil {
    		return x.SpaceId
    	}
    	return ""
    }
    
    func (x *ListExtensionsRequest) GetEnvId() string {
    	if x != nil {
    		return x.EnvId
    	}
    	return ""
    }
    
    func (x *ListExtensionsRequest) GetInstalled() bool {
    	if x != nil {
    		return x.Installed
    	}
    	return false
    }
    
    func (x *ListExtensionsRequest) GetNotInstalled() bool {
    	if x != nil {
    		return x.NotInstalled
    	}
    	return false
    }
    
    // GetExtensionResponse - описание расширения
    type ListExtensionsResponse struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extensions []*ListExtensionsResponse_ExtensionInfo `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`
    }
    
    func (x *ListExtensionsResponse) Reset() {
    	*x = ListExtensionsResponse{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[1]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *ListExtensionsResponse) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*ListExtensionsResponse) ProtoMessage() {}
    
    func (x *ListExtensionsResponse) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[1]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use ListExtensionsResponse.ProtoReflect.Descriptor instead.
    func (*ListExtensionsResponse) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{1}
    }
    
    func (x *ListExtensionsResponse) GetExtensions() []*ListExtensionsResponse_ExtensionInfo {
    	if x != nil {
    		return x.Extensions
    	}
    	return nil
    }
    
    // ExtensionDescriptor описание расширения (возвращается сервисом при регистрации)
    type ExtensionDescriptor struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extension          string            `protobuf:"bytes,10000,opt,name=extension,proto3" json:"extension,omitempty"`                                                                                   // Имя расширения
    	Title              string            `protobuf:"bytes,10010,opt,name=title,proto3" json:"title,omitempty"`                                                                                           // Название расширения
    	Description        string            `protobuf:"bytes,10020,opt,name=description,proto3" json:"description,omitempty"`                                                                               // Описание расширения
    	Version            string            `protobuf:"bytes,10100,opt,name=version,proto3" json:"version,omitempty"`                                                                                       // Версия расширения
    	VersionDescription string            `protobuf:"bytes,10110,opt,name=version_description,json=versionDescription,proto3" json:"version_description,omitempty"`                                       // Описание версии
    	Deps               []string          `protobuf:"bytes,10200,rep,name=deps,proto3" json:"deps,omitempty"`                                                                                             // Зависимости от других расширений
    	Url                string            `protobuf:"bytes,5,opt,name=url,proto3" json:"url,omitempty"`                                                                                                   // Адрес для внутри сети, коммуникация между сервисами
    	Metadata           map[string]string `protobuf:"bytes,6,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Метаданные сервиса, смотрите документацию по сервису
    }
    
    func (x *ExtensionDescriptor) Reset() {
    	*x = ExtensionDescriptor{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[2]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *ExtensionDescriptor) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*ExtensionDescriptor) ProtoMessage() {}
    
    func (x *ExtensionDescriptor) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[2]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use ExtensionDescriptor.ProtoReflect.Descriptor instead.
    func (*ExtensionDescriptor) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{2}
    }
    
    func (x *ExtensionDescriptor) GetExtension() string {
    	if x != nil {
    		return x.Extension
    	}
    	return ""
    }
    
    func (x *ExtensionDescriptor) GetTitle() string {
    	if x != nil {
    		return x.Title
    	}
    	return ""
    }
    
    func (x *ExtensionDescriptor) GetDescription() string {
    	if x != nil {
    		return x.Description
    	}
    	return ""
    }
    
    func (x *ExtensionDescriptor) GetVersion() string {
    	if x != nil {
    		return x.Version
    	}
    	return ""
    }
    
    func (x *ExtensionDescriptor) GetVersionDescription() string {
    	if x != nil {
    		return x.VersionDescription
    	}
    	return ""
    }
    
    func (x *ExtensionDescriptor) GetDeps() []string {
    	if x != nil {
    		return x.Deps
    	}
    	return nil
    }
    
    func (x *ExtensionDescriptor) GetUrl() string {
    	if x != nil {
    		return x.Url
    	}
    	return ""
    }
    
    func (x *ExtensionDescriptor) GetMetadata() map[string]string {
    	if x != nil {
    		return x.Metadata
    	}
    	return nil
    }
    
    type RegisterExtensionsRequest struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extensions []*ExtensionDescriptor `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`
    }
    
    func (x *RegisterExtensionsRequest) Reset() {
    	*x = RegisterExtensionsRequest{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[3]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *RegisterExtensionsRequest) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*RegisterExtensionsRequest) ProtoMessage() {}
    
    func (x *RegisterExtensionsRequest) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[3]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use RegisterExtensionsRequest.ProtoReflect.Descriptor instead.
    func (*RegisterExtensionsRequest) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{3}
    }
    
    func (x *RegisterExtensionsRequest) GetExtensions() []*ExtensionDescriptor {
    	if x != nil {
    		return x.Extensions
    	}
    	return nil
    }
    
    type RegisterExtensionsResponse struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    }
    
    func (x *RegisterExtensionsResponse) Reset() {
    	*x = RegisterExtensionsResponse{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[4]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *RegisterExtensionsResponse) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*RegisterExtensionsResponse) ProtoMessage() {}
    
    func (x *RegisterExtensionsResponse) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[4]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use RegisterExtensionsResponse.ProtoReflect.Descriptor instead.
    func (*RegisterExtensionsResponse) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{4}
    }
    
    type UnregisterExtensionsRequest struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extensions []*ExtensionDescriptor `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`
    }
    
    func (x *UnregisterExtensionsRequest) Reset() {
    	*x = UnregisterExtensionsRequest{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[5]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *UnregisterExtensionsRequest) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*UnregisterExtensionsRequest) ProtoMessage() {}
    
    func (x *UnregisterExtensionsRequest) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[5]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use UnregisterExtensionsRequest.ProtoReflect.Descriptor instead.
    func (*UnregisterExtensionsRequest) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{5}
    }
    
    func (x *UnregisterExtensionsRequest) GetExtensions() []*ExtensionDescriptor {
    	if x != nil {
    		return x.Extensions
    	}
    	return nil
    }
    
    type UnregisterExtensionsResponse struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    }
    
    func (x *UnregisterExtensionsResponse) Reset() {
    	*x = UnregisterExtensionsResponse{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[6]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *UnregisterExtensionsResponse) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*UnregisterExtensionsResponse) ProtoMessage() {}
    
    func (x *UnregisterExtensionsResponse) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[6]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use UnregisterExtensionsResponse.ProtoReflect.Descriptor instead.
    func (*UnregisterExtensionsResponse) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{6}
    }
    
    type ListRegisteredExtensionsRequest struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extension []string `protobuf:"bytes,1,rep,name=extension,proto3" json:"extension,omitempty"` // Список имен сервисов для получения результатов. Список может содержать регулярные выражения.
    }
    
    func (x *ListRegisteredExtensionsRequest) Reset() {
    	*x = ListRegisteredExtensionsRequest{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[7]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *ListRegisteredExtensionsRequest) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*ListRegisteredExtensionsRequest) ProtoMessage() {}
    
    func (x *ListRegisteredExtensionsRequest) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[7]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use ListRegisteredExtensionsRequest.ProtoReflect.Descriptor instead.
    func (*ListRegisteredExtensionsRequest) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{7}
    }
    
    func (x *ListRegisteredExtensionsRequest) GetExtension() []string {
    	if x != nil {
    		return x.Extension
    	}
    	return nil
    }
    
    type ListRegisteredExtensionsResponse struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extensions []*ExtensionDescriptor `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`
    }
    
    func (x *ListRegisteredExtensionsResponse) Reset() {
    	*x = ListRegisteredExtensionsResponse{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[8]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *ListRegisteredExtensionsResponse) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*ListRegisteredExtensionsResponse) ProtoMessage() {}
    
    func (x *ListRegisteredExtensionsResponse) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[8]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use ListRegisteredExtensionsResponse.ProtoReflect.Descriptor instead.
    func (*ListRegisteredExtensionsResponse) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{8}
    }
    
    func (x *ListRegisteredExtensionsResponse) GetExtensions() []*ExtensionDescriptor {
    	if x != nil {
    		return x.Extensions
    	}
    	return nil
    }
    
    type SpaceExtensions struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extension   string   `protobuf:"bytes,10000,opt,name=extension,proto3" json:"extension,omitempty"`
    	Title       string   `protobuf:"bytes,10010,opt,name=title,proto3" json:"title,omitempty"`
    	Version     string   `protobuf:"bytes,10100,opt,name=version,proto3" json:"version,omitempty"`
    	Deps        []string `protobuf:"bytes,10200,rep,name=deps,proto3" json:"deps,omitempty"`
    	State       State    `protobuf:"varint,10300,opt,name=state,proto3,enum=extensions.State" json:"state,omitempty"`
    	StatusError string   `protobuf:"bytes,10400,opt,name=status_error,json=statusError,proto3" json:"status_error,omitempty"` // Сообщение к ошибке
    	StatusMsg   string   `protobuf:"bytes,10500,opt,name=status_msg,json=statusMsg,proto3" json:"status_msg,omitempty"`       // Сообщение к статусу
    }
    
    func (x *SpaceExtensions) Reset() {
    	*x = SpaceExtensions{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[9]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *SpaceExtensions) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*SpaceExtensions) ProtoMessage() {}
    
    func (x *SpaceExtensions) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[9]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use SpaceExtensions.ProtoReflect.Descriptor instead.
    func (*SpaceExtensions) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{9}
    }
    
    func (x *SpaceExtensions) GetExtension() string {
    	if x != nil {
    		return x.Extension
    	}
    	return ""
    }
    
    func (x *SpaceExtensions) GetTitle() string {
    	if x != nil {
    		return x.Title
    	}
    	return ""
    }
    
    func (x *SpaceExtensions) GetVersion() string {
    	if x != nil {
    		return x.Version
    	}
    	return ""
    }
    
    func (x *SpaceExtensions) GetDeps() []string {
    	if x != nil {
    		return x.Deps
    	}
    	return nil
    }
    
    func (x *SpaceExtensions) GetState() State {
    	if x != nil {
    		return x.State
    	}
    	return State_UNKNOWN
    }
    
    func (x *SpaceExtensions) GetStatusError() string {
    	if x != nil {
    		return x.StatusError
    	}
    	return ""
    }
    
    func (x *SpaceExtensions) GetStatusMsg() string {
    	if x != nil {
    		return x.StatusMsg
    	}
    	return ""
    }
    
    type ListExtensionsResponse_ExtensionInfo struct {
    	state         protoimpl.MessageState
    	sizeCache     protoimpl.SizeCache
    	unknownFields protoimpl.UnknownFields
    
    	Extension        string `protobuf:"bytes,10100,opt,name=extension,proto3" json:"extension,omitempty"` // Имя расширения
    	Title            string `protobuf:"bytes,10110,opt,name=title,proto3" json:"title,omitempty"`
    	State            State  `protobuf:"varint,10120,opt,name=state,proto3,enum=extensions.State" json:"state,omitempty"`
    	Msg              string `protobuf:"bytes,10200,opt,name=msg,proto3" json:"msg,omitempty"`                                                   // Сообщение
    	Error            string `protobuf:"bytes,10300,opt,name=error,proto3" json:"error,omitempty"`                                               // Ошибка (state == ERROR)
    	NotFound         bool   `protobuf:"varint,10350,opt,name=not_found,json=notFound,proto3" json:"not_found,omitempty"`                        // Расширение не найдено
    	Installed        bool   `protobuf:"varint,10400,opt,name=installed,proto3" json:"installed,omitempty"`                                      // Расширение установлено
    	UpdateAvailable  bool   `protobuf:"varint,10500,opt,name=update_available,json=updateAvailable,proto3" json:"update_available,omitempty"`   // Доступно обновление
    	InstalledVersion string `protobuf:"bytes,10510,opt,name=installed_version,json=installedVersion,proto3" json:"installed_version,omitempty"` // Установленная версия расширения
    	AvailableVersion string `protobuf:"bytes,10520,opt,name=available_version,json=availableVersion,proto3" json:"available_version,omitempty"` // Доступная версия расширения
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) Reset() {
    	*x = ListExtensionsResponse_ExtensionInfo{}
    	if protoimpl.UnsafeEnabled {
    		mi := &file_extensions_manager_service_proto_msgTypes[10]
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		ms.StoreMessageInfo(mi)
    	}
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) String() string {
    	return protoimpl.X.MessageStringOf(x)
    }
    
    func (*ListExtensionsResponse_ExtensionInfo) ProtoMessage() {}
    
    func (x *ListExtensionsResponse_ExtensionInfo) ProtoReflect() protoreflect.Message {
    	mi := &file_extensions_manager_service_proto_msgTypes[10]
    	if protoimpl.UnsafeEnabled && x != nil {
    		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    		if ms.LoadMessageInfo() == nil {
    			ms.StoreMessageInfo(mi)
    		}
    		return ms
    	}
    	return mi.MessageOf(x)
    }
    
    // Deprecated: Use ListExtensionsResponse_ExtensionInfo.ProtoReflect.Descriptor instead.
    func (*ListExtensionsResponse_ExtensionInfo) Descriptor() ([]byte, []int) {
    	return file_extensions_manager_service_proto_rawDescGZIP(), []int{1, 0}
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetExtension() string {
    	if x != nil {
    		return x.Extension
    	}
    	return ""
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetTitle() string {
    	if x != nil {
    		return x.Title
    	}
    	return ""
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetState() State {
    	if x != nil {
    		return x.State
    	}
    	return State_UNKNOWN
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetMsg() string {
    	if x != nil {
    		return x.Msg
    	}
    	return ""
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetError() string {
    	if x != nil {
    		return x.Error
    	}
    	return ""
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetNotFound() bool {
    	if x != nil {
    		return x.NotFound
    	}
    	return false
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetInstalled() bool {
    	if x != nil {
    		return x.Installed
    	}
    	return false
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetUpdateAvailable() bool {
    	if x != nil {
    		return x.UpdateAvailable
    	}
    	return false
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetInstalledVersion() string {
    	if x != nil {
    		return x.InstalledVersion
    	}
    	return ""
    }
    
    func (x *ListExtensionsResponse_ExtensionInfo) GetAvailableVersion() string {
    	if x != nil {
    		return x.AvailableVersion
    	}
    	return ""
    }
    
    var File_extensions_manager_service_proto protoreflect.FileDescriptor
    
    var file_extensions_manager_service_proto_rawDesc = []byte{
    	0x0a, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x6e,
    	0x61, 0x67, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f,
    	0x74, 0x6f, 0x12, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xac,
    	0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78,
    	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63,
    	0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63,
    	0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
    	0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e,
    	0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69,
    	0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x5f,
    	0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
    	0x0c, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x22, 0xcb, 0x03,
    	0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
    	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65,
    	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78,
    	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
    	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a,
    	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xde, 0x02, 0x0a, 0x0d, 0x45,
    	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x09,
    	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09,
    	0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x05, 0x74,
    	0x69, 0x74, 0x6c, 0x65, 0x18, 0xfe, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74,
    	0x6c, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x88, 0x4f, 0x20, 0x01,
    	0x28, 0x0e, 0x32, 0x11, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
    	0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x11, 0x0a, 0x03,
    	0x6d, 0x73, 0x67, 0x18, 0xd8, 0x4f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12,
    	0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xbc, 0x50, 0x20, 0x01, 0x28, 0x09, 0x52,
    	0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f,
    	0x75, 0x6e, 0x64, 0x18, 0xee, 0x50, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x46,
    	0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65,
    	0x64, 0x18, 0xa0, 0x51, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
    	0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x76,
    	0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x84, 0x52, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
    	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12,
    	0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72,
    	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x8e, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x73,
    	0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a,
    	0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
    	0x6f, 0x6e, 0x18, 0x98, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c,
    	0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xea, 0x02, 0x0a, 0x13,
    	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    	0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x18, 0x90, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
    	0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x9a, 0x4e, 0x20, 0x01,
    	0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x65, 0x73,
    	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xa4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52,
    	0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x07,
    	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
    	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x76, 0x65, 0x72, 0x73, 0x69,
    	0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xfe,
    	0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65,
    	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x65, 0x70,
    	0x73, 0x18, 0xd8, 0x4f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x70, 0x73, 0x12, 0x10,
    	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
    	0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03,
    	0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
    	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
    	0x74, 0x6f, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
    	0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d,
    	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
    	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
    	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
    	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5c, 0x0a, 0x19, 0x52, 0x65, 0x67, 0x69,
    	0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
    	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
    	0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
    	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
    	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x1b, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
    	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
    	0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
    	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65,
    	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
    	0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
    	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
    	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69,
    	0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
    	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e,
    	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67,
    	0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x78, 0x74,
    	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
    	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
    	0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0a,
    	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x0f, 0x53,
    	0x70, 0x61, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d,
    	0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x90, 0x4e, 0x20, 0x01,
    	0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a,
    	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
    	0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
    	0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
    	0x13, 0x0a, 0x04, 0x64, 0x65, 0x70, 0x73, 0x18, 0xd8, 0x4f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
    	0x64, 0x65, 0x70, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0xbc, 0x50,
    	0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22,
    	0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xa0,
    	0x51, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x72, 0x72,
    	0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x73, 0x67,
    	0x18, 0x84, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d,
    	0x73, 0x67, 0x2a, 0x4b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
    	0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x53, 0x54,
    	0x41, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x5f, 0x50, 0x52,
    	0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c,
    	0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x32,
    	0xc1, 0x03, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e,
    	0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x65, 0x0a, 0x12, 0x52,
    	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x73, 0x12, 0x25, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52,
    	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
    	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78,
    	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
    	0x22, 0x00, 0x12, 0x6b, 0x0a, 0x14, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
    	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x74,
    	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
    	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
    	0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
    	0x2e, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e,
    	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
    	0x77, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
    	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x65, 0x78,
    	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67,
    	0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
    	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
    	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
    	0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
    	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74,
    	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x65, 0x78, 0x74,
    	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65,
    	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
    	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45,
    	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
    	0x65, 0x22, 0x00, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e,
    	0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73,
    	0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
    	0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x62,
    	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
    }
    
    var (
    	file_extensions_manager_service_proto_rawDescOnce sync.Once
    	file_extensions_manager_service_proto_rawDescData = file_extensions_manager_service_proto_rawDesc
    )
    
    func file_extensions_manager_service_proto_rawDescGZIP() []byte {
    	file_extensions_manager_service_proto_rawDescOnce.Do(func() {
    		file_extensions_manager_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_extensions_manager_service_proto_rawDescData)
    	})
    	return file_extensions_manager_service_proto_rawDescData
    }
    
    var file_extensions_manager_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
    var file_extensions_manager_service_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
    var file_extensions_manager_service_proto_goTypes = []interface{}{
    	(State)(0),                                   // 0: extensions.State
    	(*ListExtensionsRequest)(nil),                // 1: extensions.ListExtensionsRequest
    	(*ListExtensionsResponse)(nil),               // 2: extensions.ListExtensionsResponse
    	(*ExtensionDescriptor)(nil),                  // 3: extensions.ExtensionDescriptor
    	(*RegisterExtensionsRequest)(nil),            // 4: extensions.RegisterExtensionsRequest
    	(*RegisterExtensionsResponse)(nil),           // 5: extensions.RegisterExtensionsResponse
    	(*UnregisterExtensionsRequest)(nil),          // 6: extensions.UnregisterExtensionsRequest
    	(*UnregisterExtensionsResponse)(nil),         // 7: extensions.UnregisterExtensionsResponse
    	(*ListRegisteredExtensionsRequest)(nil),      // 8: extensions.ListRegisteredExtensionsRequest
    	(*ListRegisteredExtensionsResponse)(nil),     // 9: extensions.ListRegisteredExtensionsResponse
    	(*SpaceExtensions)(nil),                      // 10: extensions.SpaceExtensions
    	(*ListExtensionsResponse_ExtensionInfo)(nil), // 11: extensions.ListExtensionsResponse.ExtensionInfo
    	nil, // 12: extensions.ExtensionDescriptor.MetadataEntry
    }
    var file_extensions_manager_service_proto_depIdxs = []int32{
    	11, // 0: extensions.ListExtensionsResponse.extensions:type_name -> extensions.ListExtensionsResponse.ExtensionInfo
    	12, // 1: extensions.ExtensionDescriptor.metadata:type_name -> extensions.ExtensionDescriptor.MetadataEntry
    	3,  // 2: extensions.RegisterExtensionsRequest.extensions:type_name -> extensions.ExtensionDescriptor
    	3,  // 3: extensions.UnregisterExtensionsRequest.extensions:type_name -> extensions.ExtensionDescriptor
    	3,  // 4: extensions.ListRegisteredExtensionsResponse.extensions:type_name -> extensions.ExtensionDescriptor
    	0,  // 5: extensions.SpaceExtensions.state:type_name -> extensions.State
    	0,  // 6: extensions.ListExtensionsResponse.ExtensionInfo.state:type_name -> extensions.State
    	4,  // 7: extensions.ExtensionManagerService.RegisterExtensions:input_type -> extensions.RegisterExtensionsRequest
    	6,  // 8: extensions.ExtensionManagerService.UnregisterExtensions:input_type -> extensions.UnregisterExtensionsRequest
    	8,  // 9: extensions.ExtensionManagerService.ListRegisteredExtensions:input_type -> extensions.ListRegisteredExtensionsRequest
    	1,  // 10: extensions.ExtensionManagerService.ListExtensions:input_type -> extensions.ListExtensionsRequest
    	5,  // 11: extensions.ExtensionManagerService.RegisterExtensions:output_type -> extensions.RegisterExtensionsResponse
    	7,  // 12: extensions.ExtensionManagerService.UnregisterExtensions:output_type -> extensions.UnregisterExtensionsResponse
    	9,  // 13: extensions.ExtensionManagerService.ListRegisteredExtensions:output_type -> extensions.ListRegisteredExtensionsResponse
    	2,  // 14: extensions.ExtensionManagerService.ListExtensions:output_type -> extensions.ListExtensionsResponse
    	11, // [11:15] is the sub-list for method output_type
    	7,  // [7:11] is the sub-list for method input_type
    	7,  // [7:7] is the sub-list for extension type_name
    	7,  // [7:7] is the sub-list for extension extendee
    	0,  // [0:7] is the sub-list for field type_name
    }
    
    func init() { file_extensions_manager_service_proto_init() }
    func file_extensions_manager_service_proto_init() {
    	if File_extensions_manager_service_proto != nil {
    		return
    	}
    	if !protoimpl.UnsafeEnabled {
    		file_extensions_manager_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*ListExtensionsRequest); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*ListExtensionsResponse); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*ExtensionDescriptor); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*RegisterExtensionsRequest); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*RegisterExtensionsResponse); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*UnregisterExtensionsRequest); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*UnregisterExtensionsResponse); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*ListRegisteredExtensionsRequest); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*ListRegisteredExtensionsResponse); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*SpaceExtensions); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    		file_extensions_manager_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
    			switch v := v.(*ListExtensionsResponse_ExtensionInfo); i {
    			case 0:
    				return &v.state
    			case 1:
    				return &v.sizeCache
    			case 2:
    				return &v.unknownFields
    			default:
    				return nil
    			}
    		}
    	}
    	type x struct{}
    	out := protoimpl.TypeBuilder{
    		File: protoimpl.DescBuilder{
    			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
    			RawDescriptor: file_extensions_manager_service_proto_rawDesc,
    			NumEnums:      1,
    			NumMessages:   12,
    			NumExtensions: 0,
    			NumServices:   1,
    		},
    		GoTypes:           file_extensions_manager_service_proto_goTypes,
    		DependencyIndexes: file_extensions_manager_service_proto_depIdxs,
    		EnumInfos:         file_extensions_manager_service_proto_enumTypes,
    		MessageInfos:      file_extensions_manager_service_proto_msgTypes,
    	}.Build()
    	File_extensions_manager_service_proto = out.File
    	file_extensions_manager_service_proto_rawDesc = nil
    	file_extensions_manager_service_proto_goTypes = nil
    	file_extensions_manager_service_proto_depIdxs = nil
    }