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 (default: false) 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 protocolId string✅ Protocol being tested passed boolean✅ totalTests integer✅ passedTests integer✅ lastRunDate stringoptional
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 booleanoptional (default: false) deprecationMessage stringoptional replacedBy stringoptional Plugin ID that replaces this one flags { experimental: boolean; beta: boolean; featured: boolean; verified: boolean }optional
Property Type Required Description id string✅ Vendor identifier (reverse domain) name string✅ website stringoptional email stringoptional verified booleanoptional (default: false) Whether vendor is verified by ObjectStack trustLevel Enum<'official' | 'verified' | 'community' | 'unverified'>optional (default: "unverified")
Property Type Required Description implements { protocol: object; conformance: Enum<'full' | 'partial' | 'experimental' | 'deprecated'>; implementedFeatures?: string[]; features?: object[]; … }[]optional List of protocols this plugin conforms to provides { id: string; name: string; description?: string; version: object; … }[]optional Services/APIs this plugin offers to others requires { pluginId: string; version: string; optional: boolean; reason?: string; … }[]optional Required plugins and their capabilities extensionPoints { id: string; name: string; description?: string; type: Enum<'action' | 'hook' | 'widget' | 'provider' | 'transformer' | 'validator' | 'decorator'>; … }[]optional Points where other plugins can extend this plugin extensions { targetPluginId: string; extensionPointId: string; implementation: string; priority: integer }[]optional Extensions contributed to other plugins
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 (default: "desc") page integeroptional (default: 1) limit integeroptional (default: 20)
Property Type Required Description downloads integeroptional (default: 0) downloadsLastMonth integeroptional (default: 0) activeInstallations integeroptional (default: 0) ratings { average: number; count: integer; distribution?: object }optional stars integeroptional dependents integeroptional (default: 0)
Property Type Required Description id string✅ Vendor identifier (reverse domain) name string✅ website stringoptional email stringoptional verified booleanoptional (default: false) Whether vendor is verified by ObjectStack trustLevel Enum<'official' | 'verified' | 'community' | 'unverified'>optional (default: "unverified")