ObjectStackObjectStack

Plugin Security

Plugin Security protocol schemas

Plugin Security & Dependency Resolution Protocol

Provides comprehensive security scanning, vulnerability management,

and dependency resolution for the ObjectStack plugin ecosystem.

Features:

  • CVE/vulnerability scanning

  • Dependency graph resolution

  • Semantic version conflict detection

  • Supply chain security

  • Plugin sandboxing policies

  • Trust and verification workflows

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

TypeScript Usage

import { DependencyGraphSchema, DependencyGraphNodeSchema, PackageDependencySchema, PackageDependencyConflictSchema, PackageDependencyResolutionResultSchema, PluginProvenanceSchema, PluginTrustScoreSchema, SBOMSchema, SBOMEntrySchema, SecurityPolicySchema, SecurityScanResultSchema, SecurityVulnerabilitySchema, VulnerabilitySeverity } from '@objectstack/spec/kernel';
import type { DependencyGraph, DependencyGraphNode, PackageDependency, PackageDependencyConflict, PackageDependencyResolutionResult, PluginProvenance, PluginTrustScore, SBOM, SBOMEntry, SecurityPolicy, SecurityScanResult, SecurityVulnerability, VulnerabilitySeverity } from '@objectstack/spec/kernel';

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

DependencyGraph

Complete dependency graph for a package and its transitive dependencies

Properties

PropertyTypeRequiredDescription
root{ id: string; version: string }Root package of the dependency graph
nodes{ id: string; version: string; dependencies: { name: string; versionConstraint: string; type: Enum<'required' | 'optional' | 'peer' | 'dev'>; resolvedVersion?: string }[]; depth: integer; … }[]All resolved package nodes in the dependency graph
edges{ from: string; to: string; constraint: string }[]Directed edges representing dependency relationships
stats{ totalDependencies: integer; directDependencies: integer; maxDepth: integer }Summary statistics for the dependency graph

DependencyGraphNode

A node in the dependency graph representing a resolved package

Properties

PropertyTypeRequiredDescription
idstringUnique identifier of the package
versionstringResolved version of the package
dependencies{ name: string; versionConstraint: string; type: Enum<'required' | 'optional' | 'peer' | 'dev'>; resolvedVersion?: string }[]Dependencies required by this package
depthintegerDepth level in the dependency tree (0 = root)
isDirectbooleanWhether this is a direct (top-level) dependency
metadata{ name: string; description?: string; license?: string; homepage?: string }optionalAdditional metadata about the package

PackageDependency

A package dependency with its version constraint

Properties

PropertyTypeRequiredDescription
namestringPackage name or identifier
versionConstraintstringSemver range (e.g., ^1.0.0, >=2.0.0 <3.0.0)
typeEnum<'required' | 'optional' | 'peer' | 'dev'>Category of the dependency relationship
resolvedVersionstringoptionalConcrete version resolved during dependency resolution

PackageDependencyConflict

A detected conflict between dependency version requirements

Properties

PropertyTypeRequiredDescription
packagestringName of the package with conflicting version requirements
conflicts{ version: string; requestedBy: string[]; constraint: string }[]List of conflicting version requirements
resolution{ strategy: Enum<'pick-highest' | 'pick-lowest' | 'manual'>; version?: string; reason?: string }optionalSuggested resolution for the conflict
severityEnum<'error' | 'warning' | 'info'>Severity level of the dependency conflict

PackageDependencyResolutionResult

Result of a dependency resolution process

Properties

PropertyTypeRequiredDescription
statusEnum<'success' | 'conflict' | 'error'>Overall status of the dependency resolution
graph{ root: object; nodes: { id: string; version: string; dependencies: { name: string; versionConstraint: string; type: Enum<'required' | 'optional' | 'peer' | 'dev'>; resolvedVersion?: string }[]; depth: integer; … }[]; edges: { from: string; to: string; constraint: string }[]; stats: object }optionalResolved dependency graph if resolution succeeded
conflicts{ package: string; conflicts: { version: string; requestedBy: string[]; constraint: string }[]; resolution?: object; severity: Enum<'error' | 'warning' | 'info'> }[]List of dependency conflicts detected during resolution
errors{ package: string; error: string }[]Errors encountered during dependency resolution
installOrderstring[]Topologically sorted list of package IDs for installation
resolvedInintegeroptionalTime taken to resolve dependencies in milliseconds

PluginProvenance

Verifiable provenance and chain of custody for a plugin artifact

Properties

PropertyTypeRequiredDescription
pluginIdstringUnique identifier of the plugin
versionstringVersion of the plugin artifact
build{ timestamp: string; environment?: object; source?: object; builder?: object }Build provenance information
artifacts{ filename: string; sha256: string; size: integer }[]List of build artifacts with integrity hashes
signatures{ algorithm: Enum<'rsa' | 'ecdsa' | 'ed25519'>; publicKey: string; signature: string; signedBy: string; … }[]Cryptographic signatures for the plugin artifact
attestations{ type: Enum<'code-review' | 'security-scan' | 'test-results' | 'ci-build'>; status: Enum<'passed' | 'failed'>; url?: string; timestamp: string }[]Verification attestations for the plugin

