ObjectStackObjectStack

Manifest

Manifest protocol schemas

Structured permission grants requested by a plugin (ADR-0025 §3.2).

Each list scopes one capability surface the plugin may touch. The

install-time consent flow (ADR §3.5 step 2) turns this declaration into

the persisted granted_permissions set enforced at load by the

PluginPermissionEnforcer.

@example


\{ "services": ["object", "http"], "hooks": ["record.beforeInsert"],

"network": ["api.acme.com"], "fs": [] \}

Source: packages/spec/src/kernel/manifest.zod.ts

TypeScript Usage

import { Manifest, ManifestPermissions, PluginEngines, PluginIntegrity, PluginPackaging, PluginPermissions, PluginRuntime } from '@objectstack/spec/kernel';
import type { Manifest, ManifestPermissions, PluginEngines, PluginIntegrity, PluginPackaging, PluginPermissions, PluginRuntime } from '@objectstack/spec/kernel';

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

Manifest

Properties

PropertyTypeRequiredDescription
idstringUnique package identifier (reverse domain style)
namespacestringoptionalShort namespace identifier; also the mandatory prefix of every object name (e.g. "todo" → object names "todo_task", "todo_project")
defaultDatasourcestringoptionalDefault datasource for all objects in this package
versionstringPackage version (semantic versioning)
typeEnum<'plugin' | 'ui' | 'driver' | 'server' | 'app' | 'theme' | 'agent' | 'objectql' | 'module' | 'gateway' | 'adapter'>Type of package
scopeEnum<'cloud' | 'system' | 'project'>optionalDeployment scope: cloud | system | project
namestringHuman-readable package name
descriptionstringoptionalPackage description
permissionsstring[] | ObjectoptionalRequired permissions: legacy string[] or structured plugin block (ADR-0025 §3.2)
objectsstring[]optionalGlob patterns for ObjectQL schemas files
datasourcesstring[]optionalGlob patterns for Datasource definitions
dependenciesRecord<string, string>optionalPackage dependencies
configurationObjectoptionalPlugin configuration settings
contributesObjectoptionalPlatform contributions
dataObject[]optionalInitial seed data (prefer top-level data field)
capabilitiesObjectoptionalPlugin capability declarations for interoperability
extensionsRecord<string, any>optionalExtension points and contributions
navigationContributionsObject[]optionalNavigation items this package contributes into apps owned by other packages
loadingObjectoptionalPlugin loading and runtime behavior configuration
engineObjectoptionalPlatform compatibility requirements (legacy; superseded by engines)
enginesObjectoptionalPlugin compatibility ranges (ADR-0025 §3.2; supersedes engine)
runtimeEnum<'node' | 'sandbox' | 'worker'>optionalPlugin trust tier (ADR-0025 §3.6)
packagingEnum<'bundled' | 'manifest-deps'>optionalDependency packaging strategy (ADR-0025 §3.3)
integrityRecord<string, string>optionalPer-file content digests of the plugin artifact (ADR-0025 §3.2)

ManifestPermissions

Union Options

This schema accepts one of the following structures:

Option 1

Type: string[]


Option 2

Structured plugin permission grants (ADR-0025 §3.2)

Properties

PropertyTypeRequiredDescription
servicesstring[]optionalPlatform services the plugin may resolve (e.g. "object", "http")
hooksstring[]optionalLifecycle hooks the plugin may register (e.g. "record.beforeInsert")
networkstring[]optionalNetwork hosts the plugin may reach (e.g. "api.acme.com")
fsstring[]optionalFilesystem paths the plugin may access


PluginEngines

Plugin compatibility ranges (ADR-0025 §3.2)

Properties

PropertyTypeRequiredDescription
platformstringoptionalObjectStack platform release range (SemVer, e.g. ">=4.0 <5")
protocolstringoptionalRuntime/metadata protocol range, checked first (ADR §3.10 #3)


PluginPackaging

Dependency packaging strategy (ADR-0025 §3.3)

Allowed Values

  • bundled
  • manifest-deps

PluginPermissions

Structured plugin permission grants (ADR-0025 §3.2)

Properties

PropertyTypeRequiredDescription
servicesstring[]optionalPlatform services the plugin may resolve (e.g. "object", "http")
hooksstring[]optionalLifecycle hooks the plugin may register (e.g. "record.beforeInsert")
networkstring[]optionalNetwork hosts the plugin may reach (e.g. "api.acme.com")
fsstring[]optionalFilesystem paths the plugin may access

PluginRuntime

Plugin trust tier (ADR-0025 §3.6)

Allowed Values

  • node
  • sandbox
  • worker

On this page