UNPKG

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

243 lines (220 loc) 5.62 kB
/** * @claude-flow/hooks - V3 Hooks System * * Event-driven lifecycle hooks with ReasoningBank learning integration. * * Features: * - Hook registration and execution * - Background daemons for metrics and learning * - Statusline integration * - MCP tool definitions * - V2 compatibility layer * * @packageDocumentation */ // Types export * from './types.js'; // ReasoningBank - Vector-based pattern learning export { ReasoningBank, reasoningBank, type GuidancePattern, type GuidanceResult, type RoutingResult, type ReasoningBankConfig, type ReasoningBankMetrics, } from './reasoningbank/index.js'; // Guidance Provider - Claude-visible output generation export { GuidanceProvider, guidanceProvider, type ClaudeHookOutput, } from './reasoningbank/guidance-provider.js'; // Registry export { HookRegistry, defaultRegistry, registerHook, unregisterHook, } from './registry/index.js'; // Executor export { HookExecutor, defaultExecutor, executeHooks, } from './executor/index.js'; // Daemons export { DaemonManager, MetricsDaemon, SwarmMonitorDaemon, HooksLearningDaemon, defaultDaemonManager, } from './daemons/index.js'; // Statusline export { StatuslineGenerator, createShellStatusline, parseStatuslineData, defaultStatuslineGenerator, } from './statusline/index.js'; // MCP Tools export { hooksMCPTools, getHooksTool, preEditTool, postEditTool, routeTaskTool, metricsTool, preCommandTool, postCommandTool, daemonStatusTool, statuslineTool, type MCPTool, } from './mcp/index.js'; // Official Claude Code Hooks Bridge export { OfficialHooksBridge, V3_TO_OFFICIAL_HOOK_MAP, V3_TOOL_MATCHERS, processOfficialHookInput, outputOfficialHookResult, executeWithBridge, type OfficialHookEvent, type OfficialHookInput, type OfficialHookOutput, } from './bridge/official-hooks-bridge.js'; // Swarm Communication export { SwarmCommunication, swarmComm, type SwarmMessage, type PatternBroadcast, type ConsensusRequest, type TaskHandoff, type SwarmAgentState, type SwarmConfig, } from './swarm/index.js'; // Workers - Cross-platform background workers export { WorkerManager, WorkerPriority, AlertSeverity, WORKER_CONFIGS, DEFAULT_THRESHOLDS, createWorkerManager, workerManager, // Worker factories createPerformanceWorker, createHealthWorker, createSwarmWorker, createGitWorker, createLearningWorker, createADRWorker, createDDDWorker, createSecurityWorker, createPatternsWorker, createCacheWorker, // Types type WorkerConfig, type WorkerResult, type WorkerMetrics, type WorkerManagerStatus, type WorkerHandler, type WorkerAlert, type AlertThreshold, type PersistedWorkerState, type HistoricalMetric, type StatuslineData, } from './workers/index.js'; // Workers - MCP Tools export { workerMCPTools, createWorkerToolHandler, workerRunTool, workerStatusTool, workerAlertsTool, workerHistoryTool, workerStatuslineTool, workerRunAllTool, workerStartTool, workerStopTool, type MCPToolDefinition, type MCPToolResult, } from './workers/mcp-tools.js'; // Workers - Session Integration export { onSessionStart, onSessionEnd, formatSessionStartOutput, generateShellHook, getGlobalManager, setGlobalManager, initializeGlobalManager, type SessionHookConfig, type SessionHookResult, } from './workers/session-hook.js'; // Version export const VERSION = '3.0.0-alpha.1'; /** * Initialize hooks system with default configuration */ export async function initializeHooks(options?: { enableDaemons?: boolean; enableStatusline?: boolean; }): Promise<{ registry: import('./registry/index.js').HookRegistry; executor: import('./executor/index.js').HookExecutor; statusline: import('./statusline/index.js').StatuslineGenerator; }> { const { HookRegistry } = await import('./registry/index.js'); const { HookExecutor } = await import('./executor/index.js'); const { StatuslineGenerator } = await import('./statusline/index.js'); const { DaemonManager, MetricsDaemon, SwarmMonitorDaemon, HooksLearningDaemon } = await import('./daemons/index.js'); const registry = new HookRegistry(); const executor = new HookExecutor(registry); const statusline = new StatuslineGenerator(); // Start daemons if enabled if (options?.enableDaemons !== false) { const daemonManager = new DaemonManager(); const metricsDaemon = new MetricsDaemon(daemonManager); const swarmDaemon = new SwarmMonitorDaemon(daemonManager); const learningDaemon = new HooksLearningDaemon(daemonManager); await Promise.all([ metricsDaemon.start(), swarmDaemon.start(), learningDaemon.start(), ]); } return { registry, executor, statusline }; } /** * Quick hooks execution helper */ export async function runHook( event: import('./types.js').HookEvent, context: Partial<import('./types.js').HookContext> ): Promise<import('./types.js').HookExecutionResult> { const { executeHooks } = await import('./executor/index.js'); return executeHooks(event, context); } /** * Register a new hook with simplified API */ export function addHook( event: import('./types.js').HookEvent, handler: import('./types.js').HookHandler, options?: { priority?: import('./types.js').HookPriority; name?: string; } ): string { const { registerHook: register } = require('./registry/index.js'); const { HookPriority } = require('./types.js'); return register( event, handler, options?.priority ?? HookPriority.Normal, { name: options?.name } ); }