mcp-adr-analysis-server
Version:
MCP server for analyzing Architectural Decision Records and project architecture
57 lines • 2.11 kB
JavaScript
/**
* 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