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
JavaScript
"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