PluginTrustScore

Trust score and verification status for a plugin

Properties

PropertyTypeRequiredDescription
pluginIdstringUnique identifier of the plugin
scorenumberOverall trust score from 0 to 100
components{ vendorReputation: number; securityScore: number; codeQuality: number; communityScore: number; … }Individual score components contributing to the overall trust score
levelEnum<'verified' | 'trusted' | 'neutral' | 'untrusted' | 'blocked'>Computed trust level based on the overall score
badgesEnum<'official' | 'verified-vendor' | 'security-scanned' | 'code-signed' | 'open-source' | 'popular'>[]Verification badges earned by the plugin
updatedAtstringISO 8601 timestamp when the trust score was last updated

SBOM

Software Bill of Materials for a plugin

Properties

PropertyTypeRequiredDescription
formatEnum<'spdx' | 'cyclonedx'>SBOM standard format used
versionstringVersion of the SBOM specification
plugin{ id: string; version: string; name: string }Metadata about the plugin this SBOM describes
components{ name: string; version: string; purl?: string; license?: string; … }[]List of software components included in the plugin
generatedAtstringISO 8601 timestamp when the SBOM was generated
generator{ name: string; version: string }optionalTool used to generate this SBOM

SBOMEntry

A single entry in a Software Bill of Materials

Properties

PropertyTypeRequiredDescription
namestringName of the software component
versionstringVersion of the software component
purlstringoptionalPackage URL identifier
licensestringoptionalSPDX license identifier of the component
hashes{ sha256?: string; sha512?: string }optionalCryptographic hashes for integrity verification
supplier{ name: string; url?: string }optionalSupplier information for the component
externalRefs{ type: Enum<'website' | 'repository' | 'documentation' | 'issue-tracker'>; url: string }[]External references related to the component

SecurityPolicy

Security policy governing plugin scanning and enforcement

Properties

PropertyTypeRequiredDescription
idstringUnique identifier for the security policy
namestringHuman-readable name of the security policy
autoScan{ enabled: boolean; frequency: Enum<'on-publish' | 'daily' | 'weekly' | 'monthly'> }Automatic security scanning configuration
thresholds{ maxCritical: integer; maxHigh: integer; maxMedium: integer }Vulnerability count thresholds for policy enforcement
allowedLicensesstring[]List of SPDX license identifiers that are permitted
prohibitedLicensesstring[]List of SPDX license identifiers that are prohibited
codeSigning{ required: boolean; allowedSigners: string[] }optionalCode signing requirements for plugin artifacts
sandbox{ networkAccess: Enum<'none' | 'localhost' | 'allowlist' | 'all'>; allowedDestinations: string[]; filesystemAccess: Enum<'none' | 'read-only' | 'temp-only' | 'full'>; maxMemoryMB?: integer; … }optionalSandbox restrictions for plugin execution

SecurityScanResult

Result of a security scan performed on a plugin

Properties

PropertyTypeRequiredDescription
scanIdstringUnique identifier for this security scan
plugin{ id: string; version: string }Plugin that was scanned
scannedAtstringISO 8601 timestamp when the scan was performed
scanner{ name: string; version: string }Information about the scanner tool used
statusEnum<'passed' | 'failed' | 'warning'>Overall result status of the security scan
vulnerabilities{ cve?: string; id: string; title: string; description: string; … }[]List of vulnerabilities discovered during the scan
summary{ critical: integer; high: integer; medium: integer; low: integer; … }Summary counts of vulnerabilities by severity
licenseIssues{ package: string; license: string; reason: string; severity: Enum<'error' | 'warning' | 'info'> }[]License compliance issues found during the scan
codeQuality{ score?: number; issues: { type: Enum<'security' | 'quality' | 'style'>; severity: Enum<'error' | 'warning' | 'info'>; message: string; file?: string; … }[] }optionalCode quality analysis results
nextScanAtstringoptionalISO 8601 timestamp for the next scheduled scan

SecurityVulnerability

A known security vulnerability in a package dependency

Properties

PropertyTypeRequiredDescription
cvestringoptionalCVE identifier
idstringVulnerability ID
titlestringShort title summarizing the vulnerability
descriptionstringDetailed description of the vulnerability
severityEnum<'critical' | 'high' | 'medium' | 'low' | 'info'>Severity level of this vulnerability
cvssnumberoptionalCVSS score ranging from 0 to 10
package{ name: string; version: string; ecosystem?: string }Affected package information
vulnerableVersionsstringSemver range of vulnerable versions
patchedVersionsstringoptionalSemver range of patched versions
references{ type: Enum<'advisory' | 'article' | 'report' | 'web'>; url: string }[]External references related to the vulnerability
cwestring[]CWE identifiers associated with this vulnerability
publishedAtstringoptionalISO 8601 date when the vulnerability was published
mitigationstringoptionalRecommended steps to mitigate the vulnerability

VulnerabilitySeverity

Severity level of a security vulnerability

Allowed Values

  • critical
  • high
  • medium
  • low
  • info

On this page