Interface: ExtensionUiContribution
Makaio Framework / contracts/extension / ExtensionUiContribution
Interface: ExtensionUiContribution
Section titled “Interface: ExtensionUiContribution”Defined in: ../../../packages/contracts/src/extension/extension-contributions.ts:103
Browser UI contribution surface declared by an extension.
Properties
Section titled “Properties”configComponent?
Section titled “configComponent?”
readonlyoptionalconfigComponent?:ExtensionConfigComponentLoader
Defined in: ../../../packages/contracts/src/extension/extension-contributions.ts:170
Fully custom configuration component loader.
When provided, the schema-driven form is bypassed entirely. Use this for complex UIs where >50% of fields need custom rendering.
Example
Section titled “Example”configComponent: () => import('./ui/CustomConfigPanel.js'),fieldTypes?
Section titled “fieldTypes?”
readonlyoptionalfieldTypes?:Record<string,ExtensionFieldTypeLoader>
Defined in: ../../../packages/contracts/src/extension/extension-contributions.ts:158
Custom field type loaders for schema-driven forms.
Maps field type identifiers to lazy-loaded React components that accept
FormFieldProps. Registered with FormFieldRegistry on extension load.
Example
Section titled “Example”fieldTypes: { 'image-upload': () => import('./ui/ImageUploadField.js'),}pages?
Section titled “pages?”
readonlyoptionalpages?: readonlyPageDeclaration[]
Defined in: ../../../packages/contracts/src/extension/extension-contributions.ts:136
Page declarations for the page registry and optional sidebar navigation.
Pages are registered in the page registry. When mode, level, and
component are provided, the loader also registers the page in the
sidebar navigation (PageDefinitionRegistry).
routes?
Section titled “routes?”
readonlyoptionalroutes?: readonlyMakaioWebUiRoute<unknown,MakaioWebUiActions|undefined>[]
Defined in: ../../../packages/contracts/src/extension/extension-contributions.ts:110
WebUI routes mounted under /extensions/<extension-name>/.
Each route defines a path, an optional data loader, optional action handlers, and a lazy-loaded React component.
tiles?
Section titled “tiles?”
readonlyoptionaltiles?: readonlyTileDeclaration[]
Defined in: ../../../packages/contracts/src/extension/extension-contributions.ts:119
Tile declarations for pane-placeable content.
Tiles are registered with TileRegistry and shown in the “Add Pane”
palette. Each declaration includes metadata, an icon, and platform
renderers.
toolFormatters?
Section titled “toolFormatters?”
readonlyoptionaltoolFormatters?: readonlyToolCallFormatterDeclaration[]
Defined in: ../../../packages/contracts/src/extension/extension-contributions.ts:144
Tool call formatter declarations.
Formatters customize how specific tool calls are rendered in the chat
UI. Registered with ToolCallFormatterRegistry on extension load.
widgets?
Section titled “widgets?”
readonlyoptionalwidgets?: readonlyWidgetDeclaration[]
Defined in: ../../../packages/contracts/src/extension/extension-contributions.ts:127
Widget declarations for small dashboard cards.
Widgets are registered in the global widget catalog. They are NOT pane
content — use tiles for pane-placeable content.