Interface: ExtensionDescriptor
Makaio Framework / contracts / ExtensionDescriptor
Interface: ExtensionDescriptor
Section titled “Interface: 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.
Extends
Section titled “Extends”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'Inherited from
Section titled “Inherited from”
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.
Inherited from
Section titled “Inherited from”config?
Section titled “config?”
readonlyoptionalconfig?: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.
defaults?
Section titled “defaults?”
readonlyoptionaldefaults?:Readonly<Record<string,unknown>>
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.
Inherited from
Section titled “Inherited from”ExtensionManifest.contributions
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.
Inherited from
Section titled “Inherited from”ExtensionManifest.dependencies
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').
Inherited from
Section titled “Inherited from”entrypoints
Section titled “entrypoints”
readonlyentrypoints:ExtensionEntrypoints
Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:126
Convention-based entrypoint stems and enabled-surface flags per runtime surface.
execution?
Section titled “execution?”
readonlyoptionalexecution?:"embedded"|"detached"
Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:132
Handler execution mode.
'embedded'(default) — code isimport()’d into the host process.'detached'— reserved for future: isolated worker_thread.
makaio
Section titled “makaio”
readonlymakaio:object
Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:124
Minimum framework version required (plain SemVer version string).
minVersion
Section titled “minVersion”
readonlyminVersion:string
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.
Inherited from
Section titled “Inherited from”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.
Inherited from
Section titled “Inherited from”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.
Inherited from
Section titled “Inherited from”storage?
Section titled “storage?”
readonlyoptionalstorage?:StorageManifest
Defined in: ../../../packages/contracts/src/extension/manifest.ts:382
Storage requirements (migrations) declared by this extension.
Inherited from
Section titled “Inherited from”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).
Inherited from
Section titled “Inherited from”
readonlyoptionaltray?:TrayManifest
Defined in: ../../../packages/contracts/src/extension/manifest.ts:373
System tray entry for this extension.
Inherited from
Section titled “Inherited from”version
Section titled “version”
readonlyversion:string
Defined in: ../../../packages/contracts/src/extension/extension-descriptor.ts:122
SemVer version of the extension package.
windows?
Section titled “windows?”
readonlyoptionalwindows?: readonlyWindowManifest[]
Defined in: ../../../packages/contracts/src/extension/manifest.ts:371
Windows this extension can open, keyed by WindowManifest.id.