mcp-adr-analysis-server
Version:
MCP server for analyzing Architectural Decision Records and project architecture
256 lines • 8.46 kB
TypeScript
/**
* Deployment Status Resource - Current deployment state
* URI Pattern: adr://deployment_status
*/
import { URLSearchParams } from 'url';
import { ResourceGenerationResult } from './index.js';
export interface DeploymentStatus {
environment: string;
version: string;
branch: string;
commit: string;
commitMessage: string;
lastDeploy: string;
status: 'healthy' | 'degraded' | 'failed' | 'unknown';
checks: Array<{
name: string;
status: 'passed' | 'failed' | 'warning';
message: string;
timestamp: string;
}>;
dependencies: {
total: number;
outdated: number;
vulnerable: number;
};
buildInfo: {
lastBuild: string;
buildDuration?: number;
buildStatus: 'success' | 'failure' | 'unknown';
};
deploymentReadiness: {
score: number;
blockers: string[];
warnings: string[];
recommendations: string[];
};
codeQualityAnalysis?: {
overallScore: number;
productionCodeScore: number;
mockCodeIndicators: number;
productionCodeThreshold: number;
qualityGates: Array<{
gate: string;
passed: boolean;
score?: number;
threshold?: number;
}>;
treeAnalysis?: {
totalFiles: number;
productionFiles: number;
mockFiles: number;
testFiles: number;
};
};
testValidation?: {
testExecutionResult: 'passed' | 'failed' | 'partial' | 'unknown';
totalTests: number;
passedTests: number;
failedTests: number;
skippedTests: number;
coverage: number;
zeroToleranceEnforced: boolean;
failureDetails: Array<{
suite: string;
test: string;
error: string;
file?: string;
line?: number;
}>;
};
deploymentHistory?: {
totalDeployments: number;
successfulDeployments: number;
failedDeployments: number;
successRate: number;
recentFailures: number;
rollbackFrequency: number;
averageDeploymentTime: string;
lastSuccessfulDeployment?: string;
lastFailedDeployment?: string;
trends: Array<{
metric: string;
trend: 'improving' | 'degrading' | 'stable';
change: number;
}>;
};
adrCompliance?: {
totalRequirements: number;
metRequirements: number;
unmetRequirements: number;
complianceScore: number;
violations: Array<{
requirement: string;
adrId: string;
severity: 'critical' | 'high' | 'medium' | 'low';
description: string;
}>;
};
criticalBlockers?: Array<{
category: 'tests' | 'code_quality' | 'dependencies' | 'adr_compliance' | 'deployment_history';
title: string;
description: string;
severity: 'critical' | 'high' | 'medium' | 'low';
resolutionSteps: string[];
autoFixable: boolean;
}>;
memoryIntegration?: {
enabled: boolean;
assessmentId?: string;
historicalComparison?: {
previousScore: number;
currentScore: number;
trend: string;
improvement: number;
};
patternAnalysis?: {
commonFailures: string[];
successPatterns: string[];
riskFactors: string[];
};
insights?: string[];
};
gitPushStatus?: {
allowed: boolean;
decision: 'allowed' | 'blocked' | 'conditional';
reason: string;
conditions?: string[];
};
emergencyOverride?: {
active: boolean;
justification?: string;
approver?: string;
timestamp?: string;
expiresAt?: string;
};
environmentResearch?: {
answer: string;
confidence: number;
sources: string[];
needsWebSearch: boolean;
};
analysisMetadata?: {
operation: string;
timestamp: string;
confidence: number;
source: 'basic' | 'comprehensive-tool';
memoryIntegration: boolean;
strictMode: boolean;
};
}
/**
* Generate comprehensive deployment status resource with readiness analysis and quality gates.
*
* Performs multi-dimensional deployment readiness assessment including code quality validation,
* test execution, dependency health, ADR compliance, deployment history analysis, and optional
* memory-based pattern recognition for predictive insights.
*
* **Query Parameters:**
* - `operation`: Operation type (default: "check_readiness")
* - `environment`: Target deployment environment (default: process.env.NODE_ENV || "production")
* - `memory`: Enable memory integration for historical analysis (default: true)
* - `strict`: Enable strict zero-tolerance mode (default: true)
* - `comprehensive`: Use comprehensive analysis vs basic (default: true)
*
* **Comprehensive Mode includes:**
* - TreeSitter AST-based code quality analysis with production code scoring
* - Zero-tolerance test validation with detailed failure tracking
* - Deployment history analysis with trend detection
* - ADR compliance validation
* - Memory-based pattern analysis and insights
* - Critical blocker identification with auto-fix suggestions
* - Git push allow/block decision logic
*
* @param _params - URL path parameters (currently unused, reserved for future routing)
* @param searchParams - URL query parameters controlling analysis behavior
*
* @returns Promise resolving to resource generation result containing:
* - data: Complete deployment status with health metrics and quality gates
* - contentType: "application/json"
* - lastModified: ISO timestamp of generation
* - cacheKey: Unique identifier based on operation/environment/options
* - ttl: Cache duration (180 seconds / 3 minutes)
* - etag: Entity tag for cache validation
*
* @throws {McpAdrError} When deployment status generation fails due to:
* - Invalid operation or environment parameters
* - Deployment-readiness-tool execution failure
* - Test execution failures (in strict mode)
* - Cache operation errors
*
* @example
* ```typescript
* // Basic usage with comprehensive analysis
* const status = await generateDeploymentStatusResource(
* {},
* new URLSearchParams('operation=check_readiness&environment=production')
* );
*
* console.log(`Status: ${status.data.status}`);
* console.log(`Readiness score: ${status.data.deploymentReadiness.score}`);
* console.log(`Blockers: ${status.data.deploymentReadiness.blockers.length}`);
*
* // Check if deployment is allowed
* if (status.data.gitPushStatus?.decision === 'blocked') {
* console.error(`Deployment blocked: ${status.data.gitPushStatus.reason}`);
* process.exit(1);
* }
*
* // Example with basic mode (faster, less detailed)
* const basicStatus = await generateDeploymentStatusResource(
* {},
* new URLSearchParams('comprehensive=false&memory=false')
* );
*
* // Expected output structure:
* {
* data: {
* environment: "production",
* status: "healthy",
* version: "2.0.22",
* deploymentReadiness: {
* score: 95,
* blockers: [],
* warnings: ["Minor test coverage gaps"],
* recommendations: ["Increase integration test coverage"]
* },
* codeQualityAnalysis: {
* overallScore: 92,
* productionCodeScore: 95,
* qualityGates: [...]
* },
* testValidation: {
* testExecutionResult: "passed",
* totalTests: 150,
* passedTests: 150,
* failedTests: 0,
* coverage: 85
* },
* gitPushStatus: {
* allowed: true,
* decision: "allowed",
* reason: "All quality gates passed"
* }
* },
* contentType: "application/json",
* cacheKey: "deployment-status:check_readiness:production:true:true:true",
* ttl: 180
* }
* ```
*
* @since v2.0.0
* @see {@link deploymentReadiness} tool for underlying analysis engine
* @see {@link generateDeploymentHistoryResource} for historical deployment data
*/
export declare function generateDeploymentStatusResource(_params?: Record<string, string>, searchParams?: URLSearchParams): Promise<ResourceGenerationResult>;
//# sourceMappingURL=deployment-status-resource.d.ts.map