ObjectStackObjectStack

Plugin Lifecycle Advanced

Plugin Lifecycle Advanced protocol schemas

Advanced Plugin Lifecycle Protocol

Defines advanced lifecycle management capabilities including:

  • Hot reload and live updates

  • Graceful degradation and fallback mechanisms

  • Health monitoring and auto-recovery

  • State preservation during updates

This protocol extends the basic plugin lifecycle with enterprise-grade

features for production environments.

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

TypeScript Usage

import { AdvancedPluginLifecycleConfig, DistributedStateConfig, GracefulDegradation, HotReloadConfig, PluginHealthCheck, PluginHealthReport, PluginHealthStatus, PluginStateSnapshot, PluginUpdateStrategy } from '@objectstack/spec/kernel';
import type { AdvancedPluginLifecycleConfig, DistributedStateConfig, GracefulDegradation, HotReloadConfig, PluginHealthCheck, PluginHealthReport, PluginHealthStatus, PluginStateSnapshot, PluginUpdateStrategy } from '@objectstack/spec/kernel';

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

AdvancedPluginLifecycleConfig

Properties

PropertyTypeRequiredDescription
healthObjectoptional
hotReloadObjectoptional
degradationObjectoptional
updatesObjectoptional
resourcesObjectoptional
observabilityObjectoptional

DistributedStateConfig

Properties

PropertyTypeRequiredDescription
providerEnum<'redis' | 'etcd' | 'custom'>Distributed state backend provider
endpointsstring[]optionalBackend connection endpoints
keyPrefixstringoptionalPrefix for all keys (e.g., "plugin:my-plugin:")
ttlintegeroptionalState expiration time in seconds
authObjectoptional
replicationObjectoptional
customConfigRecord<string, any>optionalProvider-specific configuration

GracefulDegradation

Properties

PropertyTypeRequiredDescription
enabledboolean
fallbackModeEnum<'minimal' | 'cached' | 'readonly' | 'offline' | 'disabled'>
criticalDependenciesstring[]optionalPlugin IDs that are required for operation
optionalDependenciesstring[]optionalPlugin IDs that are nice to have but not required
degradedFeaturesObject[]optional
autoRecoveryObjectoptional

HotReloadConfig

Properties

PropertyTypeRequiredDescription
enabledboolean
watchPatternsstring[]optionalGlob patterns to watch for changes
debounceDelayintegerWait time after change detection before reload
preserveStatebooleanKeep plugin state across reloads
stateStrategyEnum<'memory' | 'disk' | 'distributed' | 'none'>How to preserve state during reload
distributedConfigObjectoptionalConfiguration for distributed state management
shutdownTimeoutintegerMaximum time to wait for graceful shutdown
beforeReloadstring[]optionalHook names to call before reload
afterReloadstring[]optionalHook names to call after reload

PluginHealthCheck

Properties

PropertyTypeRequiredDescription
intervalintegerHow often to perform health checks (default: 30s)
timeoutintegerMaximum time to wait for health check response
failureThresholdintegerConsecutive failures needed to mark unhealthy
successThresholdintegerConsecutive successes needed to mark healthy
checkMethodstringoptionalMethod name to call for health check
autoRestartbooleanAutomatically restart plugin on health check failure
maxRestartAttemptsintegerMaximum restart attempts before giving up
restartBackoffEnum<'fixed' | 'linear' | 'exponential'>Backoff strategy for restart delays

PluginHealthReport

Properties

PropertyTypeRequiredDescription
statusEnum<'healthy' | 'degraded' | 'unhealthy' | 'failed' | 'recovering' | 'unknown'>Current health status of the plugin
timestampstring
messagestringoptional
metricsObjectoptional
checksObject[]optional
dependenciesObject[]optional

PluginHealthStatus

Current health status of the plugin

Allowed Values

  • healthy
  • degraded
  • unhealthy
  • failed
  • recovering
  • unknown

PluginStateSnapshot

Properties

PropertyTypeRequiredDescription
pluginIdstring
versionstring
timestampstring
stateRecord<string, any>
metadataObjectoptional

PluginUpdateStrategy

Properties

PropertyTypeRequiredDescription
modeEnum<'manual' | 'automatic' | 'scheduled' | 'rolling'>
autoUpdateConstraintsObjectoptional
scheduleObjectoptional
rollbackObjectoptional
validationObjectoptional

On this page