@swoft/platform-contracts
Version:
DDD-compliant dependency injection contracts for Swoft platform - Defines clean architecture boundaries
122 lines (113 loc) • 2.81 kB
text/typescript
import { NavigationHints } from './NavigationHints';
/**
* Standard health check response structure for all MCP servers
* Eliminates duplication while allowing domain-specific customization
*/
export interface StandardHealthResponse {
status: 'ok' | 'error' | 'degraded';
service: string;
version?: string;
timestamp: string;
checks: Record<string, any>;
metrics?: Record<string, any>;
}
/**
* Health check response with navigation hints
*/
export interface HealthCheckWithNavigation {
content: StandardHealthResponse;
_navigation: NavigationHints;
}
/**
* Domain-specific health details
*/
export interface DomainHealthDetails {
[key: string]: any;
}
/**
* Utility functions for creating standard health responses
*/
export class HealthCheckUtils {
/**
* Create standard health response structure
*/
static createResponse(
serviceName: string,
version: string,
domainChecks: Record<string, any>,
domainDetails: DomainHealthDetails = {},
metrics?: Record<string, any>
): StandardHealthResponse {
return {
status: 'ok',
service: serviceName,
version,
timestamp: new Date().toISOString(),
checks: {
connectivity: { status: 'connected', responseTime: '12ms' },
...domainChecks,
...domainDetails,
},
metrics,
};
}
/**
* Create error response
*/
static createErrorResponse(serviceName: string, error: any): StandardHealthResponse {
return {
status: 'error',
service: serviceName,
timestamp: new Date().toISOString(),
checks: {
connectivity: { status: 'failed', error: error.message || String(error) },
},
};
}
/**
* Standard metrics collection
*/
static collectStandardMetrics(): Record<string, any> {
return {
uptime: process.uptime(),
memory: process.memoryUsage(),
timestamp: new Date().toISOString(),
};
}
}
/**
* Navigation hint patterns for health checks
*/
export class HealthNavigationPatterns {
/**
* Common cross-MCP health navigation hints
*/
static getSystemHealthHints(): Array<{
toolName: string;
description: string;
relevanceContext: string;
}> {
return [
{
toolName: 'health_check',
description: 'Check system-wide health status',
relevanceContext: 'if this service shows issues',
},
];
}
/**
* Service recovery navigation hints
*/
static getRecoveryHints(serviceName: string): Array<{ toolName: string; description: string }> {
return [
{
toolName: 'service_control',
description: `Restart ${serviceName} if needed`,
},
{
toolName: 'logs',
description: `View ${serviceName} logs for diagnostics`,
},
];
}
}