mcp-adr-analysis-server
Version:
MCP server for analyzing Architectural Decision Records and project architecture
107 lines • 3.69 kB
JavaScript
/**
* TypeScript interfaces for Knowledge Generation framework
* Implements advanced prompting techniques for domain-specific architectural knowledge
*/
import { z } from 'zod';
export const KnowledgeItemSchema = z.object({
category: z.enum([
'best-practices',
'design-patterns',
'anti-patterns',
'technology-specific',
'performance-considerations',
'security-guidelines',
'scalability-patterns',
'testing-strategies'
]),
title: z.string(),
content: z.string(),
relevance: z.number().min(0).max(1),
evidence: z.array(z.string()),
tags: z.array(z.string()),
sources: z.array(z.string()).optional(),
});
export const DomainKnowledgeSchema = z.object({
domain: z.enum([
'web-applications',
'mobile-applications',
'microservices',
'database-design',
'cloud-infrastructure',
'devops-cicd',
'security-patterns',
'performance-optimization',
'api-design',
'data-architecture'
]),
knowledge: z.array(KnowledgeItemSchema),
confidence: z.number().min(0).max(1),
timestamp: z.string(),
sources: z.array(z.string()),
metadata: z.object({
generatedAt: z.string(),
generationTime: z.number(),
cacheKey: z.string(),
domains: z.array(z.string()),
confidence: z.number().min(0).max(1),
version: z.string(),
}),
});
export const KnowledgeGenerationConfigSchema = z.object({
domains: z.array(z.string()).optional(),
depth: z.enum(['basic', 'intermediate', 'advanced']).optional(),
cacheEnabled: z.boolean().optional(),
cacheTTL: z.number().optional(),
securityValidation: z.boolean().optional(),
customTemplates: z.array(z.any()).optional(),
maxKnowledgeItems: z.number().optional(),
maxTokens: z.number().optional(),
relevanceThreshold: z.number().min(0).max(1).optional(),
parallelGeneration: z.boolean().optional(),
});
// ============================================================================
// Export Schemas for Runtime Validation
// ============================================================================
export const ArchitecturalContextSchema = z.object({
projectPath: z.string().optional(),
technologies: z.array(z.string()).optional(),
patterns: z.array(z.string()).optional(),
existingAdrs: z.array(z.string()).optional(),
projectType: z.string().optional(),
teamSize: z.number().optional(),
constraints: z.array(z.string()).optional(),
goals: z.array(z.string()).optional(),
});
export const KnowledgeGenerationResultSchema = z.object({
knowledgePrompt: z.object({
prompt: z.string(),
instructions: z.string(),
context: z.any(),
}),
enhancedPrompt: z.object({
prompt: z.string(),
instructions: z.string(),
context: z.any(),
}).optional(),
domainKnowledge: z.array(DomainKnowledgeSchema),
cacheKey: z.string(),
metadata: z.object({
totalGenerationTime: z.number(),
domainsProcessed: z.array(z.string()),
knowledgeItemsGenerated: z.number(),
cacheHits: z.number(),
cacheMisses: z.number(),
averageConfidence: z.number(),
qualityScore: z.number(),
}),
securityCheck: z.object({
contentSafety: z.boolean(),
sourceReliability: z.number(),
relevanceScore: z.number(),
qualityScore: z.number(),
warnings: z.array(z.string()),
recommendations: z.array(z.string()),
validationTime: z.number(),
}).optional(),
});
//# sourceMappingURL=knowledge-generation.js.map