UNPKG

hikma-engine

Version:

Code Knowledge Graph Indexer - A sophisticated TypeScript-based indexer that transforms Git repositories into multi-dimensional knowledge stores for AI agents

117 lines (116 loc) 4.54 kB
"use strict"; /** * @file Monitoring routes for basic health status. * Simplified version for initial API functionality. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.createMonitoringRouter = createMonitoringRouter; const express_1 = require("express"); const health_check_1 = require("../services/health-check"); const response_formatter_1 = require("../utils/response-formatter"); const error_handling_1 = require("../middleware/error-handling"); const auth_1 = require("../middleware/auth"); const logger_1 = require("../../utils/logger"); const logger = (0, logger_1.getLogger)('MonitoringRoutes'); /** * Creates the monitoring router with basic health endpoint. */ function createMonitoringRouter() { const router = (0, express_1.Router)(); // Apply optional authentication to monitoring endpoints router.use(auth_1.optionalAuth); /** * Simple health status endpoint. * GET /api/v1/monitoring/health */ router.get('/health', (0, error_handling_1.asyncErrorHandler)(async (req, res) => { const health = await health_check_1.healthCheckService.performHealthCheck(); // Set appropriate HTTP status based on health let statusCode = 200; if (health.status === 'degraded') { statusCode = 200; // Still operational } else if (health.status === 'unhealthy') { statusCode = 503; // Service unavailable } res.status(statusCode).json(response_formatter_1.formatResponse.success(req, health)); })); /** * Detailed health status endpoint. * GET /api/v1/monitoring/health/detailed */ router.get('/health/detailed', (0, error_handling_1.asyncErrorHandler)(async (req, res) => { const detailedStatus = await health_check_1.healthCheckService.getDetailedStatus(); res.json(response_formatter_1.formatResponse.success(req, detailedStatus)); })); /** * Simple status endpoint for load balancers. * GET /api/v1/monitoring/status */ router.get('/status', (0, error_handling_1.asyncErrorHandler)(async (req, res) => { const health = await health_check_1.healthCheckService.performHealthCheck(); if (health.status === 'healthy') { res.status(200).send('OK'); } else if (health.status === 'degraded') { res.status(200).send('DEGRADED'); } else { res.status(503).send('UNHEALTHY'); } })); /** * Kubernetes readiness probe endpoint. * GET /api/v1/monitoring/readiness */ router.get('/readiness', (0, error_handling_1.asyncErrorHandler)(async (req, res) => { const health = await health_check_1.healthCheckService.performHealthCheck(); // Check if critical services are available const criticalChecks = ['searchService', 'sqlite']; const criticalFailures = criticalChecks.filter((check) => health.checks[check]?.status === 'fail'); if (criticalFailures.length === 0) { res.status(200).json({ status: 'ready' }); } else { res.status(503).json({ status: 'not ready', failures: criticalFailures, }); } })); /** * Kubernetes liveness probe endpoint. * GET /api/v1/monitoring/liveness */ router.get('/liveness', (req, res) => { // Simple liveness check - if we can respond, we're alive res.status(200).json({ status: 'alive', timestamp: new Date().toISOString(), uptime: process.uptime(), }); }); /** * System information endpoint. * GET /api/v1/monitoring/system */ router.get('/system', (0, error_handling_1.asyncErrorHandler)(async (req, res) => { const systemInfo = health_check_1.healthCheckService.getSystemInfo(); res.json(response_formatter_1.formatResponse.success(req, systemInfo)); })); /** * Version information endpoint. * GET /api/v1/monitoring/version */ router.get('/version', (req, res) => { const version = { api: process.env.npm_package_version || '1.0.0', node: process.version, environment: process.env.NODE_ENV || 'development', buildTime: process.env.BUILD_TIME || 'unknown', gitCommit: process.env.GIT_COMMIT || 'unknown', }; res.json(response_formatter_1.formatResponse.success(req, version)); }); return router; }