UNPKG

vibe-coder-mcp

Version:

Production-ready MCP server with complete agent integration, multi-transport support, and comprehensive development automation tools for AI-assisted workflows.

208 lines (207 loc) 7.91 kB
import { z } from 'zod'; import { taskTypeSchema } from './context-curator.js'; export var ContextCuratorLLMTask; (function (ContextCuratorLLMTask) { ContextCuratorLLMTask["INTENT_ANALYSIS"] = "context_curator_intent_analysis"; ContextCuratorLLMTask["PROMPT_REFINEMENT"] = "context_curator_prompt_refinement"; ContextCuratorLLMTask["FILE_DISCOVERY"] = "context_curator_file_discovery"; ContextCuratorLLMTask["RELEVANCE_SCORING"] = "context_curator_relevance_scoring"; ContextCuratorLLMTask["META_PROMPT_GENERATION"] = "context_curator_meta_prompt_generation"; ContextCuratorLLMTask["ARCHITECTURAL_ANALYSIS"] = "context_curator_architectural_analysis"; })(ContextCuratorLLMTask || (ContextCuratorLLMTask = {})); export const intentAnalysisResultSchema = z.object({ taskType: taskTypeSchema, confidence: z.number().min(0).max(1), reasoning: z.array(z.string()).min(1, 'At least one reasoning item is required'), architecturalComponents: z.array(z.string()), scopeAssessment: z.object({ complexity: z.enum(['simple', 'moderate', 'complex']), estimatedFiles: z.number().min(0), riskLevel: z.enum(['low', 'medium', 'high']) }), suggestedFocusAreas: z.array(z.string()), estimatedEffort: z.enum(['low', 'medium', 'high', 'very_high']) }); export const fileDiscoveryResultSchema = z.object({ relevantFiles: z.array(z.object({ path: z.string().min(1), priority: z.enum(['high', 'medium', 'low']), reasoning: z.string().min(1), confidence: z.number().min(0).max(1), estimatedTokens: z.number().min(0), modificationLikelihood: z.enum(['very_high', 'high', 'medium', 'low', 'very_low']) })), totalFilesAnalyzed: z.number().min(0), processingTimeMs: z.number().min(0), searchStrategy: z.enum(['semantic_similarity', 'keyword_matching', 'semantic_and_keyword', 'structural_analysis', 'multi_strategy']), coverageMetrics: z.object({ totalTokens: z.number().min(0), averageConfidence: z.number().min(0).max(1) }) }); export const promptRefinementResultSchema = z.object({ refinedPrompt: z.string().min(1, 'Refined prompt cannot be empty'), enhancementReasoning: z.array(z.string()), addedContext: z.array(z.string()), originalLength: z.number().min(0), refinedLength: z.number().min(0), improvementScore: z.number().min(0).max(1), contextualEnhancements: z.array(z.string()) }); export const relevanceScoringResultSchema = z.object({ fileScores: z.array(z.object({ filePath: z.string().min(1), relevanceScore: z.number().min(0).max(1), confidence: z.number().min(0).max(1), reasoning: z.string().min(1), categories: z.array(z.string()).min(1, 'At least one category is required'), modificationLikelihood: z.enum(['very_high', 'high', 'medium', 'low', 'very_low']), estimatedTokens: z.number().min(0) })), overallMetrics: z.object({ averageRelevance: z.number().min(0).max(1), totalFilesScored: z.number().min(0), highRelevanceCount: z.number().min(0), processingTimeMs: z.number().min(0) }), scoringStrategy: z.enum(['semantic_similarity', 'keyword_density', 'structural_importance', 'hybrid']), chunkingUsed: z.boolean().optional(), totalChunks: z.number().min(1).optional(), chunkSize: z.number().min(1).optional() }); export const metaPromptGenerationResultSchema = z.object({ systemPrompt: z.string().min(1, 'System prompt cannot be empty'), userPrompt: z.string().min(1, 'User prompt cannot be empty'), contextSummary: z.string().min(1, 'Context summary cannot be empty'), taskDecomposition: z.object({ epics: z.array(z.object({ id: z.string().min(1), title: z.string().min(1), description: z.string().min(1), estimatedComplexity: z.enum(['low', 'medium', 'high', 'very_high']), tasks: z.array(z.object({ id: z.string().min(1), title: z.string().min(1), description: z.string().min(1), estimatedHours: z.number().min(0), dependencies: z.array(z.string()), subtasks: z.array(z.object({ id: z.string().min(1), title: z.string().min(1), description: z.string().min(1), estimatedMinutes: z.number().min(0) })) })) })) }), guidelines: z.array(z.string()), estimatedComplexity: z.enum(['low', 'medium', 'high', 'very_high']), qualityScore: z.number().min(0).max(1), aiAgentResponseFormat: z.object({ description: z.string().min(1), format: z.string().min(1), rules: z.array(z.string().min(1)) }).optional() }); export const architecturalAnalysisResultSchema = z.object({ architecturalPatterns: z.array(z.string()), dependencies: z.array(z.object({ name: z.string().min(1), version: z.string(), type: z.enum(['runtime', 'development', 'peer', 'optional']), importance: z.enum(['critical', 'important', 'optional', 'deprecated']) })), codeStructure: z.object({ directories: z.array(z.string()), entryPoints: z.array(z.string()), configFiles: z.array(z.string()) }), recommendations: z.array(z.string()), complexityAssessment: z.object({ overall: z.enum(['low', 'medium', 'high', 'very_high']), factors: z.array(z.string()), score: z.number().min(0).max(1) }) }); export const llmTaskErrorSchema = z.object({ task: z.nativeEnum(ContextCuratorLLMTask), message: z.string().min(1, 'Error message cannot be empty'), code: z.string().min(1), details: z.record(z.unknown()), recoverable: z.boolean() }); export const validateIntentAnalysisResult = (result) => { try { intentAnalysisResultSchema.parse(result); return true; } catch { return false; } }; export const validateFileDiscoveryResult = (result) => { try { fileDiscoveryResultSchema.parse(result); return true; } catch { return false; } }; export const validatePromptRefinementResult = (result) => { try { promptRefinementResultSchema.parse(result); return true; } catch { return false; } }; export const validateRelevanceScoringResult = (result) => { try { relevanceScoringResultSchema.parse(result); return true; } catch { return false; } }; export const validateMetaPromptGenerationResult = (result) => { try { metaPromptGenerationResultSchema.parse(result); return true; } catch { return false; } }; export const validateArchitecturalAnalysisResult = (result) => { try { architecturalAnalysisResultSchema.parse(result); return true; } catch { return false; } }; export const getLLMTaskName = (task) => { return task; }; export const validateLLMTaskResult = (task, result) => { switch (task) { case ContextCuratorLLMTask.INTENT_ANALYSIS: return validateIntentAnalysisResult(result); case ContextCuratorLLMTask.FILE_DISCOVERY: return validateFileDiscoveryResult(result); case ContextCuratorLLMTask.PROMPT_REFINEMENT: return validatePromptRefinementResult(result); case ContextCuratorLLMTask.RELEVANCE_SCORING: return validateRelevanceScoringResult(result); case ContextCuratorLLMTask.META_PROMPT_GENERATION: return validateMetaPromptGenerationResult(result); case ContextCuratorLLMTask.ARCHITECTURAL_ANALYSIS: return validateArchitecturalAnalysisResult(result); default: return false; } };