@superdangerous/app-framework 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +652 -0
- package/dist/api/logsRouter.d.ts +20 -0
- package/dist/api/logsRouter.d.ts.map +1 -0
- package/dist/api/logsRouter.js +515 -0
- package/dist/api/logsRouter.js.map +1 -0
- package/dist/cli/dev-server.d.ts +7 -0
- package/dist/cli/dev-server.d.ts.map +1 -0
- package/dist/cli/dev-server.js +640 -0
- package/dist/cli/dev-server.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +26 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/StandardServer.d.ts +129 -0
- package/dist/core/StandardServer.d.ts.map +1 -0
- package/dist/core/StandardServer.js +453 -0
- package/dist/core/StandardServer.js.map +1 -0
- package/dist/core/apiResponse.d.ts +69 -0
- package/dist/core/apiResponse.d.ts.map +1 -0
- package/dist/core/apiResponse.js +127 -0
- package/dist/core/apiResponse.js.map +1 -0
- package/dist/core/healthCheck.d.ts +160 -0
- package/dist/core/healthCheck.d.ts.map +1 -0
- package/dist/core/healthCheck.js +398 -0
- package/dist/core/healthCheck.js.map +1 -0
- package/dist/core/index.d.ts +40 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +40 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +117 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +826 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/portUtils.d.ts +71 -0
- package/dist/core/portUtils.d.ts.map +1 -0
- package/dist/core/portUtils.js +240 -0
- package/dist/core/portUtils.js.map +1 -0
- package/dist/core/storageService.d.ts +119 -0
- package/dist/core/storageService.d.ts.map +1 -0
- package/dist/core/storageService.js +405 -0
- package/dist/core/storageService.js.map +1 -0
- package/dist/desktop/bundler.d.ts +40 -0
- package/dist/desktop/bundler.d.ts.map +1 -0
- package/dist/desktop/bundler.js +176 -0
- package/dist/desktop/bundler.js.map +1 -0
- package/dist/desktop/index.d.ts +25 -0
- package/dist/desktop/index.d.ts.map +1 -0
- package/dist/desktop/index.js +15 -0
- package/dist/desktop/index.js.map +1 -0
- package/dist/desktop/native-modules.d.ts +66 -0
- package/dist/desktop/native-modules.d.ts.map +1 -0
- package/dist/desktop/native-modules.js +200 -0
- package/dist/desktop/native-modules.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/LogCategories.d.ts +87 -0
- package/dist/logging/LogCategories.d.ts.map +1 -0
- package/dist/logging/LogCategories.js +205 -0
- package/dist/logging/LogCategories.js.map +1 -0
- package/dist/middleware/aiErrorHandler.d.ts +31 -0
- package/dist/middleware/aiErrorHandler.d.ts.map +1 -0
- package/dist/middleware/aiErrorHandler.js +181 -0
- package/dist/middleware/aiErrorHandler.js.map +1 -0
- package/dist/middleware/auth.d.ts +101 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +230 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/cors.d.ts +56 -0
- package/dist/middleware/cors.d.ts.map +1 -0
- package/dist/middleware/cors.js +123 -0
- package/dist/middleware/cors.js.map +1 -0
- package/dist/middleware/errorHandler.d.ts +13 -0
- package/dist/middleware/errorHandler.d.ts.map +1 -0
- package/dist/middleware/errorHandler.js +85 -0
- package/dist/middleware/errorHandler.js.map +1 -0
- package/dist/middleware/fileUpload.d.ts +62 -0
- package/dist/middleware/fileUpload.d.ts.map +1 -0
- package/dist/middleware/fileUpload.js +175 -0
- package/dist/middleware/fileUpload.js.map +1 -0
- package/dist/middleware/health.d.ts +48 -0
- package/dist/middleware/health.d.ts.map +1 -0
- package/dist/middleware/health.js +143 -0
- package/dist/middleware/health.js.map +1 -0
- package/dist/middleware/index.d.ts +20 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +18 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/openapi.d.ts +64 -0
- package/dist/middleware/openapi.d.ts.map +1 -0
- package/dist/middleware/openapi.js +258 -0
- package/dist/middleware/openapi.js.map +1 -0
- package/dist/middleware/requestLogging.d.ts +22 -0
- package/dist/middleware/requestLogging.d.ts.map +1 -0
- package/dist/middleware/requestLogging.js +61 -0
- package/dist/middleware/requestLogging.js.map +1 -0
- package/dist/middleware/session.d.ts +84 -0
- package/dist/middleware/session.d.ts.map +1 -0
- package/dist/middleware/session.js +189 -0
- package/dist/middleware/session.js.map +1 -0
- package/dist/middleware/validation.d.ts +1337 -0
- package/dist/middleware/validation.d.ts.map +1 -0
- package/dist/middleware/validation.js +483 -0
- package/dist/middleware/validation.js.map +1 -0
- package/dist/services/aiService.d.ts +180 -0
- package/dist/services/aiService.d.ts.map +1 -0
- package/dist/services/aiService.js +547 -0
- package/dist/services/aiService.js.map +1 -0
- package/dist/services/conversationStorage.d.ts +38 -0
- package/dist/services/conversationStorage.d.ts.map +1 -0
- package/dist/services/conversationStorage.js +158 -0
- package/dist/services/conversationStorage.js.map +1 -0
- package/dist/services/crossPlatformBuffer.d.ts +84 -0
- package/dist/services/crossPlatformBuffer.d.ts.map +1 -0
- package/dist/services/crossPlatformBuffer.js +246 -0
- package/dist/services/crossPlatformBuffer.js.map +1 -0
- package/dist/services/index.d.ts +17 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +18 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/networkService.d.ts +81 -0
- package/dist/services/networkService.d.ts.map +1 -0
- package/dist/services/networkService.js +268 -0
- package/dist/services/networkService.js.map +1 -0
- package/dist/services/queueService.d.ts +112 -0
- package/dist/services/queueService.d.ts.map +1 -0
- package/dist/services/queueService.js +338 -0
- package/dist/services/queueService.js.map +1 -0
- package/dist/services/settingsService.d.ts +135 -0
- package/dist/services/settingsService.d.ts.map +1 -0
- package/dist/services/settingsService.js +425 -0
- package/dist/services/settingsService.js.map +1 -0
- package/dist/services/systemMonitor.d.ts +208 -0
- package/dist/services/systemMonitor.d.ts.map +1 -0
- package/dist/services/systemMonitor.js +693 -0
- package/dist/services/systemMonitor.js.map +1 -0
- package/dist/services/updateService.d.ts +78 -0
- package/dist/services/updateService.d.ts.map +1 -0
- package/dist/services/updateService.js +252 -0
- package/dist/services/updateService.js.map +1 -0
- package/dist/services/websocketEvents.d.ts +372 -0
- package/dist/services/websocketEvents.d.ts.map +1 -0
- package/dist/services/websocketEvents.js +338 -0
- package/dist/services/websocketEvents.js.map +1 -0
- package/dist/services/websocketServer.d.ts +80 -0
- package/dist/services/websocketServer.d.ts.map +1 -0
- package/dist/services/websocketServer.js +299 -0
- package/dist/services/websocketServer.js.map +1 -0
- package/dist/settings/SettingsSchema.d.ts +151 -0
- package/dist/settings/SettingsSchema.d.ts.map +1 -0
- package/dist/settings/SettingsSchema.js +424 -0
- package/dist/settings/SettingsSchema.js.map +1 -0
- package/dist/testing/TestServer.d.ts +69 -0
- package/dist/testing/TestServer.d.ts.map +1 -0
- package/dist/testing/TestServer.js +250 -0
- package/dist/testing/TestServer.js.map +1 -0
- package/dist/types/index.d.ts +137 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/appPaths.d.ts +74 -0
- package/dist/utils/appPaths.d.ts.map +1 -0
- package/dist/utils/appPaths.js +162 -0
- package/dist/utils/appPaths.js.map +1 -0
- package/dist/utils/fs-utils.d.ts +50 -0
- package/dist/utils/fs-utils.d.ts.map +1 -0
- package/dist/utils/fs-utils.js +114 -0
- package/dist/utils/fs-utils.js.map +1 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +10 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/standardConfig.d.ts +61 -0
- package/dist/utils/standardConfig.d.ts.map +1 -0
- package/dist/utils/standardConfig.js +109 -0
- package/dist/utils/standardConfig.js.map +1 -0
- package/dist/utils/startupBanner.d.ts +34 -0
- package/dist/utils/startupBanner.d.ts.map +1 -0
- package/dist/utils/startupBanner.js +169 -0
- package/dist/utils/startupBanner.js.map +1 -0
- package/dist/utils/startupLogger.d.ts +45 -0
- package/dist/utils/startupLogger.d.ts.map +1 -0
- package/dist/utils/startupLogger.js +200 -0
- package/dist/utils/startupLogger.js.map +1 -0
- package/package.json +151 -0
- package/src/api/logsRouter.ts +600 -0
- package/src/cli/dev-server.ts +803 -0
- package/src/cli/index.ts +31 -0
- package/src/core/StandardServer.ts +587 -0
- package/src/core/apiResponse.ts +202 -0
- package/src/core/healthCheck.ts +565 -0
- package/src/core/index.ts +80 -0
- package/src/core/logger.ts +1092 -0
- package/src/core/portUtils.ts +319 -0
- package/src/core/storageService.ts +595 -0
- package/src/desktop/bundler.ts +271 -0
- package/src/desktop/index.ts +18 -0
- package/src/desktop/native-modules.ts +289 -0
- package/src/index.ts +142 -0
- package/src/logging/LogCategories.ts +302 -0
- package/src/middleware/aiErrorHandler.ts +278 -0
- package/src/middleware/auth.ts +329 -0
- package/src/middleware/cors.ts +187 -0
- package/src/middleware/errorHandler.ts +103 -0
- package/src/middleware/fileUpload.ts +252 -0
- package/src/middleware/health.ts +206 -0
- package/src/middleware/index.ts +71 -0
- package/src/middleware/openapi.ts +305 -0
- package/src/middleware/requestLogging.ts +92 -0
- package/src/middleware/session.ts +238 -0
- package/src/middleware/validation.ts +603 -0
- package/src/services/aiService.ts +789 -0
- package/src/services/conversationStorage.ts +232 -0
- package/src/services/crossPlatformBuffer.ts +341 -0
- package/src/services/index.ts +47 -0
- package/src/services/networkService.ts +351 -0
- package/src/services/queueService.ts +446 -0
- package/src/services/settingsService.ts +549 -0
- package/src/services/systemMonitor.ts +936 -0
- package/src/services/updateService.ts +334 -0
- package/src/services/websocketEvents.ts +409 -0
- package/src/services/websocketServer.ts +394 -0
- package/src/settings/SettingsSchema.ts +664 -0
- package/src/testing/TestServer.ts +312 -0
- package/src/types/index.ts +154 -0
- package/src/utils/appPaths.ts +196 -0
- package/src/utils/fs-utils.ts +130 -0
- package/src/utils/index.ts +15 -0
- package/src/utils/standardConfig.ts +178 -0
- package/src/utils/startupBanner.ts +287 -0
- package/src/utils/startupLogger.ts +268 -0
- package/ui/dist/index.d.mts +1221 -0
- package/ui/dist/index.d.ts +1221 -0
- package/ui/dist/index.js +73 -0
- package/ui/dist/index.js.map +1 -0
- package/ui/dist/index.mjs +73 -0
- package/ui/dist/index.mjs.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiResponse.js","sourceRoot":"","sources":["../../src/core/apiResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Check Service
|
|
3
|
+
* Provides real-time system health monitoring without intervention
|
|
4
|
+
* Data is informational only - no automatic service stops based on metrics
|
|
5
|
+
*/
|
|
6
|
+
import { Router } from "express";
|
|
7
|
+
export interface SystemHealth {
|
|
8
|
+
status: "healthy" | "degraded" | "unhealthy";
|
|
9
|
+
timestamp: string;
|
|
10
|
+
uptime: number;
|
|
11
|
+
environment: string;
|
|
12
|
+
version: string;
|
|
13
|
+
pid: number;
|
|
14
|
+
platform: string;
|
|
15
|
+
nodeVersion: string;
|
|
16
|
+
}
|
|
17
|
+
export interface SystemMetrics {
|
|
18
|
+
cpu: {
|
|
19
|
+
usage: number;
|
|
20
|
+
count: number;
|
|
21
|
+
model: string;
|
|
22
|
+
speed: number;
|
|
23
|
+
loadAverage: number[];
|
|
24
|
+
};
|
|
25
|
+
memory: {
|
|
26
|
+
total: number;
|
|
27
|
+
used: number;
|
|
28
|
+
free: number;
|
|
29
|
+
percentage: number;
|
|
30
|
+
};
|
|
31
|
+
disk: {
|
|
32
|
+
total: number;
|
|
33
|
+
used: number;
|
|
34
|
+
free: number;
|
|
35
|
+
percentage: number;
|
|
36
|
+
path: string;
|
|
37
|
+
};
|
|
38
|
+
network: {
|
|
39
|
+
interfaces: NetworkInterface[];
|
|
40
|
+
};
|
|
41
|
+
process: {
|
|
42
|
+
pid: number;
|
|
43
|
+
memory: NodeJS.MemoryUsage;
|
|
44
|
+
cpuUsage: NodeJS.CpuUsage;
|
|
45
|
+
uptime: number;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export interface NetworkInterface {
|
|
49
|
+
name: string;
|
|
50
|
+
address: string;
|
|
51
|
+
family: string;
|
|
52
|
+
internal: boolean;
|
|
53
|
+
}
|
|
54
|
+
export interface HealthCheckOptions {
|
|
55
|
+
includeCpu?: boolean;
|
|
56
|
+
includeMemory?: boolean;
|
|
57
|
+
includeDisk?: boolean;
|
|
58
|
+
includeNetwork?: boolean;
|
|
59
|
+
includeProcess?: boolean;
|
|
60
|
+
diskPath?: string;
|
|
61
|
+
customChecks?: CustomHealthCheck[];
|
|
62
|
+
}
|
|
63
|
+
export interface CustomHealthCheck {
|
|
64
|
+
name: string;
|
|
65
|
+
check: () => Promise<HealthCheckResult>;
|
|
66
|
+
}
|
|
67
|
+
export interface HealthCheckResult {
|
|
68
|
+
name: string;
|
|
69
|
+
status: "healthy" | "degraded" | "unhealthy";
|
|
70
|
+
message?: string;
|
|
71
|
+
data?: any;
|
|
72
|
+
}
|
|
73
|
+
export interface DependencyHealth {
|
|
74
|
+
name: string;
|
|
75
|
+
status: "connected" | "disconnected" | "error";
|
|
76
|
+
responseTime?: number;
|
|
77
|
+
error?: string;
|
|
78
|
+
}
|
|
79
|
+
declare class HealthCheckService {
|
|
80
|
+
private static instance;
|
|
81
|
+
private cpuUsageHistory;
|
|
82
|
+
private memoryUsageHistory;
|
|
83
|
+
private lastCpuInfo;
|
|
84
|
+
private metricsInterval?;
|
|
85
|
+
private historySize;
|
|
86
|
+
private constructor();
|
|
87
|
+
static getInstance(): HealthCheckService;
|
|
88
|
+
/**
|
|
89
|
+
* Get basic system health status
|
|
90
|
+
*/
|
|
91
|
+
getHealth(appVersion?: string): Promise<SystemHealth>;
|
|
92
|
+
/**
|
|
93
|
+
* Get detailed system metrics
|
|
94
|
+
*/
|
|
95
|
+
getMetrics(options?: HealthCheckOptions): Promise<SystemMetrics>;
|
|
96
|
+
/**
|
|
97
|
+
* Get CPU metrics with real usage calculation
|
|
98
|
+
*/
|
|
99
|
+
private getCpuMetrics;
|
|
100
|
+
/**
|
|
101
|
+
* Calculate real CPU usage percentage
|
|
102
|
+
*/
|
|
103
|
+
private calculateCpuUsage;
|
|
104
|
+
/**
|
|
105
|
+
* Get memory metrics
|
|
106
|
+
*/
|
|
107
|
+
private getMemoryMetrics;
|
|
108
|
+
/**
|
|
109
|
+
* Get disk metrics for specified path
|
|
110
|
+
*/
|
|
111
|
+
private getDiskMetrics;
|
|
112
|
+
/**
|
|
113
|
+
* Get network interface information
|
|
114
|
+
*/
|
|
115
|
+
private getNetworkMetrics;
|
|
116
|
+
/**
|
|
117
|
+
* Get current process metrics
|
|
118
|
+
*/
|
|
119
|
+
private getProcessMetrics;
|
|
120
|
+
/**
|
|
121
|
+
* Check dependency health (database, Redis, external APIs, etc.)
|
|
122
|
+
*/
|
|
123
|
+
checkDependencies(dependencies: {
|
|
124
|
+
name: string;
|
|
125
|
+
check: () => Promise<boolean>;
|
|
126
|
+
}[]): Promise<DependencyHealth[]>;
|
|
127
|
+
/**
|
|
128
|
+
* Run custom health checks
|
|
129
|
+
*/
|
|
130
|
+
runCustomChecks(checks: CustomHealthCheck[]): Promise<HealthCheckResult[]>;
|
|
131
|
+
/**
|
|
132
|
+
* Get metrics history for graphs
|
|
133
|
+
*/
|
|
134
|
+
getMetricsHistory(): {
|
|
135
|
+
cpu: number[];
|
|
136
|
+
memory: number[];
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Start collecting metrics periodically for history
|
|
140
|
+
*/
|
|
141
|
+
private startMetricsCollection;
|
|
142
|
+
/**
|
|
143
|
+
* Stop metrics collection (for cleanup)
|
|
144
|
+
*/
|
|
145
|
+
stopMetricsCollection(): void;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Create health check router for Express apps
|
|
149
|
+
*/
|
|
150
|
+
export declare function createHealthCheckRouter(options?: {
|
|
151
|
+
version?: string;
|
|
152
|
+
customChecks?: CustomHealthCheck[];
|
|
153
|
+
dependencies?: Array<{
|
|
154
|
+
name: string;
|
|
155
|
+
check: () => Promise<boolean>;
|
|
156
|
+
}>;
|
|
157
|
+
}): Router;
|
|
158
|
+
export declare function getHealthCheckService(): HealthCheckService;
|
|
159
|
+
export type { HealthCheckService };
|
|
160
|
+
//# sourceMappingURL=healthCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthCheck.d.ts","sourceRoot":"","sources":["../../src/core/healthCheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Health Check Service
|
|
3
|
+
* Provides real-time system health monitoring without intervention
|
|
4
|
+
* Data is informational only - no automatic service stops based on metrics
|
|
5
|
+
*/
|
|
6
|
+
import os from "os";
|
|
7
|
+
import { exec } from "child_process";
|
|
8
|
+
import { promisify } from "util";
|
|
9
|
+
import { Router } from "express";
|
|
10
|
+
const execAsync = promisify(exec);
|
|
11
|
+
class HealthCheckService {
|
|
12
|
+
static instance;
|
|
13
|
+
cpuUsageHistory = [];
|
|
14
|
+
memoryUsageHistory = [];
|
|
15
|
+
lastCpuInfo;
|
|
16
|
+
metricsInterval;
|
|
17
|
+
historySize = 60; // Keep last 60 data points
|
|
18
|
+
constructor() {
|
|
19
|
+
this.startMetricsCollection();
|
|
20
|
+
}
|
|
21
|
+
static getInstance() {
|
|
22
|
+
if (!HealthCheckService.instance) {
|
|
23
|
+
HealthCheckService.instance = new HealthCheckService();
|
|
24
|
+
}
|
|
25
|
+
return HealthCheckService.instance;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get basic system health status
|
|
29
|
+
*/
|
|
30
|
+
async getHealth(appVersion) {
|
|
31
|
+
// Health status is 'healthy' by default - system metrics are informational only
|
|
32
|
+
// Actual health is determined by custom checks (database, websocket, etc.)
|
|
33
|
+
const status = "healthy";
|
|
34
|
+
return {
|
|
35
|
+
status,
|
|
36
|
+
timestamp: new Date().toISOString(),
|
|
37
|
+
uptime: process.uptime(),
|
|
38
|
+
environment: process.env.NODE_ENV || "development",
|
|
39
|
+
version: appVersion || process.env.npm_package_version || "unknown",
|
|
40
|
+
pid: process.pid,
|
|
41
|
+
platform: process.platform,
|
|
42
|
+
nodeVersion: process.version,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get detailed system metrics
|
|
47
|
+
*/
|
|
48
|
+
async getMetrics(options = {}) {
|
|
49
|
+
const { includeCpu = true, includeMemory = true, includeDisk = true, includeNetwork = true, includeProcess = true, diskPath = process.cwd(), } = options;
|
|
50
|
+
const metrics = {};
|
|
51
|
+
if (includeCpu) {
|
|
52
|
+
metrics.cpu = await this.getCpuMetrics();
|
|
53
|
+
}
|
|
54
|
+
if (includeMemory) {
|
|
55
|
+
metrics.memory = this.getMemoryMetrics();
|
|
56
|
+
}
|
|
57
|
+
if (includeDisk) {
|
|
58
|
+
metrics.disk = await this.getDiskMetrics(diskPath);
|
|
59
|
+
}
|
|
60
|
+
if (includeNetwork) {
|
|
61
|
+
metrics.network = this.getNetworkMetrics();
|
|
62
|
+
}
|
|
63
|
+
if (includeProcess) {
|
|
64
|
+
metrics.process = this.getProcessMetrics();
|
|
65
|
+
}
|
|
66
|
+
return metrics;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get CPU metrics with real usage calculation
|
|
70
|
+
*/
|
|
71
|
+
async getCpuMetrics() {
|
|
72
|
+
const cpus = os.cpus();
|
|
73
|
+
const cpuModel = cpus[0]?.model || "Unknown";
|
|
74
|
+
const cpuSpeed = cpus[0]?.speed || 0;
|
|
75
|
+
const cpuCount = cpus.length;
|
|
76
|
+
const loadAverage = os.loadavg();
|
|
77
|
+
// Calculate CPU usage percentage
|
|
78
|
+
const cpuUsage = await this.calculateCpuUsage();
|
|
79
|
+
return {
|
|
80
|
+
usage: cpuUsage,
|
|
81
|
+
count: cpuCount,
|
|
82
|
+
model: cpuModel,
|
|
83
|
+
speed: cpuSpeed,
|
|
84
|
+
loadAverage,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Calculate real CPU usage percentage
|
|
89
|
+
*/
|
|
90
|
+
async calculateCpuUsage() {
|
|
91
|
+
const cpus = os.cpus();
|
|
92
|
+
// Calculate total and idle times
|
|
93
|
+
let totalIdle = 0;
|
|
94
|
+
let totalTick = 0;
|
|
95
|
+
cpus.forEach((cpu) => {
|
|
96
|
+
for (const type in cpu.times) {
|
|
97
|
+
totalTick += cpu.times[type];
|
|
98
|
+
}
|
|
99
|
+
totalIdle += cpu.times.idle;
|
|
100
|
+
});
|
|
101
|
+
const idle = totalIdle / cpus.length;
|
|
102
|
+
const total = totalTick / cpus.length;
|
|
103
|
+
// If we have previous measurements, calculate the difference
|
|
104
|
+
if (this.lastCpuInfo) {
|
|
105
|
+
const idleDiff = idle - this.lastCpuInfo.idle;
|
|
106
|
+
const totalDiff = total - this.lastCpuInfo.total;
|
|
107
|
+
const usage = 100 - (100 * idleDiff) / totalDiff;
|
|
108
|
+
this.lastCpuInfo = { idle, total };
|
|
109
|
+
return Math.min(100, Math.max(0, usage));
|
|
110
|
+
}
|
|
111
|
+
// First measurement - store for next time
|
|
112
|
+
this.lastCpuInfo = { idle, total };
|
|
113
|
+
// Fallback: use load average as approximation
|
|
114
|
+
const loadAvg = os.loadavg()[0]; // 1-minute load average
|
|
115
|
+
const approximateUsage = (loadAvg / cpus.length) * 100;
|
|
116
|
+
return Math.min(100, Math.max(0, approximateUsage));
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get memory metrics
|
|
120
|
+
*/
|
|
121
|
+
getMemoryMetrics() {
|
|
122
|
+
const totalMemory = os.totalmem();
|
|
123
|
+
const freeMemory = os.freemem();
|
|
124
|
+
const usedMemory = totalMemory - freeMemory;
|
|
125
|
+
const memoryPercentage = (usedMemory / totalMemory) * 100;
|
|
126
|
+
return {
|
|
127
|
+
total: totalMemory,
|
|
128
|
+
used: usedMemory,
|
|
129
|
+
free: freeMemory,
|
|
130
|
+
percentage: parseFloat(memoryPercentage.toFixed(2)),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get disk metrics for specified path
|
|
135
|
+
*/
|
|
136
|
+
async getDiskMetrics(diskPath) {
|
|
137
|
+
try {
|
|
138
|
+
// Platform-specific disk usage check
|
|
139
|
+
if (process.platform === "win32") {
|
|
140
|
+
// Windows: use wmic command
|
|
141
|
+
const { stdout } = await execAsync("wmic logicaldisk get size,freespace,caption");
|
|
142
|
+
const lines = stdout.split("\n").filter((line) => line.trim());
|
|
143
|
+
// Parse the output (this is simplified - may need adjustment)
|
|
144
|
+
const total = parseInt(lines[1]?.split(/\s+/)[2] || "0");
|
|
145
|
+
const free = parseInt(lines[1]?.split(/\s+/)[1] || "0");
|
|
146
|
+
const used = total - free;
|
|
147
|
+
return {
|
|
148
|
+
total,
|
|
149
|
+
used,
|
|
150
|
+
free,
|
|
151
|
+
percentage: total > 0 ? parseFloat(((used / total) * 100).toFixed(2)) : 0,
|
|
152
|
+
path: diskPath,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Unix-like systems: use df command
|
|
157
|
+
const { stdout } = await execAsync(`df -k "${diskPath}" | tail -1`);
|
|
158
|
+
const parts = stdout.trim().split(/\s+/);
|
|
159
|
+
// df output: filesystem 1K-blocks used available use% mounted
|
|
160
|
+
const total = parseInt(parts[1] || "0") * 1024;
|
|
161
|
+
const used = parseInt(parts[2] || "0") * 1024;
|
|
162
|
+
const available = parseInt(parts[3] || "0") * 1024;
|
|
163
|
+
const percentage = parseInt(parts[4]?.replace("%", "") || "0");
|
|
164
|
+
return {
|
|
165
|
+
total,
|
|
166
|
+
used,
|
|
167
|
+
free: available,
|
|
168
|
+
percentage,
|
|
169
|
+
path: diskPath,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch (_error) {
|
|
174
|
+
console.error("Failed to get disk metrics:", _error);
|
|
175
|
+
// Return zeros if we can't get disk stats
|
|
176
|
+
return {
|
|
177
|
+
total: 0,
|
|
178
|
+
used: 0,
|
|
179
|
+
free: 0,
|
|
180
|
+
percentage: 0,
|
|
181
|
+
path: diskPath,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Get network interface information
|
|
187
|
+
*/
|
|
188
|
+
getNetworkMetrics() {
|
|
189
|
+
const networkInterfaces = os.networkInterfaces();
|
|
190
|
+
const interfaces = [];
|
|
191
|
+
for (const [name, nets] of Object.entries(networkInterfaces)) {
|
|
192
|
+
if (nets) {
|
|
193
|
+
for (const net of nets) {
|
|
194
|
+
interfaces.push({
|
|
195
|
+
name,
|
|
196
|
+
address: net.address,
|
|
197
|
+
family: net.family,
|
|
198
|
+
internal: net.internal,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return { interfaces };
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Get current process metrics
|
|
207
|
+
*/
|
|
208
|
+
getProcessMetrics() {
|
|
209
|
+
return {
|
|
210
|
+
pid: process.pid,
|
|
211
|
+
memory: process.memoryUsage(),
|
|
212
|
+
cpuUsage: process.cpuUsage(),
|
|
213
|
+
uptime: process.uptime(),
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Check dependency health (database, Redis, external APIs, etc.)
|
|
218
|
+
*/
|
|
219
|
+
async checkDependencies(dependencies) {
|
|
220
|
+
const results = [];
|
|
221
|
+
for (const dep of dependencies) {
|
|
222
|
+
const startTime = Date.now();
|
|
223
|
+
try {
|
|
224
|
+
const isHealthy = await dep.check();
|
|
225
|
+
results.push({
|
|
226
|
+
name: dep.name,
|
|
227
|
+
status: isHealthy ? "connected" : "disconnected",
|
|
228
|
+
responseTime: Date.now() - startTime,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
catch (_error) {
|
|
232
|
+
results.push({
|
|
233
|
+
name: dep.name,
|
|
234
|
+
status: "error",
|
|
235
|
+
responseTime: Date.now() - startTime,
|
|
236
|
+
error: _error instanceof Error ? _error.message : "Unknown error",
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return results;
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Run custom health checks
|
|
244
|
+
*/
|
|
245
|
+
async runCustomChecks(checks) {
|
|
246
|
+
const results = [];
|
|
247
|
+
for (const check of checks) {
|
|
248
|
+
try {
|
|
249
|
+
const result = await check.check();
|
|
250
|
+
results.push(result);
|
|
251
|
+
}
|
|
252
|
+
catch (_error) {
|
|
253
|
+
results.push({
|
|
254
|
+
name: check.name,
|
|
255
|
+
status: "unhealthy",
|
|
256
|
+
message: _error instanceof Error ? _error.message : "Check failed",
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return results;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get metrics history for graphs
|
|
264
|
+
*/
|
|
265
|
+
getMetricsHistory() {
|
|
266
|
+
return {
|
|
267
|
+
cpu: [...this.cpuUsageHistory],
|
|
268
|
+
memory: [...this.memoryUsageHistory],
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Start collecting metrics periodically for history
|
|
273
|
+
*/
|
|
274
|
+
startMetricsCollection() {
|
|
275
|
+
// Collect metrics every 5 seconds
|
|
276
|
+
this.metricsInterval = setInterval(async () => {
|
|
277
|
+
try {
|
|
278
|
+
const metrics = await this.getMetrics();
|
|
279
|
+
// Add to history
|
|
280
|
+
this.cpuUsageHistory.push(metrics.cpu.usage);
|
|
281
|
+
this.memoryUsageHistory.push(metrics.memory.percentage);
|
|
282
|
+
// Keep only last N data points
|
|
283
|
+
if (this.cpuUsageHistory.length > this.historySize) {
|
|
284
|
+
this.cpuUsageHistory.shift();
|
|
285
|
+
}
|
|
286
|
+
if (this.memoryUsageHistory.length > this.historySize) {
|
|
287
|
+
this.memoryUsageHistory.shift();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
catch (_error) {
|
|
291
|
+
console.error("Failed to collect metrics:", _error);
|
|
292
|
+
}
|
|
293
|
+
}, 5000);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Stop metrics collection (for cleanup)
|
|
297
|
+
*/
|
|
298
|
+
stopMetricsCollection() {
|
|
299
|
+
if (this.metricsInterval) {
|
|
300
|
+
clearInterval(this.metricsInterval);
|
|
301
|
+
this.metricsInterval = undefined;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Create health check router for Express apps
|
|
307
|
+
*/
|
|
308
|
+
export function createHealthCheckRouter(options) {
|
|
309
|
+
const router = Router();
|
|
310
|
+
const healthService = HealthCheckService.getInstance();
|
|
311
|
+
// Basic health endpoint
|
|
312
|
+
router.get("/health", async (_req, res) => {
|
|
313
|
+
try {
|
|
314
|
+
const health = await healthService.getHealth(options?.version);
|
|
315
|
+
// Run custom checks if provided
|
|
316
|
+
if (options?.customChecks && options.customChecks.length > 0) {
|
|
317
|
+
const customResults = await Promise.all(options.customChecks.map((check) => check.check()));
|
|
318
|
+
// Add custom check results to health object
|
|
319
|
+
health.checks = customResults;
|
|
320
|
+
// Update overall status based ONLY on custom checks
|
|
321
|
+
const hasUnhealthy = customResults.some((r) => r.status === "unhealthy");
|
|
322
|
+
const hasDegraded = customResults.some((r) => r.status === "degraded");
|
|
323
|
+
if (hasUnhealthy) {
|
|
324
|
+
health.status = "unhealthy";
|
|
325
|
+
}
|
|
326
|
+
else if (hasDegraded) {
|
|
327
|
+
health.status = "degraded";
|
|
328
|
+
}
|
|
329
|
+
// Otherwise keep default 'healthy' status
|
|
330
|
+
}
|
|
331
|
+
const statusCode = health.status === "healthy"
|
|
332
|
+
? 200
|
|
333
|
+
: health.status === "degraded"
|
|
334
|
+
? 200
|
|
335
|
+
: 503;
|
|
336
|
+
res.status(statusCode).json(health);
|
|
337
|
+
}
|
|
338
|
+
catch (_error) {
|
|
339
|
+
res.status(503).json({
|
|
340
|
+
status: "unhealthy",
|
|
341
|
+
error: "Failed to get health status",
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
// Detailed metrics endpoint
|
|
346
|
+
router.get("/metrics", async (_req, res) => {
|
|
347
|
+
try {
|
|
348
|
+
const metrics = await healthService.getMetrics();
|
|
349
|
+
res.json(metrics);
|
|
350
|
+
}
|
|
351
|
+
catch (_error) {
|
|
352
|
+
res.status(500).json({
|
|
353
|
+
error: "Failed to get metrics",
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
// Metrics history for graphs
|
|
358
|
+
router.get("/metrics/history", (_req, res) => {
|
|
359
|
+
const history = healthService.getMetricsHistory();
|
|
360
|
+
res.json(history);
|
|
361
|
+
});
|
|
362
|
+
// Dependency health checks
|
|
363
|
+
if (options?.dependencies) {
|
|
364
|
+
router.get("/health/dependencies", async (_req, res) => {
|
|
365
|
+
try {
|
|
366
|
+
const results = await healthService.checkDependencies(options.dependencies);
|
|
367
|
+
const allHealthy = results.every((r) => r.status === "connected");
|
|
368
|
+
res.status(allHealthy ? 200 : 503).json(results);
|
|
369
|
+
}
|
|
370
|
+
catch (_error) {
|
|
371
|
+
res.status(500).json({
|
|
372
|
+
error: "Failed to check dependencies",
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
// Custom health checks
|
|
378
|
+
if (options?.customChecks) {
|
|
379
|
+
router.get("/health/custom", async (_req, res) => {
|
|
380
|
+
try {
|
|
381
|
+
const results = await healthService.runCustomChecks(options.customChecks);
|
|
382
|
+
const allHealthy = results.every((r) => r.status === "healthy");
|
|
383
|
+
res.status(allHealthy ? 200 : 503).json(results);
|
|
384
|
+
}
|
|
385
|
+
catch (_error) {
|
|
386
|
+
res.status(500).json({
|
|
387
|
+
error: "Failed to run custom checks",
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
return router;
|
|
393
|
+
}
|
|
394
|
+
// Export singleton instance getter
|
|
395
|
+
export function getHealthCheckService() {
|
|
396
|
+
return HealthCheckService.getInstance();
|
|
397
|
+
}
|
|
398
|
+
//# sourceMappingURL=healthCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"healthCheck.js","sourceRoot":"","sources":["../../src/core/healthCheck.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Framework Components
|
|
3
|
+
*
|
|
4
|
+
* These are generic, reusable components that could be extracted
|
|
5
|
+
* into a separate npm package for use in other applications.
|
|
6
|
+
*/
|
|
7
|
+
export declare const FRAMEWORK_VERSION = "4.4.0";
|
|
8
|
+
export { StandardServer, createStandardServer } from "./StandardServer.js";
|
|
9
|
+
export type { StandardServerConfig } from "./StandardServer.js";
|
|
10
|
+
export { clearPort, isPortAvailable, getPortInfo, getProcessOnPort, findAvailablePort, checkRequiredPorts, formatPortStatus, waitForPort, getPortsInUse, type ProcessInfo, type PortStatus, type PortClearResult, type PortStatusResult, } from "./portUtils.js";
|
|
11
|
+
export { getLogger, default as Logger, createLogger as createLoggerBase, } from "./logger.js";
|
|
12
|
+
/**
|
|
13
|
+
* Create a logger instance with automatic file output
|
|
14
|
+
* @param name - The name/category for this logger
|
|
15
|
+
* @returns A logger instance that writes to console and files
|
|
16
|
+
*/
|
|
17
|
+
export declare function createLogger(name: string): any;
|
|
18
|
+
export interface Logger {
|
|
19
|
+
info: (...args: any[]) => void;
|
|
20
|
+
error: (...args: any[]) => void;
|
|
21
|
+
warn: (...args: any[]) => void;
|
|
22
|
+
debug: (...args: any[]) => void;
|
|
23
|
+
}
|
|
24
|
+
export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
25
|
+
export { getStorageService, StorageService, getSecureFileHandler, SecureFileHandler, } from "./storageService.js";
|
|
26
|
+
/**
|
|
27
|
+
* Usage Example:
|
|
28
|
+
*
|
|
29
|
+
* import { StandardServer, createLogger } from '@/core';
|
|
30
|
+
*
|
|
31
|
+
* const logger = createLogger('MyApp');
|
|
32
|
+
* const server = new StandardServer({
|
|
33
|
+
* appName: 'MyApp',
|
|
34
|
+
* appVersion: '1.0.0',
|
|
35
|
+
* port: 8080
|
|
36
|
+
* });
|
|
37
|
+
* await server.initialize();
|
|
38
|
+
* await server.start();
|
|
39
|
+
*/
|
|
40
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,eAAO,MAAM,iBAAiB,UAAU,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACL,SAAS,EACT,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,SAAS,EACT,OAAO,IAAI,MAAM,EACjB,YAAY,IAAI,gBAAgB,GACjC,MAAM,aAAa,CAAC;AAIrB;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,OAGxC;AAGD,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAChC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC/B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAG3D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;GAaG"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Framework Components
|
|
3
|
+
*
|
|
4
|
+
* These are generic, reusable components that could be extracted
|
|
5
|
+
* into a separate npm package for use in other applications.
|
|
6
|
+
*/
|
|
7
|
+
// Framework version
|
|
8
|
+
export const FRAMEWORK_VERSION = "4.4.0";
|
|
9
|
+
// Process Management
|
|
10
|
+
export { StandardServer, createStandardServer } from "./StandardServer.js";
|
|
11
|
+
export { clearPort, isPortAvailable, getPortInfo, getProcessOnPort, findAvailablePort, checkRequiredPorts, formatPortStatus, waitForPort, getPortsInUse, } from "./portUtils.js";
|
|
12
|
+
// Logging - Consolidated logger implementation
|
|
13
|
+
export { getLogger, default as Logger, createLogger as createLoggerBase, } from "./logger.js";
|
|
14
|
+
import { createLogger as createLoggerImport } from "./logger.js";
|
|
15
|
+
/**
|
|
16
|
+
* Create a logger instance with automatic file output
|
|
17
|
+
* @param name - The name/category for this logger
|
|
18
|
+
* @returns A logger instance that writes to console and files
|
|
19
|
+
*/
|
|
20
|
+
export function createLogger(name) {
|
|
21
|
+
// Use the createLogger function from logger
|
|
22
|
+
return createLoggerImport(name);
|
|
23
|
+
}
|
|
24
|
+
// Security
|
|
25
|
+
export { getStorageService, StorageService, getSecureFileHandler, SecureFileHandler, } from "./storageService.js";
|
|
26
|
+
/**
|
|
27
|
+
* Usage Example:
|
|
28
|
+
*
|
|
29
|
+
* import { StandardServer, createLogger } from '@/core';
|
|
30
|
+
*
|
|
31
|
+
* const logger = createLogger('MyApp');
|
|
32
|
+
* const server = new StandardServer({
|
|
33
|
+
* appName: 'MyApp',
|
|
34
|
+
* appVersion: '1.0.0',
|
|
35
|
+
* port: 8080
|
|
36
|
+
* });
|
|
37
|
+
* await server.initialize();
|
|
38
|
+
* await server.start();
|
|
39
|
+
*/
|
|
40
|
+
//# sourceMappingURL=index.js.map
|