Skip to content

Interface: ExtensionDescriptor

Makaio Framework


Makaio Framework / contracts / ExtensionDescriptor

Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:120

Descriptor for a Makaio extension.

This is the JSON-serializable contract between extension authors and the Makaio runtime. All fields from ExtensionManifest are valid, plus distribution-specific fields for versioning, entry points, and execution. Runtime contribution registration still comes from the imported MakaioExtension; descriptor contributions are only metadata.

readonly optional browser?: object

Defined in: ../../../packages/contracts/src/extension/manifest.ts:388

Browser entry point for this extension. URL path the renderer fetches to load the extension’s UI.

entrypoint: string

URL path the renderer fetches to load the extension’s UI. Must be an absolute path (starts with /). The loader additionally enforces a /extensions/ prefix at runtime as defence-in-depth.

'/extensions/my-extension/browser/index.js'

ExtensionManifest.browser


readonly optional cli?: CliManifest

Defined in: ../../../packages/contracts/src/extension/manifest.ts:380

CLI command contributed by this extension.

On ExtensionManifest this is pure metadata. On MakaioExtension this is widened to ExtensionCliContribution with executable handlers.

ExtensionManifest.cli


readonly optional config?: object

Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:140

Default configuration values for this extension.

Applied when no stored config exists. Keys should match the properties in the extension’s configSchema (declared on its MakaioExtension). The Zod schema’s own .default() values layer on top of these.

readonly optional defaults?: Readonly<Record<string, unknown>>


readonly optional contributions?: ContributionManifest

Defined in: ../../../packages/contracts/src/extension/manifest.ts:398

Adapters and client binaries contributed by this extension.

Discovery-time metadata only — serializable and safe to inspect without loading any extension code. Runtime activation and registration use the executable contribution fields on MakaioExtension; descriptor metadata may mirror those fields for pre-load introspection but is not used as a fallback wiring source.

ExtensionManifest.contributions


readonly optional dependencies?: readonly string[]

Defined in: ../../../packages/contracts/src/extension/manifest.ts:355

Names of other extensions this extension depends on.

The registry ensures dependencies are initialized before this extension. Values are ExtensionManifest.name identifiers.

ExtensionManifest.dependencies


readonly displayName: string

Defined in: ../../../packages/contracts/src/extension/manifest.ts:340

Human-readable display name shown in UI surfaces (e.g. 'Auth Switcher').

ExtensionManifest.displayName


readonly entrypoints: ExtensionEntrypoints

Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:126

Convention-based entrypoint stems and enabled-surface flags per runtime surface.


readonly optional execution?: "embedded" | "detached"

Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:132

Handler execution mode.

  • 'embedded' (default) — code is import()’d into the host process.
  • 'detached' — reserved for future: isolated worker_thread.

readonly makaio: object

Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:124

Minimum framework version required (plain SemVer version string).

readonly minVersion: string


readonly name: string

Defined in: ../../../packages/contracts/src/extension/manifest.ts:338

Unique extension identifier.

Accepts plain identifiers (e.g. 'account-manager') and npm-scoped names (e.g. '@acme/weather-tools'). Used as the primary key in the extension registry and as the top-level CLI command name when no cli override is provided.

ExtensionManifest.name


readonly optional provides?: readonly CapabilityToken[]

Defined in: ../../../packages/contracts/src/extension/manifest.ts:369

Capability tokens this extension provides when active.

Consumers and onboarding surfaces can inspect these declarations to decide whether a capability exists at all before prompting the user to configure it.

ExtensionManifest.provides


readonly optional requires?: readonly string[]

Defined in: ../../../packages/contracts/src/extension/manifest.ts:362

Host-provided environment capability tokens this extension requires.

This is an environment compatibility gate, not an extension-to-extension dependency. Use dependencies for structural extension ordering.

ExtensionManifest.requires


readonly optional storage?: StorageManifest

Defined in: ../../../packages/contracts/src/extension/manifest.ts:382

Storage requirements (migrations) declared by this extension.

ExtensionManifest.storage


readonly optional surface?: "any" | "interactive" | "headless"

Defined in: ../../../packages/contracts/src/extension/manifest.ts:348

Execution surface the extension targets.

  • 'interactive' — requires a UI shell (e.g., Electron renderer).
  • 'headless' — suitable for daemon or CLI-only runtimes.
  • 'any' — works in any surface (default when omitted).

ExtensionManifest.surface


readonly optional tray?: TrayManifest

Defined in: ../../../packages/contracts/src/extension/manifest.ts:373

System tray entry for this extension.

ExtensionManifest.tray


readonly version: string

Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:122

SemVer version of the extension package.


readonly optional windows?: readonly WindowManifest[]

Defined in: ../../../packages/contracts/src/extension/manifest.ts:371

Windows this extension can open, keyed by WindowManifest.id.

ExtensionManifest.windows