ObjectStackObjectStack

Plugin Registry

Plugin Registry protocol schemas

Plugin Registry Protocol

Defines the schema for the plugin discovery and registry system. This enables plugins from different vendors to be discovered, validated, and composed together in the ObjectStack ecosystem.

Source: packages/spec/src/kernel/plugin-registry.zod.ts

TypeScript Usage

import { PluginInstallConfigSchema, PluginQualityMetricsSchema, PluginRegistryEntrySchema, PluginSearchFiltersSchema, PluginStatisticsSchema, PluginVendorSchema } from '@objectstack/spec/kernel';
import type { PluginInstallConfig, PluginQualityMetrics, PluginRegistryEntry, PluginSearchFilters, PluginStatistics, PluginVendor } from '@objectstack/spec/kernel';

// Validate data
const result = PluginInstallConfigSchema.parse(data);

PluginInstallConfig

Properties

PropertyTypeRequiredDescription
pluginIdstring
versionstringoptionalDefaults to latest
configRecord<string, any>optional
autoUpdatebooleanoptional
options{ skipDependencies?: boolean; force?: boolean; target?: Enum<'system' | 'space' | 'user'> }optional

PluginQualityMetrics

Properties

PropertyTypeRequiredDescription
testCoveragenumberoptional
documentationScorenumberoptional
codeQualitynumberoptional
securityScan{ lastScanDate?: string; vulnerabilities?: object; passed: boolean }optional
conformanceTests{ protocolId: string; passed: boolean; totalTests: integer; passedTests: integer; … }[]optional

PluginRegistryEntry

Properties

PropertyTypeRequiredDescription
idstringPlugin identifier (reverse domain notation)
versionstring
namestring
descriptionstringoptional
readmestringoptional
categoryEnum<'data' | 'integration' | 'ui' | 'analytics' | 'security' | 'automation' | 'ai' | 'utility' | 'driver' | 'gateway' | 'adapter'>optional
tagsstring[]optional
vendor{ id: string; name: string; website?: string; email?: string; … }
capabilities{ implements?: object[]; provides?: object[]; requires?: object[]; extensionPoints?: object[]; … }optional
compatibility{ minObjectStackVersion?: string; maxObjectStackVersion?: string; nodeVersion?: string; platforms?: Enum<'linux' | 'darwin' | 'win32' | 'browser'>[] }optional
links{ homepage?: string; repository?: string; documentation?: string; bugs?: string; … }optional
media{ icon?: string; logo?: string; screenshots?: string[]; video?: string }optional
quality{ testCoverage?: number; documentationScore?: number; codeQuality?: number; securityScan?: object; … }optional
statistics{ downloads: integer; downloadsLastMonth: integer; activeInstallations: integer; ratings?: object; … }optional
licensestringoptionalSPDX license identifier
pricing{ model: Enum<'free' | 'freemium' | 'paid' | 'enterprise'>; price?: number; currency?: string; billingPeriod?: Enum<'one-time' | 'monthly' | 'yearly'> }optional
publishedAtstringoptional
updatedAtstringoptional
deprecatedboolean
deprecationMessagestringoptional
replacedBystringoptionalPlugin ID that replaces this one
flags{ experimental: boolean; beta: boolean; featured: boolean; verified: boolean }optional

PluginSearchFilters

Properties

PropertyTypeRequiredDescription
querystringoptional
categorystring[]optional
tagsstring[]optional
trustLevelEnum<'official' | 'verified' | 'community' | 'unverified'>[]optional
implementsProtocolsstring[]optional
pricingModelEnum<'free' | 'freemium' | 'paid' | 'enterprise'>[]optional
minRatingnumberoptional
sortByEnum<'relevance' | 'downloads' | 'rating' | 'updated' | 'name'>optional
sortOrderEnum<'asc' | 'desc'>optional
pageintegeroptional
limitintegeroptional

PluginStatistics

Properties

PropertyTypeRequiredDescription
downloadsinteger
downloadsLastMonthinteger
activeInstallationsinteger
ratings{ average: number; count: integer; distribution?: object }optional
starsintegeroptional
dependentsinteger

PluginVendor

Properties

PropertyTypeRequiredDescription
idstringVendor identifier (reverse domain)
namestring
websitestringoptional
emailstringoptional
verifiedbooleanWhether vendor is verified by ObjectStack
trustLevelEnum<'official' | 'verified' | 'community' | 'unverified'>

On this page