UNPKG

@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
/** * @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;