mo-sdk
v1.0.1
Published
Official SDK for building Multimodal Observer plugins
Readme
MO UI SDK
mo-ui-sdk is the official SDK for building UI plugins for the Multimodal Observer (MOo) application.
It provides type-safe interfaces, utilities, and tools to develop plugins fully compatible with the MO UI runtime.
🚀 Features
- Exposes base interfaces, types, and utilities for authoring valid MO UI plugins.
- Includes Vite plugins for seamless React/Electron integration.
- Exposes global types for preload APIs (
window.core). - Provides a CLI to automate plugin packaging and validation, available commands:
create-mop: interactive template generator for new MO plugin projects.build-mop: packages a plugin directory into a.zipfile ready for use in MO.
🛠️ Usage
Importing Public APIs
Import all your base classes, types, and utilities directly from mo for maximum compatibility with the MO platform:
import { PluginBase } from "mo-sdk";
// Or import other base classes, hooks, or utilitiesVite Plugins
You can use the built-in Vite plugin to automatically adapt React imports for the MO UI runtime:
import { viteReactHostImportAdapter } from "mo-sdk/vite-plugins";
export default {
plugins: [
react(),
viteReactHostImportAdapter(),
// ...other plugins
]
};🧩 Exposed Global Types
This SDK declares the types for the window.core API (provided by Electron preload).
You get autocompletion and type safety for:
window.core.fs.readFileSync(...);
window.core.path.join(...);You can also import the types directly:
import type { CoreAPI } from "mo-sdk";🔧 CLI Tools
The SDK provides a command-line tool for packaging your plugin:
create-mop
Start a new MO plugin project using the interactive template generator:
npx create-mop- Prompts you for the essential details and generates a full plugin project structure.
- Includes ready-to-edit
metadata.json, code skeletons, property templates, icon, and locale folders.
build-mop
Package your plugin for MO by running:
npx build-mopThis will:
- Validate your
dist/metadata.jsonand all entry points. - Package all files in
dist/into a versioned.zipin thebuild/directory.
You can customize the source or output directories:
npx build-mop --dist dist --output build