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
TypeScript
/**
* 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