/**
* GitHub A2A Pull Request System - Automated PR reviews with multiple specialized agents
* Coordinates A2A agents for comprehensive code review, testing, and approval workflows
*/
///
import { GitHubA2ABridge } from "./github-a2a-bridge.js";
import { EventEmitter } from "events";
export interface PRReviewRequest {
repository: string;
pr_number: number;
head_sha: string;
base_sha: string;
files_changed: GitHubFile[];
author: string;
title: string;
description: string;
labels: string[];
reviewers: string[];
assignees: string[];
}
export interface GitHubFile {
filename: string;
status: "added" | "modified" | "removed" | "renamed";
additions: number;
deletions: number;
changes: number;
patch?: string;
previous_filename?: string;
}
export interface ReviewResult {
agent_id: string;
agent_type: string;
review_type: "code_quality" | "security" | "performance" | "testing" | "architecture";
status: "approved" | "changes_requested" | "comment";
confidence: number;
findings: ReviewFinding[];
suggestions: ReviewSuggestion[];
overall_score: number;
execution_time: number;
}
export interface ReviewFinding {
type: "error" | "warning" | "info" | "suggestion";
severity: "critical" | "high" | "medium" | "low";
file: string;
line?: number;
column?: number;
message: string;
rule_id?: string;
suggestion?: string;
}
export interface ReviewSuggestion {
type: "refactor" | "optimize" | "security" | "style" | "documentation";
file: string;
line_start?: number;
line_end?: number;
current_code?: string;
suggested_code?: string;
rationale: string;
impact: "low" | "medium" | "high";
}
export interface PRAnalysis {
complexity_score: number;
risk_assessment: "low" | "medium" | "high" | "critical";
test_coverage_impact: number;
breaking_changes: boolean;
security_implications: boolean;
performance_impact: "positive" | "negative" | "neutral";
architectural_changes: boolean;
documentation_required: boolean;
}
export declare class GitHubA2APRSystem extends EventEmitter {
private bridge;
private a2aIntegration;
private activeReviews;
private reviewStrategies;
constructor(bridge: GitHubA2ABridge);
/**
* Initialize different review strategies for various PR types
*/
private initializeReviewStrategies;
/**
* Process incoming pull request for A2A agent review
*/
processPullRequest(request: PRReviewRequest): Promise;
/**
* Analyze pull request to understand its characteristics
*/
private analyzePullRequest;
/**
* Select appropriate review strategy based on PR characteristics
*/
private selectReviewStrategy;
/**
* Assign A2A agents for review based on strategy
*/
private assignReviewAgents;
/**
* Start coordinated review process with assigned agents
*/
private startCoordinatedReview;
/**
* Create review tasks for assigned agents
*/
private createReviewTasks;
/**
* Execute individual review task with A2A agent
*/
private executeReviewTask;
/**
* Consolidate review results from all agents
*/
private consolidateReviewResults;
/**
* Submit consolidated review to GitHub
*/
private submitGitHubReview;
/**
* Format review body for GitHub
*/
private formatReviewBody;
/**
* Format review comments for GitHub
*/
private formatReviewComments;
private calculateComplexityScore;
private assessRisk;
private calculateTestCoverageImpact;
private detectBreakingChanges;
private detectSecurityImplications;
private assessPerformanceImpact;
private detectArchitecturalChanges;
private isDocumentationRequired;
private mapAgentTypeToReviewType;
private filterFilesForAgent;
private calculateTaskPriority;
private estimateReviewDuration;
private calculateOverallStatus;
private consolidateFindings;
private consolidateSuggestions;
private generateRecommendation;
private calculateOverallConfidence;
private calculateReviewQuality;
private getSeverityWeight;
private getImpactWeight;
private getAvailableAgents;
private setupEventHandlers;
/**
* Get active review sessions
*/
getActiveReviews(): Map;
/**
* Cancel a review session
*/
cancelReview(sessionId: string): Promise;
}
interface ReviewStrategy {
name: string;
agents: string[];
parallel: boolean;
required_approvals: number;
focus_areas: string[];
}
declare class PRReviewSession {
id: string;
request: PRReviewRequest;
strategy: ReviewStrategy;
analysis: PRAnalysis;
status: "pending" | "in_progress" | "completed" | "cancelled" | "timeout";
created_at: Date;
completed_at?: Date;
results?: ReviewResult[];
constructor(id: string, request: PRReviewRequest, strategy: ReviewStrategy, analysis: PRAnalysis);
}
export {};
//# sourceMappingURL=github-a2a-pr-system.d.ts.map