ObjectStackObjectStack

Package Registry

Package Registry protocol schemas

Package Registry Protocol

Defines the runtime state and lifecycle operations for installed packages.

Key Distinction: Package vs App

  • Package (Manifest): The unit of installation — a deployable artifact containing

metadata (objects, actions, flows, etc.) and optionally one or more Apps.

  • App (AppSchema): A UI navigation shell defined inside a package.

A package may contain:

  • Zero apps (pure functionality plugin, e.g. a storage driver)

  • One app (typical business application)

  • Multiple apps (suite of applications)

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
enableOnInstallbooleanWhether 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'>Package state: installed, disabled, installing, upgrading, uninstalling, or error
enabledbooleanWhether 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