@boundless-oss/atlas
Version:
Atlas - MCP Server for comprehensive startup project management
271 lines (243 loc) • 5.73 kB
text/typescript
export interface CodeMetrics {
complexity: ComplexityMetrics;
maintainability: MaintainabilityMetrics;
duplication: DuplicationMetrics;
quality: QualityMetrics;
}
export interface ComplexityMetrics {
cyclomatic: number;
cognitive: number;
halstead: {
difficulty: number;
volume: number;
effort: number;
};
functions: FunctionComplexity[];
average: number;
max: number;
total: number;
}
export interface FunctionComplexity {
name: string;
complexity: number;
lines: number;
parameters: number;
location: CodeLocation;
}
export interface MaintainabilityMetrics {
index: number; // 0-100
rating: 'A' | 'B' | 'C' | 'D' | 'F';
factors: {
complexity: number;
lineCount: number;
commentRatio: number;
testCoverage?: number;
};
average: number;
min: number;
distribution: Record<string, number>;
}
export interface DuplicationMetrics {
percentage: number;
duplicateBlocks: DuplicateBlock[];
totalLines: number;
duplicatedLines: number;
blocks: number;
}
export interface DuplicateBlock {
locations: CodeLocation[];
lines: number;
tokens: number;
hash: string;
}
export interface QualityMetrics {
issues: {
total: number;
high: number;
medium: number;
low: number;
};
codeSmells: number;
technicalDebt: number;
score: number; // 0-100
grade: 'A' | 'B' | 'C' | 'D' | 'F';
trends?: QualityTrend;
}
export interface CodeIssue {
type: 'error' | 'warning' | 'info' | 'style';
severity: 'critical' | 'high' | 'medium' | 'low';
rule: string;
message: string;
location: CodeLocation;
fixable: boolean;
category: IssueCategory;
suggestion?: string;
}
export type IssueCategory =
| 'security'
| 'performance'
| 'maintainability'
| 'reliability'
| 'style'
| 'complexity'
| 'duplication';
export interface CodeLocation {
file: string;
line: number;
column: number;
endLine?: number;
endColumn?: number;
}
export interface CodeReview {
id: string;
fileHash?: string;
fileName?: string;
file: string;
timestamp: string;
findings: Finding[];
suggestions: Suggestion[];
metrics?: CodeMetrics;
overallScore?: number;
approved?: boolean;
score: number;
summary: string;
comparison?: any;
}
export interface Finding {
type: 'bug' | 'improvement' | 'style';
severity: 'critical' | 'high' | 'medium' | 'low';
title: string;
description: string;
location: CodeLocation;
suggestedFix?: string;
}
export interface Suggestion {
title: string;
description: string;
priority?: 'high' | 'medium' | 'low';
type?: string;
}
export interface ReviewFinding {
type: 'bug' | 'vulnerability' | 'code-smell' | 'performance' | 'style';
severity: 'critical' | 'high' | 'medium' | 'low';
title: string;
description: string;
location: CodeLocation;
suggestedFix?: string;
references?: string[];
}
export interface ReviewSuggestion {
category: 'refactoring' | 'optimization' | 'simplification' | 'documentation';
title: string;
description: string;
impact: 'high' | 'medium' | 'low';
effort: 'high' | 'medium' | 'low';
location?: CodeLocation;
example?: string;
}
export interface Trend {
metric: string;
direction: 'improving' | 'stable' | 'degrading';
change: number;
percentage: number;
}
export interface MetricsTrend {
metric: string;
values: TimeSeriesData[];
trend: 'improving' | 'stable' | 'degrading';
changePercentage: number;
}
export interface TimeSeriesData {
timestamp: string;
value: number;
label?: string;
}
export interface QualityTrend {
period: string; // e.g., "last-30-days"
complexityTrend: 'increasing' | 'stable' | 'decreasing';
maintainabilityTrend: 'improving' | 'stable' | 'degrading';
issuesTrend: 'increasing' | 'stable' | 'decreasing';
coverageTrend?: 'increasing' | 'stable' | 'decreasing';
}
export interface AnalysisOptions {
files?: string[];
directories?: string[];
includeHistory?: boolean;
compareWithBaseline?: boolean;
maxIssues?: number;
excludePatterns?: string[];
customRules?: CustomRule[];
}
export interface CustomRule {
name: string;
description: string;
pattern: string;
severity: 'error' | 'warning' | 'info';
category: IssueCategory;
message: string;
}
export interface AnalysisResult {
id: string;
timestamp: string;
files: FileAnalysis[];
summary: AnalysisSummary;
trends?: MetricsTrend[];
recommendations: string[];
}
export interface FileAnalysis {
path: string;
metrics: CodeMetrics;
issues: CodeIssue[];
size: number;
language: string;
lastModified: string;
}
export interface AnalysisSummary {
totalFiles: number;
totalLines: number;
averageComplexity: number;
averageMaintainability: number;
totalIssues: number;
criticalIssues: number;
duplicatePercentage: number;
overallScore: number;
overallGrade: 'A' | 'B' | 'C' | 'D' | 'F';
}
export interface BaselineComparison {
current: AnalysisSummary;
baseline: AnalysisSummary;
improvements: string[];
regressions: string[];
unchanged: string[];
}
export interface ReviewOptions {
file?: string;
content?: string;
language?: string;
compareWith?: string;
includeHistory?: boolean;
securityScan?: boolean;
performanceScan?: boolean;
styleScan?: boolean;
}
export interface TrackingOptions {
projectId?: string;
branch?: string;
commit?: string;
tags?: string[];
}
export interface MetricsHistory {
projectId: string;
entries: HistoryEntry[];
baseline?: HistoryEntry;
trends: Trend[];
}
export interface HistoryEntry {
id?: string;
timestamp: string;
commit?: string;
branch?: string;
metrics: CodeMetrics;
summary?: AnalysisSummary;
tags?: string[];
}