UNPKG

ai-debug-local-mcp

Version:

🎯 ENHANCED AI GUIDANCE v4.1.2: Dramatically improved tool descriptions help AI users choose the right tools instead of 'close enough' options. Ultra-fast keyboard automation (10x speed), universal recording, multi-ecosystem debugging support, and compreh

250 lines • 7.15 kB
/** * TDD Debug Engine - Revolutionary Test-Runtime Bridging * * Implements Cycle 30 #1 priority: TDD automation with systematic debugging integration * Building on proven MCP integration success (Memory MCP + Sequential Thinking MCP) */ import { EventEmitter } from 'events'; import { MemoryAwareSessionManager } from './utils/memory-aware-session-manager.js'; import StartupAwareMemoryManager from './utils/startup-aware-memory-manager.js'; import { ToolExecutionSafetyWrapper } from './utils/tool-execution-safety.js'; export interface TDDSession { sessionId: string; testFile: string; implementationFile?: string; framework: 'jest' | 'flutter' | 'exunit' | 'pytest' | 'unknown'; coverageBaseline?: CoverageData; testBaseline?: TestResults; redGreenRefactorState: 'red' | 'green' | 'refactor'; startTime: number; lastResults?: TestExecutionResults; eventEmitter?: EventEmitter; } export interface TestExecutionResults { success: boolean; testResults: TestResults; coverageData?: CoverageData; runtimeBehavior?: RuntimeBehaviorData; regressionAnalysis?: RegressionAnalysis; timestamp: number; executionTime: number; } export interface TestResults { totalTests: number; passedTests: number; failedTests: number; skippedTests: number; testSuites: TestSuite[]; failureDetails?: FailureDetail[]; } export interface TestSuite { name: string; tests: Test[]; passed: number; failed: number; duration: number; } export interface Test { name: string; status: 'passed' | 'failed' | 'skipped'; duration: number; error?: string; assertions?: AssertionResult[]; } export interface AssertionResult { description: string; expected: any; actual: any; passed: boolean; runtimeValidation?: { behaviorMatched: boolean; actualRuntimeValue: any; discrepancyReason?: string; }; } export interface CoverageData { linesCovered: number; totalLines: number; percentage: number; branchesCovered: number; totalBranches: number; branchPercentage: number; filesCovered: { [filename: string]: FileCoverage; }; } export interface FileCoverage { lines: { [lineNumber: number]: number; }; branches: { [branchId: string]: number; }; functions: { [functionName: string]: number; }; } export interface RuntimeBehaviorData { functionCalls: FunctionCall[]; stateChanges: StateChange[]; networkRequests: NetworkRequest[]; performanceMetrics: PerformanceMetrics; memoryUsage: MemoryMetrics; } export interface FunctionCall { functionName: string; parameters: any[]; returnValue: any; executionTime: number; stackTrace?: string[]; } export interface StateChange { componentName: string; propertyName: string; oldValue: any; newValue: any; timestamp: number; } export interface NetworkRequest { url: string; method: string; status: number; duration: number; requestBody?: any; responseBody?: any; } export interface PerformanceMetrics { renderTime?: number; interactionLatency?: number; memoryDelta: number; cpuUsage?: number; } export interface MemoryMetrics { heapUsed: number; heapTotal: number; external: number; arrayBuffers: number; } export interface RegressionAnalysis { hasRegression: boolean; performanceRegression?: { metric: string; baselineValue: number; currentValue: number; percentageChange: number; }; coverageRegression?: { baselineCoverage: number; currentCoverage: number; coverageDelta: number; }; testRegression?: { previouslyPassingTests: string[]; newFailures: FailureDetail[]; }; recommendations: string[]; } export interface FailureDetail { testName: string; suiteName: string; error: string; stackTrace?: string; expectedVsActual?: { expected: any; actual: any; diff?: string; }; runtimeDiscrepancy?: { testAssertion: string; runtimeBehavior: string; explanation: string; }; } export interface TDDDebugOptions { testFile: string; implementationFile?: string; autoValidate?: boolean; trackRedGreenRefactor?: boolean; enableCoverage?: boolean; enableRuntimeBridging?: boolean; regressionDetection?: boolean; frameworkHint?: 'jest' | 'flutter' | 'exunit' | 'pytest'; enableStreaming?: boolean; } export declare class TDDDebugEngine { private sessionManager; private memoryManager; private toolSafety; private tddSessions; private runningTests; constructor(sessionManager: MemoryAwareSessionManager, memoryManager: StartupAwareMemoryManager, toolSafety: ToolExecutionSafetyWrapper); /** * Enable TDD Mode - Revolutionary Test-Runtime Bridging */ enableTDDMode(options: TDDDebugOptions): Promise<TDDSession>; /** * Run Tests with Coverage - Core TDD automation tool */ runTestsWithCoverage(sessionId: string, options?: { testPattern?: string; generateBaseline?: boolean; enableRuntimeBridging?: boolean; }): Promise<TestExecutionResults>; /** * Test Impact Analysis - Detect refactoring breakage */ testImpactAnalysis(sessionId: string, changes: { modifiedFiles: string[]; testScope?: 'affected' | 'all' | 'smart'; }): Promise<{ impactedTests: string[]; riskAssessment: 'low' | 'medium' | 'high'; recommendedTestScope: string[]; executionStrategy: string; }>; /** * Regression Detection - Automated regression analysis */ regressionDetection(sessionId: string): Promise<RegressionAnalysis>; /** * Private implementation methods */ private detectTestFramework; private findFlutterProjectRoot; private executeTests; private executeJestTests; private executeFlutterTests; private executeExUnitTests; private parseExUnitResults; private executePytestTests; private parseJestResults; private parseJestTextOutput; private parseFlutterTestOutput; private parseFlutterJsonResults; private analyzeCoverage; private analyzeJestCoverage; private analyzeFlutterCoverage; private captureRuntimeBehavior; private updateTDDState; private analyzeTestImpact; private assessChangeRisk; private recommendTestScope; private generateExecutionStrategy; private analyzeTestRegression; private analyzeCoverageRegression; private analyzePerformanceRegression; private generateRegressionRecommendations; /** * Clean up TDD session and free resources */ closeTDDSession(sessionId: string): Promise<void>; /** * Get TDD session status and metrics */ getTDDSessionStatus(sessionId: string): TDDSession | undefined; /** * List all active TDD sessions */ getActiveTDDSessions(): TDDSession[]; } //# sourceMappingURL=tdd-debug-engine.d.ts.map