woaru
Version:
Universal Project Setup Autopilot - Analyze and automatically configure development tools for ANY programming language
282 lines • 10.1 kB
TypeScript
import { AIReviewConfig, CodeContext, MultiLLMReviewResult, PromptTemplate } from '../types/ai-review';
/**
* AIReviewAgent - Multi-LLM powered code review and analysis system
*
* The AIReviewAgent provides sophisticated AI-powered code review capabilities by leveraging
* multiple Large Language Model (LLM) providers simultaneously. It performs comprehensive
* code analysis, identifies potential issues, suggests improvements, and provides detailed
* findings with actionable recommendations. The agent supports multiple AI providers
* including OpenAI, Anthropic, and others, enabling robust and diverse code analysis.
*
* Key features:
* - Multi-LLM analysis for comprehensive code reviews
* - Hook system integration for extensible workflows
* - Usage tracking and performance monitoring
* - Provider-specific configuration and failover
* - Internationalization support for multilingual analysis
* - Secure API communication with error handling
*
* Supported analysis types:
* - Code quality assessment and best practices
* - Bug detection and potential security issues
* - Performance optimization recommendations
* - Architecture and design pattern suggestions
* - Maintainability and readability improvements
* - Language-specific idioms and conventions
*
* @example
* ```typescript
* // Configure AI review with multiple providers
* const config: AIReviewConfig = {
* providers: [
* { name: 'openai', enabled: true, apiKey: 'your-openai-key' },
* { name: 'anthropic', enabled: true, apiKey: 'your-anthropic-key' }
* ],
* maxTokens: 4000,
* temperature: 0.1
* };
*
* const reviewAgent = new AIReviewAgent(config);
*
* // Perform code review
* const codeContext: CodeContext = {
* fileName: 'UserService.ts',
* language: 'typescript',
* framework: 'express',
* projectType: 'web-api'
* };
*
* const result = await reviewAgent.performMultiLLMReview(sourceCode, codeContext);
*
* // Process results from multiple providers
* result.results.forEach(providerResult => {
* console.log(`${providerResult.provider} findings:`);
* providerResult.findings.forEach(finding => {
* console.log(`- ${finding.type}: ${finding.message}`);
* console.log(` Severity: ${finding.severity}`);
* if (finding.suggestion) {
* console.log(` Suggestion: ${finding.suggestion}`);
* }
* });
* });
* ```
*
* @example
* ```typescript
* // Advanced usage with custom prompt templates
* const customPrompts = {
* security: {
* name: 'Security Review',
* description: 'Focus on security vulnerabilities',
* system_prompt: 'You are a security expert reviewing code for vulnerabilities...',
* user_prompt: 'Analyze this code for security issues: {{code}}'
* }
* };
*
* const reviewAgent = new AIReviewAgent(config, customPrompts);
*
* // Perform focused security review
* const securityResult = await reviewAgent.performMultiLLMReview(
* authenticationCode,
* { fileName: 'auth.ts', language: 'typescript', focus: 'security' }
* );
*
* // Handle review completion with metrics
* console.log(`Review completed with ${securityResult.results.length} providers`);
* console.log(`Total findings: ${securityResult.totalFindings}`);
* console.log(`Success rate: ${securityResult.successRate}%`);
* ```
*
* @since 1.0.0
*/
export declare class AIReviewAgent {
private config;
private promptTemplate;
private promptTemplates;
private enabledProviders;
constructor(config: AIReviewConfig, promptTemplates?: Record<string, PromptTemplate>);
/**
* Performs comprehensive multi-LLM code review analysis with hook integration
*
* Executes parallel code analysis using all enabled LLM providers to generate
* comprehensive code review findings. Each provider analyzes the code independently,
* and results are aggregated with consensus scoring and conflict resolution.
* The method integrates with the WOARU Hook System for extensible analysis workflows
* and provides detailed performance metrics.
*
* Analysis workflow:
* 1. **Pre-analysis hooks**: Context preparation and provider validation
* 2. **Parallel LLM requests**: Simultaneous analysis across all enabled providers
* 3. **Response processing**: JSON parsing, validation, and finding extraction
* 4. **Result aggregation**: Consensus building and confidence scoring
* 5. **Post-analysis hooks**: Result validation and metrics collection
* 6. **Error handling**: Graceful provider failures with partial results
*
* Features:
* - Parallel provider execution for optimal performance
* - Automatic retry logic with exponential backoff
* - Response validation and malformed data handling
* - Usage tracking for cost and performance monitoring
* - Internationalization support for multilingual contexts
* - Comprehensive error logging and debugging
*
* 🪝 **Hook Integration**: Seamlessly integrates with WOARU's rule-based AI system
*
* @param code - Source code content to analyze (supports all major programming languages)
* @param context - Contextual information about the code being analyzed
* @param context.fileName - Name of the file being analyzed for context-aware suggestions
* @param context.language - Programming language for language-specific analysis
* @param context.framework - Framework context (e.g., 'react', 'express', 'django')
* @param context.projectType - Project type for targeted recommendations
* @returns Promise resolving to comprehensive multi-provider review results
*
* @throws {Error} When no providers are enabled or all providers fail
*
* @example
* ```typescript
* const reviewAgent = new AIReviewAgent(config);
*
* // Analyze a React component
* const reactCode = `
* import React, { useState } from 'react';
*
* function UserProfile({ userId }) {
* const [user, setUser] = useState(null);
* // ... component implementation
* }`;
*
* const context: CodeContext = {
* fileName: 'UserProfile.tsx',
* language: 'typescript',
* framework: 'react',
* projectType: 'spa'
* };
*
* const result = await reviewAgent.performMultiLLMReview(reactCode, context);
*
* // Access aggregated results
* console.log(`Total findings: ${result.totalFindings}`);
* console.log(`Success rate: ${result.successRate}%`);
* console.log(`Analysis duration: ${result.totalDuration}ms`);
*
* // Process provider-specific findings
* result.results.forEach(providerResult => {
* if (providerResult.success) {
* console.log(`\n${providerResult.provider} Analysis:`);
* providerResult.findings.forEach(finding => {
* console.log(`- [${finding.severity}] ${finding.type}: ${finding.message}`);
* if (finding.lineNumber) console.log(` Line: ${finding.lineNumber}`);
* if (finding.suggestion) console.log(` 💡 ${finding.suggestion}`);
* });
* } else {
* console.warn(`${providerResult.provider} failed: ${providerResult.error}`);
* }
* });
* ```
*
* @example
* ```typescript
* // Handle analysis with error recovery
* try {
* const result = await reviewAgent.performMultiLLMReview(complexCode, context);
*
* // Check if we have usable results despite some failures
* if (result.successRate >= 50) {
* const highSeverityIssues = result.results
* .flatMap(r => r.findings)
* .filter(f => f.severity === 'high' || f.severity === 'critical');
*
* if (highSeverityIssues.length > 0) {
* console.log('🚨 Critical issues found:');
* highSeverityIssues.forEach(issue => {
* console.log(`- ${issue.message}`);
* });
* }
* } else {
* console.warn('Analysis quality may be compromised due to provider failures');
* }
* } catch (error) {
* console.error('Multi-LLM review failed completely:', error.message);
* }
* ```
*
* @since 1.0.0
*/
performMultiLLMReview(code: string, context: CodeContext): Promise<MultiLLMReviewResult>;
/**
* Call a specific LLM provider
*/
private callLLMProvider;
/**
* Call Anthropic Claude API
*/
private _callAnthropic;
/**
* Call OpenAI GPT API
*/
private _callOpenAI;
/**
* Call Azure OpenAI API
*/
private _callAzureOpenAI;
/**
* Call Google Gemini API
*/
private _callGoogle;
/**
* Call local Ollama API
*/
private _callOllama;
/**
* Interpolate template placeholders with safe JSON escaping
*/
private interpolateTemplate;
/**
* Build the complete prompt for LLM
*/
/**
* Build provider-specific prompt using dynamic templates
*/
private buildPromptForProvider;
/**
* Build default prompt (legacy compatibility)
*/
private buildDefaultPrompt;
/**
* Parse AI response into structured findings
*/
private parseAIResponse;
/**
* Aggregate results from multiple LLMs
*/
private aggregateResults;
/**
* Find issues that multiple LLMs agree on
*/
private findConsensusIssues;
/**
* Find unique findings per LLM
*/
private findUniqueFindings;
/**
* Check if two findings are similar (simple implementation)
*/
private areFindingsSimilar;
/**
* Calculate string similarity (simple Levenshtein-based)
*/
private calculateStringSimilarity;
/**
* Calculate Levenshtein distance
*/
private levenshteinDistance;
/**
* Estimate cost for API calls
*/
private estimateCost;
/**
* Create default prompt template
*/
private createDefaultPromptTemplate;
}
//# sourceMappingURL=AIReviewAgent.d.ts.map