ObjectStackObjectStack

Package Registry

Package Registry protocol schemas

Package Registry Protocol

Defines the runtime state and lifecycle operations for installed packages.

Key Distinction: App vs Package (ADR-0019)

  • App (AppSchema): the one consumer-facing unit — what a tenant downloads,

opens, and uninstalls. Only type: app packages are consumer-installable

(see isConsumerInstallable), and a consumer package defines **at most one

app** — there is no "suite contains apps" aggregator.

  • Package (Manifest): the internal / control-plane artifact term (the

"row" in the installed-packages table). Never surfaced to consumers as a

separate noun.

  • Internal contributions (plugin/driver/server/…): the "frameworks inside

the .app bundle" — bundled within an App or operator-provisioned; a consumer

never installs them directly.

Architecture Alignment

  • Salesforce: Managed Packages with install/uninstall lifecycle

  • VS Code: Extension marketplace with enable/disable per-workspace

  • Kubernetes: Helm charts with release state tracking

  • npm: Package registry with install/uninstall/version management

Source: packages/spec/src/kernel/package-registry.zod.ts

TypeScript Usage

import { DisablePackageRequest, DisablePackageResponse, EnablePackageRequest, EnablePackageResponse, GetPackageRequest, GetPackageResponse, InstallPackageRequest, InstallPackageResponse, InstalledPackage, ListPackagesRequest, ListPackagesResponse, NamespaceConflictError, NamespaceRegistryEntry, PackageStatusEnum, UninstallPackageRequest, UninstallPackageResponse } from '@objectstack/spec/kernel';
import type { DisablePackageRequest, DisablePackageResponse, EnablePackageRequest, EnablePackageResponse, GetPackageRequest, GetPackageResponse, InstallPackageRequest, InstallPackageResponse, InstalledPackage, ListPackagesRequest, ListPackagesResponse, NamespaceConflictError, NamespaceRegistryEntry, PackageStatusEnum, UninstallPackageRequest, UninstallPackageResponse } from '@objectstack/spec/kernel';

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

DisablePackageRequest

Disable package request

Properties

PropertyTypeRequiredDescription
idstringPackage ID to disable

DisablePackageResponse

Disable package response

Properties

PropertyTypeRequiredDescription
packageObjectDisabled package details
messagestringoptionalDisable status message

EnablePackageRequest

Enable package request

Properties

PropertyTypeRequiredDescription
idstringPackage ID to enable

EnablePackageResponse

Enable package response

Properties

PropertyTypeRequiredDescription
packageObjectEnabled package details
messagestringoptionalEnable status message

GetPackageRequest

Get package request

Properties

PropertyTypeRequiredDescription
idstringPackage identifier

GetPackageResponse

Get package response

Properties

PropertyTypeRequiredDescription
packageObjectPackage details

InstallPackageRequest

Install package request

Properties

PropertyTypeRequiredDescription
manifestObjectPackage manifest to install
settingsRecord<string, any>optionalUser-provided settings at install time
enableOnInstallbooleanoptionalWhether to enable immediately after install
platformVersionstringoptionalCurrent platform version for compatibility verification

InstallPackageResponse

Install package response

Properties

PropertyTypeRequiredDescription
packageObjectInstalled package details
messagestringoptionalInstallation status message
dependencyResolutionObjectoptionalDependency resolution result from install analysis

InstalledPackage

Installed package with runtime lifecycle state

Properties

PropertyTypeRequiredDescription
manifestObjectFull package manifest
statusEnum<'installed' | 'disabled' | 'installing' | 'upgrading' | 'uninstalling' | 'error'>optionalPackage state: installed, disabled, installing, upgrading, uninstalling, or error
enabledbooleanoptionalWhether the package is currently enabled
installedAtstringoptionalInstallation timestamp
updatedAtstringoptionalLast update timestamp
installedVersionstringoptionalCurrently installed version for quick access
previousVersionstringoptionalVersion before the last upgrade
statusChangedAtstringoptionalStatus change timestamp
errorMessagestringoptionalError message when status is error
settingsRecord<string, any>optionalUser-provided configuration settings
upgradeHistoryObject[]optionalVersion upgrade history
registeredNamespacesstring[]optionalNamespace prefixes registered by this package

ListPackagesRequest

List packages request

Properties

PropertyTypeRequiredDescription
statusEnum<'installed' | 'disabled' | 'installing' | 'upgrading' | 'uninstalling' | 'error'>optionalFilter by package status
typeEnum<'plugin' | 'ui' | 'driver' | 'server' | 'app' | 'theme' | 'agent' | 'objectql' | 'module' | 'gateway' | 'adapter'>optionalFilter by package type
enabledbooleanoptionalFilter by enabled state

ListPackagesResponse

List packages response

Properties

PropertyTypeRequiredDescription
packagesObject[]List of installed packages
totalnumberTotal package count

NamespaceConflictError

Namespace collision error during installation

Properties

PropertyTypeRequiredDescription
typestringError type
requestedNamespacestringRequested namespace
conflictingPackageIdstringConflicting package ID
conflictingPackageNamestringConflicting package display name
suggestionstringoptionalSuggested alternative namespace

NamespaceRegistryEntry

Namespace ownership entry in the registry

Properties

PropertyTypeRequiredDescription
namespacestringNamespace prefix
packageIdstringOwning package ID
registeredAtstringRegistration timestamp
statusEnum<'active' | 'disabled' | 'reserved'>Namespace status

PackageStatusEnum

Package installation status

Allowed Values

  • installed
  • disabled
  • installing
  • upgrading
  • uninstalling
  • error

UninstallPackageRequest

Uninstall package request

Properties

PropertyTypeRequiredDescription
idstringPackage ID to uninstall

UninstallPackageResponse

Uninstall package response

Properties

PropertyTypeRequiredDescription
idstringUninstalled package ID
successbooleanWhether uninstall succeeded
messagestringoptionalUninstall status message

On this page