UNPKG

review-copilot

Version:

ReviewCopilot - AI-powered code review assistant with customizable prompts

112 lines (111 loc) 2.86 kB
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; }