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 (default: false)
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

Nested Shape: PluginQualityMetrics.conformanceTests[number]

PropertyTypeRequiredDescription
protocolIdstringProtocol being tested
passedboolean
totalTestsinteger
passedTestsinteger
lastRunDatestringoptional

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
deprecatedbooleanoptional (default: false)
deprecationMessagestringoptional
replacedBystringoptionalPlugin ID that replaces this one
flags{ experimental: boolean; beta: boolean; featured: boolean; verified: boolean }optional

Nested Shape: PluginRegistryEntry.vendor

PropertyTypeRequiredDescription
idstringVendor identifier (reverse domain)
namestring
websitestringoptional
emailstringoptional
verifiedbooleanoptional (default: false)Whether vendor is verified by ObjectStack
trustLevelEnum<'official' | 'verified' | 'community' | 'unverified'>optional (default: "unverified")

Nested Shape: PluginRegistryEntry.capabilities

PropertyTypeRequiredDescription
implements{ protocol: object; conformance: Enum<'full' | 'partial' | 'experimental' | 'deprecated'>; implementedFeatures?: string[]; features?: object[]; … }[]optionalList of protocols this plugin conforms to
provides{ id: string; name: string; description?: string; version: object; … }[]optionalServices/APIs this plugin offers to others
requires{ pluginId: string; version: string; optional: boolean; reason?: string; … }[]optionalRequired plugins and their capabilities
extensionPoints{ id: string; name: string; description?: string; type: Enum<'action' | 'hook' | 'widget' | 'provider' | 'transformer' | 'validator' | 'decorator'>; … }[]optionalPoints where other plugins can extend this plugin
extensions{ targetPluginId: string; extensionPointId: string; implementation: string; priority: integer }[]optionalExtensions contributed to other plugins

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 (default: "desc")
pageintegeroptional (default: 1)
limitintegeroptional (default: 20)

PluginStatistics

Properties

PropertyTypeRequiredDescription
downloadsintegeroptional (default: 0)
downloadsLastMonthintegeroptional (default: 0)
activeInstallationsintegeroptional (default: 0)
ratings{ average: number; count: integer; distribution?: object }optional
starsintegeroptional
dependentsintegeroptional (default: 0)

PluginVendor

Properties

PropertyTypeRequiredDescription
idstringVendor identifier (reverse domain)
namestring
websitestringoptional
emailstringoptional
verifiedbooleanoptional (default: false)Whether vendor is verified by ObjectStack
trustLevelEnum<'official' | 'verified' | 'community' | 'unverified'>optional (default: "unverified")

On this page