Interface: ExtensionManifest
Makaio Framework / contracts/extension / ExtensionManifest
Interface: ExtensionManifest
Section titled “Interface: 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.
Extended by
Section titled “Extended by”Properties
Section titled “Properties”browser?
Section titled “browser?”
readonlyoptionalbrowser?: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
Section titled “entrypoint”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.
Example
Section titled “Example”'/extensions/my-extension/browser/index.js'
readonlyoptionalcli?: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.
contributions?
Section titled “contributions?”
readonlyoptionalcontributions?: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.
dependencies?
Section titled “dependencies?”
readonlyoptionaldependencies?: readonlystring[]
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.
displayName
Section titled “displayName”
readonlydisplayName:string
Defined in: ../../../packages/contracts/src/extension/manifest.ts:340
Human-readable display name shown in UI surfaces (e.g. 'Auth Switcher').
readonlyname: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.
provides?
Section titled “provides?”
readonlyoptionalprovides?: readonlyCapabilityToken[]
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.
requires?
Section titled “requires?”
readonlyoptionalrequires?: readonlystring[]
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.
storage?
Section titled “storage?”
readonlyoptionalstorage?:StorageManifest
Defined in: ../../../packages/contracts/src/extension/manifest.ts:382
Storage requirements (migrations) declared by this extension.
surface?
Section titled “surface?”
readonlyoptionalsurface?:"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).
readonlyoptionaltray?:TrayManifest
Defined in: ../../../packages/contracts/src/extension/manifest.ts:373
System tray entry for this extension.
windows?
Section titled “windows?”
readonlyoptionalwindows?: readonlyWindowManifest[]
Defined in: ../../../packages/contracts/src/extension/manifest.ts:371
Windows this extension can open, keyed by WindowManifest.id.