UNPKG

khodkar-cli

Version:

A TypeScript CLI application that extracts business rules and logic from codebases for customer support knowledge bases

132 lines 5.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MCPServerError = exports.LLMAnalysisError = exports.FileSystemError = exports.KhodkarError = exports.OutputSchema = exports.JSONOutputSchema = exports.MarkdownOutputSchema = exports.LLMAnalysisRequestSchema = exports.MCPServerConfigSchema = exports.ProgressInfoSchema = exports.FileAnalysisSchema = exports.AnalysisResultSchema = exports.llmObjectGeneratedSchema = exports.BusinessRuleSchema = exports.LLMConfigSchema = exports.CLIOptionsSchema = void 0; const zod_1 = require("zod"); // CLI Options Schema exports.CLIOptionsSchema = zod_1.z.object({ directory: zod_1.z.string().min(1, 'Directory path is required'), output: zod_1.z.string().min(1, 'Output path is required'), format: zod_1.z.enum(['json', 'markdown']).default('markdown'), verbose: zod_1.z.boolean().default(false), llmBaseUrl: zod_1.z.string().min(1, 'LLM base URL is required'), llmApiKey: zod_1.z.string().min(1, 'LLM API key is required'), llmModel: zod_1.z.string().min(1, 'LLM model name is required'), llmMaxSteps: zod_1.z.number().min(1).max(500).optional(), }); // LLM Configuration Schema exports.LLMConfigSchema = zod_1.z.object({ baseUrl: zod_1.z.string().min(1, 'Base URL is required'), apiKey: zod_1.z.string().min(1, 'API key is required'), model: zod_1.z.string().min(1, 'Model name is required'), maxSteps: zod_1.z.number().min(1).max(500).default(20), }); // Business Rule Schema exports.BusinessRuleSchema = zod_1.z.object({ id: zod_1.z.string(), title: zod_1.z.string(), description: zod_1.z.string(), priority: zod_1.z.enum(['high', 'medium', 'low']).default('medium'), source: zod_1.z.object({ file: zod_1.z.string(), startLine: zod_1.z.number().optional(), endLine: zod_1.z.number().optional(), }), tags: zod_1.z.array(zod_1.z.string()).default([]), userFacing: zod_1.z.boolean().default(true), }); ``; exports.llmObjectGeneratedSchema = zod_1.z.object({ rules: zod_1.z.array(exports.BusinessRuleSchema), }); // Analysis Result Schema exports.AnalysisResultSchema = zod_1.z.object({ analysisDate: zod_1.z.string(), businessRules: zod_1.z.array(exports.BusinessRuleSchema), summary: zod_1.z.object({ totalRules: zod_1.z.number(), highPriorityRules: zod_1.z.number(), userFacingRules: zod_1.z.number(), }), }); // File Analysis Schema exports.FileAnalysisSchema = zod_1.z.object({ filePath: zod_1.z.string(), fileType: zod_1.z.string(), language: zod_1.z.string(), size: zod_1.z.number(), lastModified: zod_1.z.string(), businessRules: zod_1.z.array(exports.BusinessRuleSchema), analysisStatus: zod_1.z.enum(['pending', 'analyzing', 'completed', 'failed']), error: zod_1.z.string().optional(), }); // Progress Information exports.ProgressInfoSchema = zod_1.z.object({ currentFile: zod_1.z.string(), filesProcessed: zod_1.z.number(), totalFiles: zod_1.z.number(), currentPhase: zod_1.z.enum(['scanning', 'analyzing', 'formatting', 'complete']), estimatedTimeRemaining: zod_1.z.number().optional(), }); // MCP Server Configuration exports.MCPServerConfigSchema = zod_1.z.object({ name: zod_1.z.string(), command: zod_1.z.string(), args: zod_1.z.array(zod_1.z.string()).default([]), env: zod_1.z.record(zod_1.z.string()).optional(), enabled: zod_1.z.boolean().default(true), }); // LLM Analysis Request exports.LLMAnalysisRequestSchema = zod_1.z.object({ filePath: zod_1.z.string(), fileContent: zod_1.z.string(), language: zod_1.z.string(), context: zod_1.z.object({ projectName: zod_1.z.string().optional(), fileType: zod_1.z.string(), relatedFiles: zod_1.z.array(zod_1.z.string()).default([]), }), }); // Output Format Schemas exports.MarkdownOutputSchema = zod_1.z.object({ format: zod_1.z.literal('markdown'), content: zod_1.z.string(), }); exports.JSONOutputSchema = zod_1.z.object({ format: zod_1.z.literal('json'), content: zod_1.z.string(), }); exports.OutputSchema = zod_1.z.union([exports.MarkdownOutputSchema, exports.JSONOutputSchema]); // Error Types class KhodkarError extends Error { code; details; constructor(message, code, details) { super(message); this.code = code; this.details = details; this.name = 'KhodkarError'; } } exports.KhodkarError = KhodkarError; class FileSystemError extends KhodkarError { constructor(message, details) { super(message, 'FILESYSTEM_ERROR', details); this.name = 'FileSystemError'; } } exports.FileSystemError = FileSystemError; class LLMAnalysisError extends KhodkarError { constructor(message, details) { super(message, 'LLM_ANALYSIS_ERROR', details); this.name = 'LLMAnalysisError'; } } exports.LLMAnalysisError = LLMAnalysisError; class MCPServerError extends KhodkarError { constructor(message, details) { super(message, 'MCP_SERVER_ERROR', details); this.name = 'MCPServerError'; } } exports.MCPServerError = MCPServerError; //# sourceMappingURL=index.js.map