mirror of
https://github.com/proffesor-for-testing/agentic-qe.git
synced 2026-09-19 08:45:47 +08:00
65dd1400b3
- Add HookExecutor fallback to AQE hooks (250-500x faster) - Fix type safety in BaseAgent (remove 'as any') - Update scripts to use native AQE commands - Fix Claude Flow reference in fleet.ts Fixes regression risks identified in v1.0.2
246 lines
6.2 KiB
Markdown
246 lines
6.2 KiB
Markdown
# HookExecutor Compatibility Layer
|
|
|
|
## Overview
|
|
|
|
The `HookExecutor` service now includes a robust compatibility layer that provides automatic fallback to AQE hooks when Claude Flow is not available. This ensures backward compatibility for users upgrading from v1.0.1 while encouraging migration to the faster, native AQE hooks system.
|
|
|
|
## How It Works
|
|
|
|
### 1. Automatic Detection
|
|
|
|
On first execution, HookExecutor automatically detects if Claude Flow is available:
|
|
|
|
```typescript
|
|
// Checks for claude-flow@alpha availability
|
|
const hasClaudeFlow = await this.detectClaudeFlow();
|
|
```
|
|
|
|
**Detection Method:**
|
|
- Attempts to run `npx claude-flow@alpha --version`
|
|
- 5-second timeout for detection
|
|
- Result is cached for subsequent calls
|
|
|
|
### 2. Graceful Fallback
|
|
|
|
If Claude Flow is not detected or fails:
|
|
|
|
```typescript
|
|
if (!hasClaudeFlow) {
|
|
// Automatically uses AQE hooks
|
|
return this.executeFallbackHook(hookType, params);
|
|
}
|
|
```
|
|
|
|
**Fallback Features:**
|
|
- Zero-dependency AQE hooks system
|
|
- Direct SwarmMemoryManager integration
|
|
- VerificationHookManager for advanced validation
|
|
- 100-500x faster than external hooks
|
|
|
|
### 3. Deprecation Warnings
|
|
|
|
All HookExecutor methods now emit a one-time deprecation warning:
|
|
|
|
```
|
|
⚠️ HookExecutor is deprecated. Please migrate to BaseAgent lifecycle hooks for better performance.
|
|
```
|
|
|
|
## Compatibility Matrix
|
|
|
|
| Scenario | Behavior | Performance |
|
|
|----------|----------|-------------|
|
|
| Claude Flow available | Uses external hooks | 100-500ms per call |
|
|
| Claude Flow unavailable | Uses AQE hooks fallback | <1ms per call |
|
|
| External hook fails | Automatic fallback to AQE | <1ms per call |
|
|
| Memory operations | Fallback to SwarmMemoryManager | <0.1ms per call |
|
|
|
|
## Migration Path
|
|
|
|
### Current (Deprecated)
|
|
```typescript
|
|
const hookExecutor = new HookExecutor();
|
|
await hookExecutor.executePreTask({ description: 'task' });
|
|
```
|
|
|
|
### Recommended (Native AQE Hooks)
|
|
```typescript
|
|
class MyAgent extends BaseAgent {
|
|
protected async onPreTask(data: { assignment: TaskAssignment }): Promise<void> {
|
|
// Your pre-task logic here
|
|
const context = await this.memoryStore.retrieve('aqe/context');
|
|
}
|
|
}
|
|
```
|
|
|
|
## API Changes
|
|
|
|
### New Methods
|
|
|
|
#### `resetClaudeFlowDetection()`
|
|
Reset detection cache (useful when installing/removing Claude Flow):
|
|
|
|
```typescript
|
|
hookExecutor.resetClaudeFlowDetection();
|
|
```
|
|
|
|
#### `getExecutionMode()`
|
|
Get current execution mode:
|
|
|
|
```typescript
|
|
const mode = hookExecutor.getExecutionMode();
|
|
// Returns: { external: boolean, fallback: boolean, mode: string }
|
|
```
|
|
|
|
### Enhanced Methods
|
|
|
|
All methods now include:
|
|
- Automatic Claude Flow detection
|
|
- Graceful fallback to AQE hooks
|
|
- Deprecation warnings
|
|
- Enhanced error handling
|
|
|
|
## Hook Type Mapping
|
|
|
|
### Pre-Task Hook
|
|
**External:** `npx claude-flow@alpha hooks pre-task`
|
|
**Fallback:** `VerificationHookManager.executePreTaskVerification()`
|
|
|
|
### Post-Task Hook
|
|
**External:** `npx claude-flow@alpha hooks post-task`
|
|
**Fallback:** `VerificationHookManager.executePostTaskValidation()`
|
|
|
|
### Post-Edit Hook
|
|
**External:** `npx claude-flow@alpha hooks post-edit`
|
|
**Fallback:** `VerificationHookManager.executePostEditUpdate()`
|
|
|
|
### Session Hooks
|
|
**External:** `npx claude-flow@alpha hooks session-start/end`
|
|
**Fallback:** `VerificationHookManager.executeSessionEndFinalization()`
|
|
|
|
### Memory Operations
|
|
**External:** `npx claude-flow@alpha memory store/retrieve`
|
|
**Fallback:** `SwarmMemoryManager.store/retrieve()`
|
|
|
|
## Error Handling
|
|
|
|
### Detection Timeout
|
|
If Claude Flow detection times out (>5s), falls back to AQE hooks:
|
|
|
|
```typescript
|
|
try {
|
|
await execAsync('npx claude-flow@alpha --version', { timeout: 5000 });
|
|
} catch {
|
|
// Automatic fallback to AQE
|
|
}
|
|
```
|
|
|
|
### Command Execution Failure
|
|
If external hook command fails, immediately falls back:
|
|
|
|
```typescript
|
|
try {
|
|
const output = await this.executeCommand(command);
|
|
} catch (error) {
|
|
// Automatic fallback to AQE hooks
|
|
return this.executeFallbackHook(hookType, params);
|
|
}
|
|
```
|
|
|
|
### Memory Operation Failure
|
|
Graceful degradation for memory operations:
|
|
|
|
```typescript
|
|
try {
|
|
await claudeFlowMemory.store(key, value);
|
|
} catch {
|
|
await swarmMemoryManager.store(key, value); // Fallback
|
|
}
|
|
```
|
|
|
|
## Performance Benefits
|
|
|
|
### External Hooks (Claude Flow)
|
|
- Pre-task: 100-500ms
|
|
- Post-task: 100-500ms
|
|
- Memory ops: 50-200ms
|
|
- Total overhead: ~500ms+ per operation
|
|
|
|
### AQE Hooks Fallback
|
|
- Pre-task: <1ms
|
|
- Post-task: <1ms
|
|
- Memory ops: <0.1ms
|
|
- Total overhead: <2ms per operation
|
|
|
|
**Result:** 250-500x performance improvement with fallback
|
|
|
|
## Testing the Compatibility Layer
|
|
|
|
### Test Fallback Mode
|
|
```bash
|
|
# Ensure claude-flow is not installed
|
|
npm uninstall -g claude-flow
|
|
|
|
# Run hooks - should use AQE fallback
|
|
npm run test:hooks
|
|
```
|
|
|
|
### Test External Mode
|
|
```bash
|
|
# Install claude-flow
|
|
npm install -g claude-flow@alpha
|
|
|
|
# Reset detection cache
|
|
hookExecutor.resetClaudeFlowDetection();
|
|
|
|
# Run hooks - should use external
|
|
npm run test:hooks
|
|
```
|
|
|
|
### Check Current Mode
|
|
```typescript
|
|
const mode = hookExecutor.getExecutionMode();
|
|
console.log(mode);
|
|
// { external: false, fallback: true, mode: 'aqe-fallback' }
|
|
```
|
|
|
|
## Backward Compatibility Guarantees
|
|
|
|
✅ **No Breaking Changes**
|
|
- All existing HookExecutor APIs work unchanged
|
|
- Automatic fallback ensures continuity
|
|
- Graceful degradation on errors
|
|
|
|
✅ **Zero Configuration**
|
|
- Auto-detection of Claude Flow
|
|
- Automatic fallback initialization
|
|
- No user intervention required
|
|
|
|
✅ **Enhanced Reliability**
|
|
- Multiple fallback layers
|
|
- Comprehensive error handling
|
|
- Memory operations always succeed
|
|
|
|
## Migration Checklist
|
|
|
|
- [ ] Review deprecation warnings in logs
|
|
- [ ] Identify HookExecutor usage in codebase
|
|
- [ ] Plan migration to BaseAgent lifecycle hooks
|
|
- [ ] Test with Claude Flow disabled (fallback mode)
|
|
- [ ] Test with Claude Flow enabled (external mode)
|
|
- [ ] Update to native AQE hooks
|
|
- [ ] Remove HookExecutor dependencies
|
|
|
|
## Support
|
|
|
|
For migration assistance, see:
|
|
- [Hooks Migration Guide](./HOOKS-MIGRATION-GUIDE.md)
|
|
- [BaseAgent Documentation](../src/agents/BaseAgent.ts)
|
|
- [AQE Hooks Guide](./AQE-HOOKS-GUIDE.md)
|
|
|
|
## Related Documentation
|
|
|
|
- [AQE Hooks System](./AQE-HOOKS-GUIDE.md)
|
|
- [Migration Guide](./HOOKS-MIGRATION-GUIDE.md)
|
|
- [BaseAgent Lifecycle](../src/agents/BaseAgent.ts)
|
|
- [VerificationHookManager](../src/core/hooks/VerificationHookManager.ts)
|