Plugin Registry Plugin Registry protocol schemas
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
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);
Property Type Required Description pluginId string✅ version stringoptional Defaults to latest config Record<string, any>optional autoUpdate booleanoptional options { skipDependencies?: boolean; force?: boolean; target?: Enum<'system' | 'space' | 'user'> }optional
Property Type Required Description testCoverage numberoptional documentationScore numberoptional codeQuality numberoptional securityScan { lastScanDate?: string; vulnerabilities?: object; passed: boolean }optional conformanceTests { protocolId: string; passed: boolean; totalTests: integer; passedTests: integer; … }[]optional
Property Type Required Description id string✅ Plugin identifier (reverse domain notation) version string✅ name string✅ description stringoptional readme stringoptional category Enum<'data' | 'integration' | 'ui' | 'analytics' | 'security' | 'automation' | 'ai' | 'utility' | 'driver' | 'gateway' | 'adapter'>optional tags string[]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 license stringoptional SPDX license identifier pricing { model: Enum<'free' | 'freemium' | 'paid' | 'enterprise'>; price?: number; currency?: string; billingPeriod?: Enum<'one-time' | 'monthly' | 'yearly'> }optional publishedAt stringoptional updatedAt stringoptional deprecated boolean✅ deprecationMessage stringoptional replacedBy stringoptional Plugin ID that replaces this one flags { experimental: boolean; beta: boolean; featured: boolean; verified: boolean }optional
Property Type Required Description query stringoptional category string[]optional tags string[]optional trustLevel Enum<'official' | 'verified' | 'community' | 'unverified'>[]optional implementsProtocols string[]optional pricingModel Enum<'free' | 'freemium' | 'paid' | 'enterprise'>[]optional minRating numberoptional sortBy Enum<'relevance' | 'downloads' | 'rating' | 'updated' | 'name'>optional sortOrder Enum<'asc' | 'desc'>optional page integeroptional limit integeroptional
Property Type Required Description downloads integer✅ downloadsLastMonth integer✅ activeInstallations integer✅ ratings { average: number; count: integer; distribution?: object }optional stars integeroptional dependents integer✅
Property Type Required Description id string✅ Vendor identifier (reverse domain) name string✅ website stringoptional email stringoptional verified boolean✅ Whether vendor is verified by ObjectStack trustLevel Enum<'official' | 'verified' | 'community' | 'unverified'>✅