ObjectStackObjectStack

Dependency Resolution

Dependency Resolution protocol schemas

Dependency Resolution Protocol

Defines schemas for runtime dependency resolution when installing,

upgrading, or managing packages. Provides a standardized way to

express dependency conflicts, resolution results, and installation order.

Architecture Alignment

  • npm: Dependency tree resolution with conflict detection

  • Helm: Dependency management with version constraints

  • Salesforce: Package dependency validation at install time

Resolution Flow


1. Parse manifest.dependencies (SemVer ranges)

2. Check installed packages registry

3. Resolve each dependency → satisfied | needs_install | needs_upgrade | conflict

4. Detect circular dependencies

5. Compute topological install order

6. Return resolution result with required actions

Source: packages/spec/src/kernel/dependency-resolution.zod.ts

TypeScript Usage

import { DependencyResolutionResult, DependencyStatusEnum, RequiredAction, ResolvedDependency } from '@objectstack/spec/kernel';
import type { DependencyResolutionResult, DependencyStatusEnum, RequiredAction, ResolvedDependency } from '@objectstack/spec/kernel';

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

DependencyResolutionResult

Complete dependency resolution result

Properties

PropertyTypeRequiredDescription
dependenciesObject[]Resolution result for each dependency
canProceedbooleanWhether installation can proceed
requiredActionsObject[]Actions required before proceeding
installOrderstring[]Topologically sorted package IDs for installation
circularDependenciesstring[][]optionalCircular dependency chains detected (e.g. [["A", "B", "A"]])

DependencyStatusEnum

Resolution status for a dependency

Allowed Values

  • satisfied
  • needs_install
  • needs_upgrade
  • conflict

RequiredAction

Action required before installation can proceed

Properties

PropertyTypeRequiredDescription
typeEnum<'install' | 'upgrade' | 'confirm_conflict'>Type of action required
packageIdstringTarget package identifier
descriptionstringHuman-readable action description

ResolvedDependency

Resolution result for a single dependency

Properties

PropertyTypeRequiredDescription
packageIdstringDependency package identifier
requiredRangestringSemVer range required (e.g. "^2.0.0")
resolvedVersionstringoptionalActual version resolved from registry
installedVersionstringoptionalCurrently installed version
statusEnum<'satisfied' | 'needs_install' | 'needs_upgrade' | 'conflict'>Resolution status
conflictReasonstringoptionalExplanation of the conflict

On this page