review-copilot
Version:
ReviewCopilot - AI-powered code review assistant with customizable prompts
112 lines (111 loc) • 2.86 kB
TypeScript
import { ReviewLanguage } from './constants/ai-messages';
export type AIProviderType = 'openai' | 'deepseek';
export interface BaseProviderConfig {
apiKey: string;
model: string;
baseURL: string;
defaultHeaders?: Record<string, string>;
timeout?: number;
}
export interface AIProviderConfig extends BaseProviderConfig {
provider: AIProviderType;
reviewLanguage?: ReviewLanguage;
}
export interface ProviderConfig {
enabled?: boolean;
apiKey: string;
model: string;
baseURL: string;
defaultHeaders?: Record<string, string>;
timeout?: number;
provider?: AIProviderType;
}
export type ProvidersConfig = Record<string, ProviderConfig>;
export interface Config {
providers: Record<string, ProviderConfig>;
ai: Omit<AIProviderConfig, 'provider'> & {
provider: string;
};
triggers: Array<{
on: string;
}>;
rules: {
commitMessage: {
enabled: boolean;
pattern: string;
prompt: string;
};
branchName: {
enabled: boolean;
pattern: string;
prompt: string;
};
codeChanges: {
enabled: boolean;
filePatterns: string[];
prompt: string;
};
};
customReviewPoints: Array<{
name: string;
prompt: string;
}>;
}
export interface CodeReviewSuggestion {
message: string;
filename?: string;
line?: number;
severity?: 'info' | 'warning' | 'error';
side?: 'LEFT' | 'RIGHT';
startLine?: number;
endLine?: number;
commitId?: string;
diffHunk?: string;
reviewType: 'general' | 'line-specific';
}
export interface CodeReviewResult {
success: boolean;
suggestions: CodeReviewSuggestion[];
error?: {
message: string;
};
}
export interface IAIProvider {
review(prompt: string, content: string): Promise<string>;
reviewWithLineSpecificSuggestions?(prompt: string, content: string, fileContext: Array<{
filePath: string;
parsedDiff: ParsedDiff;
}>): Promise<CodeReviewSuggestion[]>;
}
export interface DiffLine {
lineNumber: number;
oldLineNumber?: number;
newLineNumber?: number;
content: string;
type: 'add' | 'remove' | 'context';
position: number;
}
export interface DiffHunk {
oldStart: number;
oldLines: number;
newStart: number;
newLines: number;
lines: DiffLine[];
header: string;
}
export interface ParsedDiff {
filePath: string;
oldFile: string;
newFile: string;
hunks: DiffHunk[];
additions: number;
deletions: number;
}
export interface LineSpecificSuggestion extends CodeReviewSuggestion {
reviewType: 'line-specific';
filename: string;
line: number;
commitId: string;
position?: number;
diffContext: string;
}