Plugin Architecture
Otso plugins extend imports, publishers, and enrichers. A plugin is a Node module exporting a manifest and hooks.
Discovery and manifest
Section titled “Discovery and manifest”Plugins are discovered via package.json using the "otso" field or by loading from the local plugins/ directory.
Example manifest:
export const manifest = { name: 'example', version: '1.0.0', hooks: ['import', 'publish']};Minimal plugin interface
Section titled “Minimal plugin interface”import type { ImportHook } from 'otso';
export const importHook: ImportHook = async (ctx) => { // fetch data and yield events};Hook functions receive a context with logging, storage, and config helpers.
Examples and testing
Section titled “Examples and testing”- Use
pnpm linkduring development. - Provide fixtures for APIs and run
pnpm testinside your plugin repo. - See
@otso/import-githubfor a real world example.