UNPKG

claude-flow

Version:

Enterprise-grade AI agent orchestration with ruv-swarm integration (Alpha Release)

221 lines (194 loc) 6.07 kB
/** * Simplified Verification Hooks * * A simplified version to avoid TypeScript compiler issues */ import { Logger } from '../core/logger.js'; import { agenticHookManager } from '../services/agentic-flow-hooks/index.js'; import type { AgenticHookContext, HookHandlerResult, HookRegistration, WorkflowHookPayload, } from '../services/agentic-flow-hooks/types.js'; const logger = new Logger({ level: 'info', format: 'text', destination: 'console' }, { prefix: 'SimpleVerificationHooks' }); // ===== Simple Types ===== export interface SimpleVerificationConfig { enabled: boolean; logLevel: 'info' | 'debug' | 'warn' | 'error'; } export interface SimpleVerificationResult { success: boolean; message: string; details?: any; } // ===== Simple Verification Hook Manager ===== export class SimpleVerificationHookManager { private config: SimpleVerificationConfig; constructor(config: Partial<SimpleVerificationConfig> = {}) { this.config = { enabled: true, logLevel: 'info', ...config }; if (this.config.enabled) { this.registerSimpleHooks(); } } private registerSimpleHooks(): void { // Simple pre-task hook const preTaskHook: HookRegistration = { id: 'simple-verification-pre-task', type: 'workflow-start', priority: 100, handler: async (payload: WorkflowHookPayload, context: AgenticHookContext): Promise<HookHandlerResult> => { logger.info('🔍 Pre-task verification starting...'); try { const result = await this.runSimpleChecks(payload, context); if (result.success) { logger.info('✅ Pre-task verification passed'); return { continue: true, metadata: { verificationPassed: true, message: result.message } }; } else { logger.warn('⚠️ Pre-task verification failed:', result.message); return { continue: true, // Continue with warnings metadata: { verificationFailed: true, message: result.message } }; } } catch (error) { logger.error('❌ Pre-task verification error:', error); return { continue: true, metadata: { verificationError: true, error: (error as Error).message } }; } } }; // Simple post-task hook const postTaskHook: HookRegistration = { id: 'simple-verification-post-task', type: 'workflow-complete', priority: 90, handler: async (payload: WorkflowHookPayload, context: AgenticHookContext): Promise<HookHandlerResult> => { logger.info('🔍 Post-task verification starting...'); try { const result = await this.runSimpleValidation(payload, context); logger.info(`✅ Post-task verification completed: ${result.message}`); return { continue: true, metadata: { validationComplete: true, success: result.success, message: result.message } }; } catch (error) { logger.error('❌ Post-task verification error:', error); return { continue: true, metadata: { validationError: true, error: (error as Error).message } }; } } }; // Register hooks agenticHookManager.register(preTaskHook); agenticHookManager.register(postTaskHook); logger.info('Simple verification hooks registered successfully'); } private async runSimpleChecks( payload: WorkflowHookPayload, context: AgenticHookContext ): Promise<SimpleVerificationResult> { // Simple environment check const nodeEnv = process.env.NODE_ENV; if (!nodeEnv) { return { success: false, message: 'NODE_ENV environment variable not set', details: { missing: ['NODE_ENV'] } }; } // Simple memory check const memUsage = process.memoryUsage(); const heapUsedMB = memUsage.heapUsed / 1024 / 1024; if (heapUsedMB > 1000) { // More than 1GB return { success: false, message: `High memory usage detected: ${heapUsedMB.toFixed(2)}MB`, details: { memoryUsage: heapUsedMB } }; } return { success: true, message: 'All pre-task checks passed', details: { nodeEnv, memoryUsage: heapUsedMB } }; } private async runSimpleValidation( payload: WorkflowHookPayload, context: AgenticHookContext ): Promise<SimpleVerificationResult> { // Simple validation - check if workflow has state if (!payload.state || Object.keys(payload.state).length === 0) { return { success: false, message: 'Workflow completed with empty state', details: { state: payload.state } }; } // Check for errors in metadata if (payload.error) { return { success: false, message: 'Workflow completed with errors', details: { error: payload.error } }; } return { success: true, message: 'Post-task validation passed', details: { stateKeys: Object.keys(payload.state), timestamp: Date.now() } }; } public getStatus(): any { return { enabled: this.config.enabled, hooksRegistered: this.config.enabled ? 2 : 0, config: this.config }; } public updateConfig(newConfig: Partial<SimpleVerificationConfig>): void { this.config = { ...this.config, ...newConfig }; logger.info('Simple verification configuration updated', this.config); } } // Export singleton instance export const simpleVerificationHookManager = new SimpleVerificationHookManager(); // Initialize logger.info('Simple verification hooks module initialized');