UNPKG

mcp-adr-analysis-server

Version:

MCP server for analyzing Architectural Decision Records and project architecture

57 lines 2.11 kB
/** * Validated Patterns Catalog Resource * URI Pattern: adr://validated_patterns * * Provides complete catalog of validated deployment patterns * for different platforms with metadata and summaries */ import { resourceCache, generateETag } from './resource-cache.js'; import { listAllPatterns, } from '../utils/validated-pattern-definitions.js'; /** * Generate validated patterns catalog resource */ export async function generateValidatedPatternsCatalogResource() { const cacheKey = 'validated-patterns-catalog'; // Check cache const cached = await resourceCache.get(cacheKey); if (cached) { return cached; } // Get all validated patterns const allPatterns = listAllPatterns(); const patternSummaries = allPatterns.map((pattern) => ({ id: pattern.id, name: pattern.name, version: pattern.version, platformType: pattern.platformType, description: pattern.description, lastUpdated: pattern.metadata.lastUpdated, source: pattern.metadata.source, tags: pattern.metadata.tags, hasBaseCodeRepository: !!pattern.baseCodeRepository, hasAuthoritativeSources: pattern.authoritativeSources.length > 0, authoritativeSourceCount: pattern.authoritativeSources.length, deploymentPhaseCount: pattern.deploymentPhases.length, validationCheckCount: pattern.validationChecks.length, })); const catalog = { patterns: patternSummaries, metadata: { totalPatterns: allPatterns.length, platforms: allPatterns.map((p) => p.platformType), lastGenerated: new Date().toISOString(), }, }; const result = { data: catalog, contentType: 'application/json', lastModified: new Date().toISOString(), cacheKey, ttl: 3600, // 1 hour cache (patterns don't change frequently) etag: generateETag(catalog), }; // Cache result resourceCache.set(cacheKey, result, result.ttl); return result; } //# sourceMappingURL=validated-patterns-catalog-resource.js.map