Skip to content

Interface: ExtensionManifest

Makaio Framework


Makaio Framework / contracts/extension / ExtensionManifest

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

Pure-data manifest for a Makaio extension.

Fully serializable and safe to inspect or transmit without executing any extension code. The shell and registry use this to discover extension surfaces (windows, tray, CLI, storage) before deciding whether to initialize them.

MakaioExtension for the executable extension that adds create, typed CLI handlers, and storage registration.

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'

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.


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.


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.


readonly displayName: string

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

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


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.


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.


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.


readonly optional storage?: StorageManifest

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

Storage requirements (migrations) declared by this extension.


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).

readonly optional tray?: TrayManifest

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

System tray entry for this extension.


readonly optional windows?: readonly WindowManifest[]

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

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