FDOInterface is the TypeScript interface that describes the full public contract for FDO plugins. When you extend FDO_SDK, your class is expected to satisfy this interface. You can also use FDOInterface directly for type-checking purposes.
Complete example
FDOInterface
Methods
init() — required
init() — required
void.Throwing from init() causes the host to receive a failure payload with an error message.render() — required
render() — required
Promise causes a runtime error.The host renders the returned string inside a sandboxed iframe.renderOnLoad() — optional
renderOnLoad() — optional
FDO_SDK) returns '() => {}'.declareCapabilities() — optional
declareCapabilities() — optional
PluginMetadata
metadata property to your plugin class to identify it to the FDO host. The SDK validates metadata shape at runtime.
Fields
Optional unique identifier for your plugin. When provided, the SDK uses this directly as the plugin’s storage scope and log scope (slugified). When omitted, the SDK derives an identifier from
author and name.Human-readable display name for your plugin.
Plugin version. Use semantic versioning (
major.minor.patch).Plugin author or organization name.
Short description of what the plugin does. Displayed in the FDO plugin browser.
BlueprintJS v6 icon name to use for the plugin in the FDO UI.
The
icon field must be a valid BlueprintJS v6 icon name (e.g., "cube", "dashboard", "code", "cog"). The SDK validates this at runtime using the built-in isBlueprintV6IconName utility. An invalid icon name causes metadata validation to fail.PluginCapability
PluginCapability is the union type of all capability strings that the FDO host can grant to your plugin. Capabilities gate access to privileged SDK features.
| Capability | Description |
|---|---|
"storage.json" | Enables the persistent "json" store via PluginRegistry.useStore("json"). |
"sudo.prompt" | Allows the plugin to prompt the user for elevated (sudo) credentials. |
"system.hosts.write" | Allows the plugin to request host-file modifications via privileged actions. |
"system.process.exec" | Allows the plugin to request process execution via privileged actions. |
`system.fs.scope.${string}` | Scoped filesystem access. The scope string identifies the allowed directory prefix. |
`system.process.scope.${string}` | Scoped process execution. The scope string identifies the allowed command or tool. |
PluginHandler
PluginRegistry.registerHandler(). Handlers may be synchronous or asynchronous.
The payload sent by the UI or host. Type it with a generic if you know the shape.
TOutput | Promise<TOutput> — the handler’s result, which the SDK returns to the caller.
QuickAction
QuickAction from defineQuickActions() in your plugin class (using the QuickActionMixin).
Display name for the quick action.
The handler name to invoke when the user selects this quick action.
Optional secondary description shown beneath the action name.
Optional BlueprintJS v6 icon name for the action entry.
The
icon field in QuickAction must be a valid BlueprintJS v6 icon name if provided. Pass the same icon names you use in PluginMetadata.icon.SidePanelConfig
SidePanelConfig from defineSidePanel() in your plugin class (using the SidePanelMixin).
BlueprintJS v6 icon name for the side panel entry in the navigation rail.
Display label for the side panel entry.
The
icon field must be a valid BlueprintJS v6 icon name. The FDO host validates this when rendering the navigation rail.