claude-flow
Version:
Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration
93 lines • 2.29 kB
TypeScript
/**
* Plugin Types - ADR-004 Implementation
*
* Type definitions for the plugin system.
*
* @module v3/shared/plugins/types
*/
import type { HookRegistry } from '../hooks/index.js';
/**
* Plugin configuration base
*/
export interface PluginConfig {
enabled: boolean;
[key: string]: unknown;
}
/**
* Plugin context provided during initialization
*/
export interface PluginContext {
hooks?: HookRegistry;
services?: Record<string, unknown>;
config?: Record<string, unknown>;
}
/**
* Plugin lifecycle events
*/
export type PluginEvent = 'initialized' | 'shutdown' | 'error';
/**
* Plugin event handler
*/
export type PluginEventHandler = (event: PluginEvent, data?: unknown) => void;
/**
* Claude Flow Plugin Interface
*
* All plugins must implement this interface.
*/
export interface ClaudeFlowPlugin {
/** Unique plugin identifier */
readonly id: string;
/** Human-readable name */
readonly name: string;
/** Plugin version */
readonly version: string;
/** Plugin description */
readonly description: string;
/** Dependencies on other plugins */
readonly dependencies?: string[];
/**
* Initialize the plugin
* @param context Plugin context with hooks and services
*/
initialize(context: PluginContext): Promise<void>;
/**
* Shutdown the plugin
*/
shutdown(): Promise<void>;
/**
* Optional event handler
*/
onEvent?: PluginEventHandler;
}
/**
* Plugin metadata
*/
export interface PluginMetadata {
id: string;
name: string;
version: string;
description: string;
author?: string;
license?: string;
homepage?: string;
dependencies?: string[];
}
/**
* Plugin registry
*/
export interface IPluginRegistry {
register(plugin: ClaudeFlowPlugin): void;
unregister(pluginId: string): void;
get(pluginId: string): ClaudeFlowPlugin | undefined;
getAll(): ClaudeFlowPlugin[];
isRegistered(pluginId: string): boolean;
}
/**
* Plugin loader interface
*/
export interface IPluginLoader {
loadFromPath(path: string): Promise<ClaudeFlowPlugin>;
loadFromPackage(packageName: string): Promise<ClaudeFlowPlugin>;
loadBuiltin(pluginId: string): Promise<ClaudeFlowPlugin>;
}
//# sourceMappingURL=types.d.ts.map