@bobmatnyc/ai-code-review
Version:
A TypeScript-based tool for automated code reviews using AI models from Google Gemini, Anthropic Claude, and OpenRouter
545 lines (544 loc) • 15.3 kB
TypeScript
/**
* @fileoverview Type definitions for the structured code review schema.
*
* This module defines the TypeScript interfaces and Zod schemas for the structured code review schema
* used in interactive mode. The schema is designed to be both human-readable and
* machine-parseable, making it easy for AI tools to process and act on the review results.
*/
import { z } from 'zod';
/**
* Priority level for code review issues
*/
export declare enum IssuePriority {
HIGH = "HIGH",
MEDIUM = "MEDIUM",
LOW = "LOW"
}
export declare const issuePrioritySchema: z.ZodNativeEnum<typeof IssuePriority>;
/**
* Location of an issue in the code
*/
export interface IssueLocation {
startLine: number;
endLine: number;
}
export declare const issueLocationSchema: z.ZodObject<{
startLine: z.ZodNumber;
endLine: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
startLine: number;
endLine: number;
}, {
startLine: number;
endLine: number;
}>;
/**
* A single issue identified in the code review
*/
export interface ReviewIssue {
id: string;
priority: IssuePriority;
description: string;
location: IssueLocation;
currentCode: string;
suggestedCode: string;
explanation: string;
}
export declare const reviewIssueSchema: z.ZodObject<{
id: z.ZodString;
priority: z.ZodNativeEnum<typeof IssuePriority>;
description: z.ZodString;
location: z.ZodObject<{
startLine: z.ZodNumber;
endLine: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
startLine: number;
endLine: number;
}, {
startLine: number;
endLine: number;
}>;
currentCode: z.ZodString;
suggestedCode: z.ZodString;
explanation: z.ZodString;
}, "strip", z.ZodTypeAny, {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}, {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}>;
/**
* Review results for a single file
*/
export interface FileReview {
filePath: string;
issues: ReviewIssue[];
}
export declare const fileReviewSchema: z.ZodObject<{
filePath: z.ZodString;
issues: z.ZodArray<z.ZodObject<{
id: z.ZodString;
priority: z.ZodNativeEnum<typeof IssuePriority>;
description: z.ZodString;
location: z.ZodObject<{
startLine: z.ZodNumber;
endLine: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
startLine: number;
endLine: number;
}, {
startLine: number;
endLine: number;
}>;
currentCode: z.ZodString;
suggestedCode: z.ZodString;
explanation: z.ZodString;
}, "strip", z.ZodTypeAny, {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}, {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}>, "many">;
}, "strip", z.ZodTypeAny, {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}, {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}>;
/**
* Summary statistics for the code review
*/
export interface ReviewSummary {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
}
export declare const reviewSummarySchema: z.ZodObject<{
highPriorityIssues: z.ZodNumber;
mediumPriorityIssues: z.ZodNumber;
lowPriorityIssues: z.ZodNumber;
totalIssues: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
}, {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
}>;
/**
* Complete code review results
*/
export interface CodeReview {
version: string;
timestamp: string;
files: FileReview[];
summary: ReviewSummary;
}
export declare const codeReviewSchema: z.ZodObject<{
version: z.ZodString;
timestamp: z.ZodString;
files: z.ZodArray<z.ZodObject<{
filePath: z.ZodString;
issues: z.ZodArray<z.ZodObject<{
id: z.ZodString;
priority: z.ZodNativeEnum<typeof IssuePriority>;
description: z.ZodString;
location: z.ZodObject<{
startLine: z.ZodNumber;
endLine: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
startLine: number;
endLine: number;
}, {
startLine: number;
endLine: number;
}>;
currentCode: z.ZodString;
suggestedCode: z.ZodString;
explanation: z.ZodString;
}, "strip", z.ZodTypeAny, {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}, {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}>, "many">;
}, "strip", z.ZodTypeAny, {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}, {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}>, "many">;
summary: z.ZodObject<{
highPriorityIssues: z.ZodNumber;
mediumPriorityIssues: z.ZodNumber;
lowPriorityIssues: z.ZodNumber;
totalIssues: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
}, {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
}>;
}, "strip", z.ZodTypeAny, {
version: string;
timestamp: string;
files: {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}[];
summary: {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
};
}, {
version: string;
timestamp: string;
files: {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}[];
summary: {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
};
}>;
/**
* Root object for the code review schema
*/
export interface ReviewSchema {
review: CodeReview;
}
export declare const reviewSchema: z.ZodObject<{
review: z.ZodObject<{
version: z.ZodString;
timestamp: z.ZodString;
files: z.ZodArray<z.ZodObject<{
filePath: z.ZodString;
issues: z.ZodArray<z.ZodObject<{
id: z.ZodString;
priority: z.ZodNativeEnum<typeof IssuePriority>;
description: z.ZodString;
location: z.ZodObject<{
startLine: z.ZodNumber;
endLine: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
startLine: number;
endLine: number;
}, {
startLine: number;
endLine: number;
}>;
currentCode: z.ZodString;
suggestedCode: z.ZodString;
explanation: z.ZodString;
}, "strip", z.ZodTypeAny, {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}, {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}>, "many">;
}, "strip", z.ZodTypeAny, {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}, {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}>, "many">;
summary: z.ZodObject<{
highPriorityIssues: z.ZodNumber;
mediumPriorityIssues: z.ZodNumber;
lowPriorityIssues: z.ZodNumber;
totalIssues: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
}, {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
}>;
}, "strip", z.ZodTypeAny, {
version: string;
timestamp: string;
files: {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}[];
summary: {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
};
}, {
version: string;
timestamp: string;
files: {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}[];
summary: {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
};
}>;
}, "strip", z.ZodTypeAny, {
review: {
version: string;
timestamp: string;
files: {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}[];
summary: {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
};
};
}, {
review: {
version: string;
timestamp: string;
files: {
issues: {
description: string;
id: string;
priority: IssuePriority;
location: {
startLine: number;
endLine: number;
};
currentCode: string;
suggestedCode: string;
explanation: string;
}[];
filePath: string;
}[];
summary: {
highPriorityIssues: number;
mediumPriorityIssues: number;
lowPriorityIssues: number;
totalIssues: number;
};
};
}>;
/**
* Get the schema as a string for inclusion in prompts
*/
export declare function getSchemaAsString(): string;
/**
* Get schema instructions for inclusion in prompts
*/
export declare function getSchemaInstructions(): string;