UNPKG

chittycan

Version:

Your completely autonomous network that grows with you - DNA ownership platform with encrypted vaults, PDX portability, and ChittyFoundation governance

104 lines 2.76 kB
/** * Plugin System for ChittyTracker * Allows dynamic loading of extensions */ import { Config } from "./config.js"; export interface PluginMetadata { name: string; version: string; description: string; author?: string; homepage?: string; } export interface RemoteTypeDefinition { type: string; name?: string; description?: string; schema?: Record<string, any>; configFields?: Array<{ name: string; description: string; required: boolean; sensitive?: boolean; default?: any; }>; validate?: (config: any) => boolean | string; } export interface CommandDefinition { name: string; description: string; handler?: (args: any, config: Config) => Promise<void> | void; subcommands?: Record<string, { description: string; handler: (args: any, config: Config) => Promise<void> | void; options?: Record<string, any>; }>; options?: Record<string, any>; } export interface ChittyPlugin { metadata: PluginMetadata; /** Remote types this plugin provides */ remoteTypes?: RemoteTypeDefinition[]; /** Commands this plugin adds */ commands?: CommandDefinition[]; /** Initialize plugin */ init?(config: Config): Promise<void>; /** Called when plugin is installed */ onInstall?(): Promise<void>; /** Called when plugin is uninstalled */ onUninstall?(): Promise<void>; /** Called when plugin is enabled */ onEnable?(): Promise<void>; /** Called when plugin is disabled */ onDisable?(): Promise<void>; } export declare class PluginLoader { private plugins; private config; constructor(config: Config); /** * Load a plugin from a module path */ loadPlugin(modulePath: string): Promise<ChittyPlugin>; /** * Load all plugins from config */ loadAll(): Promise<void>; /** * Get a loaded plugin */ getPlugin(name: string): ChittyPlugin | undefined; /** * Get all loaded plugins */ getAllPlugins(): ChittyPlugin[]; /** * Get all commands from all plugins */ getAllCommands(): CommandDefinition[]; /** * Get all remote types from all plugins */ getAllRemoteTypes(): RemoteTypeDefinition[]; /** * Validate if an object is a valid plugin */ private isValidPlugin; /** * Install a plugin */ installPlugin(name: string): Promise<void>; /** * Uninstall a plugin */ uninstallPlugin(name: string): Promise<void>; /** * Enable a plugin */ enablePlugin(name: string): Promise<void>; /** * Disable a plugin */ disablePlugin(name: string): Promise<void>; } //# sourceMappingURL=plugin.d.ts.map