@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.
Files changed (239) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +652 -0
  3. package/dist/api/logsRouter.d.ts +20 -0
  4. package/dist/api/logsRouter.d.ts.map +1 -0
  5. package/dist/api/logsRouter.js +515 -0
  6. package/dist/api/logsRouter.js.map +1 -0
  7. package/dist/cli/dev-server.d.ts +7 -0
  8. package/dist/cli/dev-server.d.ts.map +1 -0
  9. package/dist/cli/dev-server.js +640 -0
  10. package/dist/cli/dev-server.js.map +1 -0
  11. package/dist/cli/index.d.ts +7 -0
  12. package/dist/cli/index.d.ts.map +1 -0
  13. package/dist/cli/index.js +26 -0
  14. package/dist/cli/index.js.map +1 -0
  15. package/dist/core/StandardServer.d.ts +129 -0
  16. package/dist/core/StandardServer.d.ts.map +1 -0
  17. package/dist/core/StandardServer.js +453 -0
  18. package/dist/core/StandardServer.js.map +1 -0
  19. package/dist/core/apiResponse.d.ts +69 -0
  20. package/dist/core/apiResponse.d.ts.map +1 -0
  21. package/dist/core/apiResponse.js +127 -0
  22. package/dist/core/apiResponse.js.map +1 -0
  23. package/dist/core/healthCheck.d.ts +160 -0
  24. package/dist/core/healthCheck.d.ts.map +1 -0
  25. package/dist/core/healthCheck.js +398 -0
  26. package/dist/core/healthCheck.js.map +1 -0
  27. package/dist/core/index.d.ts +40 -0
  28. package/dist/core/index.d.ts.map +1 -0
  29. package/dist/core/index.js +40 -0
  30. package/dist/core/index.js.map +1 -0
  31. package/dist/core/logger.d.ts +117 -0
  32. package/dist/core/logger.d.ts.map +1 -0
  33. package/dist/core/logger.js +826 -0
  34. package/dist/core/logger.js.map +1 -0
  35. package/dist/core/portUtils.d.ts +71 -0
  36. package/dist/core/portUtils.d.ts.map +1 -0
  37. package/dist/core/portUtils.js +240 -0
  38. package/dist/core/portUtils.js.map +1 -0
  39. package/dist/core/storageService.d.ts +119 -0
  40. package/dist/core/storageService.d.ts.map +1 -0
  41. package/dist/core/storageService.js +405 -0
  42. package/dist/core/storageService.js.map +1 -0
  43. package/dist/desktop/bundler.d.ts +40 -0
  44. package/dist/desktop/bundler.d.ts.map +1 -0
  45. package/dist/desktop/bundler.js +176 -0
  46. package/dist/desktop/bundler.js.map +1 -0
  47. package/dist/desktop/index.d.ts +25 -0
  48. package/dist/desktop/index.d.ts.map +1 -0
  49. package/dist/desktop/index.js +15 -0
  50. package/dist/desktop/index.js.map +1 -0
  51. package/dist/desktop/native-modules.d.ts +66 -0
  52. package/dist/desktop/native-modules.d.ts.map +1 -0
  53. package/dist/desktop/native-modules.js +200 -0
  54. package/dist/desktop/native-modules.js.map +1 -0
  55. package/dist/index.d.ts +29 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +39 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/logging/LogCategories.d.ts +87 -0
  60. package/dist/logging/LogCategories.d.ts.map +1 -0
  61. package/dist/logging/LogCategories.js +205 -0
  62. package/dist/logging/LogCategories.js.map +1 -0
  63. package/dist/middleware/aiErrorHandler.d.ts +31 -0
  64. package/dist/middleware/aiErrorHandler.d.ts.map +1 -0
  65. package/dist/middleware/aiErrorHandler.js +181 -0
  66. package/dist/middleware/aiErrorHandler.js.map +1 -0
  67. package/dist/middleware/auth.d.ts +101 -0
  68. package/dist/middleware/auth.d.ts.map +1 -0
  69. package/dist/middleware/auth.js +230 -0
  70. package/dist/middleware/auth.js.map +1 -0
  71. package/dist/middleware/cors.d.ts +56 -0
  72. package/dist/middleware/cors.d.ts.map +1 -0
  73. package/dist/middleware/cors.js +123 -0
  74. package/dist/middleware/cors.js.map +1 -0
  75. package/dist/middleware/errorHandler.d.ts +13 -0
  76. package/dist/middleware/errorHandler.d.ts.map +1 -0
  77. package/dist/middleware/errorHandler.js +85 -0
  78. package/dist/middleware/errorHandler.js.map +1 -0
  79. package/dist/middleware/fileUpload.d.ts +62 -0
  80. package/dist/middleware/fileUpload.d.ts.map +1 -0
  81. package/dist/middleware/fileUpload.js +175 -0
  82. package/dist/middleware/fileUpload.js.map +1 -0
  83. package/dist/middleware/health.d.ts +48 -0
  84. package/dist/middleware/health.d.ts.map +1 -0
  85. package/dist/middleware/health.js +143 -0
  86. package/dist/middleware/health.js.map +1 -0
  87. package/dist/middleware/index.d.ts +20 -0
  88. package/dist/middleware/index.d.ts.map +1 -0
  89. package/dist/middleware/index.js +18 -0
  90. package/dist/middleware/index.js.map +1 -0
  91. package/dist/middleware/openapi.d.ts +64 -0
  92. package/dist/middleware/openapi.d.ts.map +1 -0
  93. package/dist/middleware/openapi.js +258 -0
  94. package/dist/middleware/openapi.js.map +1 -0
  95. package/dist/middleware/requestLogging.d.ts +22 -0
  96. package/dist/middleware/requestLogging.d.ts.map +1 -0
  97. package/dist/middleware/requestLogging.js +61 -0
  98. package/dist/middleware/requestLogging.js.map +1 -0
  99. package/dist/middleware/session.d.ts +84 -0
  100. package/dist/middleware/session.d.ts.map +1 -0
  101. package/dist/middleware/session.js +189 -0
  102. package/dist/middleware/session.js.map +1 -0
  103. package/dist/middleware/validation.d.ts +1337 -0
  104. package/dist/middleware/validation.d.ts.map +1 -0
  105. package/dist/middleware/validation.js +483 -0
  106. package/dist/middleware/validation.js.map +1 -0
  107. package/dist/services/aiService.d.ts +180 -0
  108. package/dist/services/aiService.d.ts.map +1 -0
  109. package/dist/services/aiService.js +547 -0
  110. package/dist/services/aiService.js.map +1 -0
  111. package/dist/services/conversationStorage.d.ts +38 -0
  112. package/dist/services/conversationStorage.d.ts.map +1 -0
  113. package/dist/services/conversationStorage.js +158 -0
  114. package/dist/services/conversationStorage.js.map +1 -0
  115. package/dist/services/crossPlatformBuffer.d.ts +84 -0
  116. package/dist/services/crossPlatformBuffer.d.ts.map +1 -0
  117. package/dist/services/crossPlatformBuffer.js +246 -0
  118. package/dist/services/crossPlatformBuffer.js.map +1 -0
  119. package/dist/services/index.d.ts +17 -0
  120. package/dist/services/index.d.ts.map +1 -0
  121. package/dist/services/index.js +18 -0
  122. package/dist/services/index.js.map +1 -0
  123. package/dist/services/networkService.d.ts +81 -0
  124. package/dist/services/networkService.d.ts.map +1 -0
  125. package/dist/services/networkService.js +268 -0
  126. package/dist/services/networkService.js.map +1 -0
  127. package/dist/services/queueService.d.ts +112 -0
  128. package/dist/services/queueService.d.ts.map +1 -0
  129. package/dist/services/queueService.js +338 -0
  130. package/dist/services/queueService.js.map +1 -0
  131. package/dist/services/settingsService.d.ts +135 -0
  132. package/dist/services/settingsService.d.ts.map +1 -0
  133. package/dist/services/settingsService.js +425 -0
  134. package/dist/services/settingsService.js.map +1 -0
  135. package/dist/services/systemMonitor.d.ts +208 -0
  136. package/dist/services/systemMonitor.d.ts.map +1 -0
  137. package/dist/services/systemMonitor.js +693 -0
  138. package/dist/services/systemMonitor.js.map +1 -0
  139. package/dist/services/updateService.d.ts +78 -0
  140. package/dist/services/updateService.d.ts.map +1 -0
  141. package/dist/services/updateService.js +252 -0
  142. package/dist/services/updateService.js.map +1 -0
  143. package/dist/services/websocketEvents.d.ts +372 -0
  144. package/dist/services/websocketEvents.d.ts.map +1 -0
  145. package/dist/services/websocketEvents.js +338 -0
  146. package/dist/services/websocketEvents.js.map +1 -0
  147. package/dist/services/websocketServer.d.ts +80 -0
  148. package/dist/services/websocketServer.d.ts.map +1 -0
  149. package/dist/services/websocketServer.js +299 -0
  150. package/dist/services/websocketServer.js.map +1 -0
  151. package/dist/settings/SettingsSchema.d.ts +151 -0
  152. package/dist/settings/SettingsSchema.d.ts.map +1 -0
  153. package/dist/settings/SettingsSchema.js +424 -0
  154. package/dist/settings/SettingsSchema.js.map +1 -0
  155. package/dist/testing/TestServer.d.ts +69 -0
  156. package/dist/testing/TestServer.d.ts.map +1 -0
  157. package/dist/testing/TestServer.js +250 -0
  158. package/dist/testing/TestServer.js.map +1 -0
  159. package/dist/types/index.d.ts +137 -0
  160. package/dist/types/index.d.ts.map +1 -0
  161. package/dist/types/index.js +5 -0
  162. package/dist/types/index.js.map +1 -0
  163. package/dist/utils/appPaths.d.ts +74 -0
  164. package/dist/utils/appPaths.d.ts.map +1 -0
  165. package/dist/utils/appPaths.js +162 -0
  166. package/dist/utils/appPaths.js.map +1 -0
  167. package/dist/utils/fs-utils.d.ts +50 -0
  168. package/dist/utils/fs-utils.d.ts.map +1 -0
  169. package/dist/utils/fs-utils.js +114 -0
  170. package/dist/utils/fs-utils.js.map +1 -0
  171. package/dist/utils/index.d.ts +12 -0
  172. package/dist/utils/index.d.ts.map +1 -0
  173. package/dist/utils/index.js +10 -0
  174. package/dist/utils/index.js.map +1 -0
  175. package/dist/utils/standardConfig.d.ts +61 -0
  176. package/dist/utils/standardConfig.d.ts.map +1 -0
  177. package/dist/utils/standardConfig.js +109 -0
  178. package/dist/utils/standardConfig.js.map +1 -0
  179. package/dist/utils/startupBanner.d.ts +34 -0
  180. package/dist/utils/startupBanner.d.ts.map +1 -0
  181. package/dist/utils/startupBanner.js +169 -0
  182. package/dist/utils/startupBanner.js.map +1 -0
  183. package/dist/utils/startupLogger.d.ts +45 -0
  184. package/dist/utils/startupLogger.d.ts.map +1 -0
  185. package/dist/utils/startupLogger.js +200 -0
  186. package/dist/utils/startupLogger.js.map +1 -0
  187. package/package.json +151 -0
  188. package/src/api/logsRouter.ts +600 -0
  189. package/src/cli/dev-server.ts +803 -0
  190. package/src/cli/index.ts +31 -0
  191. package/src/core/StandardServer.ts +587 -0
  192. package/src/core/apiResponse.ts +202 -0
  193. package/src/core/healthCheck.ts +565 -0
  194. package/src/core/index.ts +80 -0
  195. package/src/core/logger.ts +1092 -0
  196. package/src/core/portUtils.ts +319 -0
  197. package/src/core/storageService.ts +595 -0
  198. package/src/desktop/bundler.ts +271 -0
  199. package/src/desktop/index.ts +18 -0
  200. package/src/desktop/native-modules.ts +289 -0
  201. package/src/index.ts +142 -0
  202. package/src/logging/LogCategories.ts +302 -0
  203. package/src/middleware/aiErrorHandler.ts +278 -0
  204. package/src/middleware/auth.ts +329 -0
  205. package/src/middleware/cors.ts +187 -0
  206. package/src/middleware/errorHandler.ts +103 -0
  207. package/src/middleware/fileUpload.ts +252 -0
  208. package/src/middleware/health.ts +206 -0
  209. package/src/middleware/index.ts +71 -0
  210. package/src/middleware/openapi.ts +305 -0
  211. package/src/middleware/requestLogging.ts +92 -0
  212. package/src/middleware/session.ts +238 -0
  213. package/src/middleware/validation.ts +603 -0
  214. package/src/services/aiService.ts +789 -0
  215. package/src/services/conversationStorage.ts +232 -0
  216. package/src/services/crossPlatformBuffer.ts +341 -0
  217. package/src/services/index.ts +47 -0
  218. package/src/services/networkService.ts +351 -0
  219. package/src/services/queueService.ts +446 -0
  220. package/src/services/settingsService.ts +549 -0
  221. package/src/services/systemMonitor.ts +936 -0
  222. package/src/services/updateService.ts +334 -0
  223. package/src/services/websocketEvents.ts +409 -0
  224. package/src/services/websocketServer.ts +394 -0
  225. package/src/settings/SettingsSchema.ts +664 -0
  226. package/src/testing/TestServer.ts +312 -0
  227. package/src/types/index.ts +154 -0
  228. package/src/utils/appPaths.ts +196 -0
  229. package/src/utils/fs-utils.ts +130 -0
  230. package/src/utils/index.ts +15 -0
  231. package/src/utils/standardConfig.ts +178 -0
  232. package/src/utils/startupBanner.ts +287 -0
  233. package/src/utils/startupLogger.ts +268 -0
  234. package/ui/dist/index.d.mts +1221 -0
  235. package/ui/dist/index.d.ts +1221 -0
  236. package/ui/dist/index.js +73 -0
  237. package/ui/dist/index.js.map +1 -0
  238. package/ui/dist/index.mjs +73 -0
  239. package/ui/dist/index.mjs.map +1 -0
@@ -0,0 +1,425 @@
1
+ /**
2
+ * Settings Service
3
+ * Manages application settings with persistence, validation, and real-time updates
4
+ */
5
+ import fs from "fs";
6
+ import path from "path";
7
+ import { EventEmitter } from "events";
8
+ import { createLogger } from "../core/index.js";
9
+ let logger; // Will be initialized when needed
10
+ function ensureLogger() {
11
+ if (!logger) {
12
+ logger = createLogger("SettingsService");
13
+ }
14
+ return logger;
15
+ }
16
+ export class SettingsService extends EventEmitter {
17
+ options;
18
+ categories = new Map();
19
+ settings = {};
20
+ storagePath;
21
+ autoSave;
22
+ saveDebounce;
23
+ saveTimeout;
24
+ sensitiveFields;
25
+ constructor(options = {}) {
26
+ super();
27
+ this.options = options;
28
+ this.storagePath = options.storagePath;
29
+ this.autoSave = options.autoSave ?? true;
30
+ this.saveDebounce = options.saveDebounce ?? 1000;
31
+ this.sensitiveFields = new Set(options.sensitiveFields || []);
32
+ }
33
+ /**
34
+ * Register a settings category
35
+ */
36
+ registerCategory(category) {
37
+ this.categories.set(category.id, category);
38
+ // Initialize default values
39
+ for (const field of category.fields) {
40
+ if (field.defaultValue !== undefined && !(field.key in this.settings)) {
41
+ this.settings[field.key] = field.defaultValue;
42
+ }
43
+ }
44
+ ensureLogger().info(`Registered settings category: ${category.id}`);
45
+ }
46
+ /**
47
+ * Load settings from storage
48
+ */
49
+ async load() {
50
+ if (!this.storagePath) {
51
+ ensureLogger().info("No storage path configured, using defaults");
52
+ return;
53
+ }
54
+ try {
55
+ const fullPath = path.resolve(this.storagePath);
56
+ if (!fs.existsSync(fullPath)) {
57
+ ensureLogger().info("Settings file not found, using defaults");
58
+ return;
59
+ }
60
+ const content = await fs.promises.readFile(fullPath, "utf-8");
61
+ const loaded = JSON.parse(content);
62
+ // Merge with defaults
63
+ this.settings = { ...this.settings, ...loaded };
64
+ // Decrypt sensitive fields if needed
65
+ if (this.options.encryptSensitive) {
66
+ this.decryptSensitiveFields();
67
+ }
68
+ ensureLogger().info("Settings loaded successfully");
69
+ this.emit("loaded", this.settings);
70
+ }
71
+ catch (_error) {
72
+ ensureLogger().error("Failed to load settings:", _error);
73
+ throw new Error(`Failed to load settings: ${_error.message}`);
74
+ }
75
+ }
76
+ /**
77
+ * Save settings to storage
78
+ */
79
+ async save() {
80
+ if (!this.storagePath) {
81
+ ensureLogger().info("No storage path configured, skipping save");
82
+ return;
83
+ }
84
+ try {
85
+ const fullPath = path.resolve(this.storagePath);
86
+ const dir = path.dirname(fullPath);
87
+ // Ensure directory exists
88
+ if (!fs.existsSync(dir)) {
89
+ await fs.promises.mkdir(dir, { recursive: true });
90
+ }
91
+ // Prepare settings for saving
92
+ let toSave = { ...this.settings };
93
+ // Encrypt sensitive fields if needed
94
+ if (this.options.encryptSensitive) {
95
+ toSave = this.encryptSensitiveFields(toSave);
96
+ }
97
+ // Save to file
98
+ const content = JSON.stringify(toSave, null, 2);
99
+ await fs.promises.writeFile(fullPath, content, "utf-8");
100
+ ensureLogger().info("Settings saved successfully");
101
+ this.emit("saved", this.settings);
102
+ }
103
+ catch (_error) {
104
+ ensureLogger().error("Failed to save settings:", _error);
105
+ throw new Error(`Failed to save settings: ${_error.message}`);
106
+ }
107
+ }
108
+ /**
109
+ * Get a setting value
110
+ */
111
+ get(key, defaultValue) {
112
+ const value = this.getNestedValue(this.settings, key);
113
+ return value !== undefined ? value : defaultValue;
114
+ }
115
+ /**
116
+ * Set a setting value
117
+ */
118
+ async set(key, value) {
119
+ const previous = this.get(key);
120
+ // Find field definition
121
+ const field = this.findField(key);
122
+ // Validate if field has validation
123
+ if (field?.validation) {
124
+ const result = field.validation.safeParse(value);
125
+ if (!result.success) {
126
+ throw new Error(`Validation failed for ${key}: ${result.error.message}`);
127
+ }
128
+ value = result.data;
129
+ }
130
+ // Apply transform if defined
131
+ if (field?.transform) {
132
+ value = field.transform(value);
133
+ }
134
+ // Set the value
135
+ this.setNestedValue(this.settings, key, value);
136
+ // Emit change event
137
+ this.emit("change", { key, value, previous });
138
+ // Auto-save if enabled
139
+ if (this.autoSave) {
140
+ this.scheduleSave();
141
+ }
142
+ }
143
+ /**
144
+ * Update multiple settings
145
+ */
146
+ async update(updates) {
147
+ const changes = [];
148
+ for (const [key, value] of Object.entries(updates)) {
149
+ const previous = this.get(key);
150
+ await this.set(key, value);
151
+ changes.push({ key, value, previous });
152
+ }
153
+ this.emit("bulk-change", changes);
154
+ }
155
+ /**
156
+ * Get all settings
157
+ */
158
+ getAll() {
159
+ return { ...this.settings };
160
+ }
161
+ /**
162
+ * Get settings by category
163
+ */
164
+ getByCategory(categoryId) {
165
+ const category = this.categories.get(categoryId);
166
+ if (!category) {
167
+ return {};
168
+ }
169
+ const result = {};
170
+ for (const field of category.fields) {
171
+ result[field.key] = this.get(field.key, field.defaultValue);
172
+ }
173
+ return result;
174
+ }
175
+ /**
176
+ * Get all categories
177
+ */
178
+ getCategories() {
179
+ return Array.from(this.categories.values()).sort((a, b) => (a.order || 0) - (b.order || 0));
180
+ }
181
+ /**
182
+ * Get category by ID
183
+ */
184
+ getCategory(id) {
185
+ return this.categories.get(id);
186
+ }
187
+ /**
188
+ * Validate all settings
189
+ */
190
+ validate() {
191
+ const errors = {};
192
+ for (const category of this.categories.values()) {
193
+ for (const field of category.fields) {
194
+ const value = this.get(field.key);
195
+ // Check required fields
196
+ if (field.required &&
197
+ (value === undefined || value === null || value === "")) {
198
+ errors[field.key] = `${field.label} is required`;
199
+ continue;
200
+ }
201
+ // Validate with schema
202
+ if (field.validation && value !== undefined) {
203
+ const result = field.validation.safeParse(value);
204
+ if (!result.success) {
205
+ errors[field.key] =
206
+ result.error.issues[0]?.message || "Validation failed";
207
+ }
208
+ }
209
+ }
210
+ }
211
+ return {
212
+ valid: Object.keys(errors).length === 0,
213
+ errors,
214
+ };
215
+ }
216
+ /**
217
+ * Reset settings to defaults
218
+ */
219
+ reset(categoryId) {
220
+ if (categoryId) {
221
+ const category = this.categories.get(categoryId);
222
+ if (category) {
223
+ for (const field of category.fields) {
224
+ if (field.defaultValue !== undefined) {
225
+ delete this.settings[field.key];
226
+ this.setNestedValue(this.settings, field.key, field.defaultValue);
227
+ }
228
+ else {
229
+ delete this.settings[field.key];
230
+ }
231
+ }
232
+ }
233
+ }
234
+ else {
235
+ // Reset all settings
236
+ this.settings = {};
237
+ for (const category of this.categories.values()) {
238
+ for (const field of category.fields) {
239
+ if (field.defaultValue !== undefined) {
240
+ this.settings[field.key] = field.defaultValue;
241
+ }
242
+ }
243
+ }
244
+ }
245
+ this.emit("reset", categoryId);
246
+ if (this.autoSave) {
247
+ this.scheduleSave();
248
+ }
249
+ }
250
+ /**
251
+ * Export settings
252
+ */
253
+ export(categoryId) {
254
+ const data = categoryId ? this.getByCategory(categoryId) : this.settings;
255
+ return JSON.stringify(data, null, 2);
256
+ }
257
+ /**
258
+ * Import settings
259
+ */
260
+ async import(data) {
261
+ try {
262
+ const imported = JSON.parse(data);
263
+ await this.update(imported);
264
+ ensureLogger().info("Settings imported successfully");
265
+ }
266
+ catch (_error) {
267
+ ensureLogger().error("Failed to import settings:", _error);
268
+ throw new Error(`Failed to import settings: ${_error.message}`);
269
+ }
270
+ }
271
+ // Private methods
272
+ findField(key) {
273
+ for (const category of this.categories.values()) {
274
+ const field = category.fields.find((f) => f.key === key);
275
+ if (field)
276
+ return field;
277
+ }
278
+ return undefined;
279
+ }
280
+ scheduleSave() {
281
+ if (this.saveTimeout) {
282
+ clearTimeout(this.saveTimeout);
283
+ }
284
+ this.saveTimeout = setTimeout(async () => {
285
+ try {
286
+ await this.save();
287
+ }
288
+ catch (_error) {
289
+ ensureLogger().error("Auto-save failed:", _error);
290
+ this.emit("save-error", _error);
291
+ }
292
+ }, this.saveDebounce);
293
+ }
294
+ encryptSensitiveFields(settings) {
295
+ const result = { ...settings };
296
+ for (const field of this.sensitiveFields) {
297
+ const value = this.getNestedValue(result, field);
298
+ if (value !== undefined && typeof value === "string") {
299
+ // Simple base64 encoding for demonstration
300
+ // In production, use proper encryption
301
+ this.setNestedValue(result, field, Buffer.from(value).toString("base64"));
302
+ }
303
+ }
304
+ return result;
305
+ }
306
+ decryptSensitiveFields() {
307
+ for (const field of this.sensitiveFields) {
308
+ const value = this.getNestedValue(this.settings, field);
309
+ if (value !== undefined && typeof value === "string") {
310
+ try {
311
+ // Simple base64 decoding for demonstration
312
+ // In production, use proper decryption
313
+ this.setNestedValue(this.settings, field, Buffer.from(value, "base64").toString());
314
+ }
315
+ catch {
316
+ // Value might not be encrypted, leave as is
317
+ }
318
+ }
319
+ }
320
+ }
321
+ getNestedValue(obj, path) {
322
+ // Support both nested objects and flat keys containing dots
323
+ if (Object.prototype.hasOwnProperty.call(obj, path)) {
324
+ return obj[path];
325
+ }
326
+ return path.split(".").reduce((current, key) => current?.[key], obj);
327
+ }
328
+ setNestedValue(obj, path, value) {
329
+ const keys = path.split(".");
330
+ const lastKey = keys.pop();
331
+ const target = keys.reduce((current, key) => {
332
+ if (!current[key]) {
333
+ current[key] = {};
334
+ }
335
+ return current[key];
336
+ }, obj);
337
+ target[lastKey] = value;
338
+ }
339
+ }
340
+ /**
341
+ * Create common settings categories
342
+ */
343
+ export const CommonSettingsCategories = {
344
+ general: () => ({
345
+ id: "general",
346
+ label: "General",
347
+ description: "General application settings",
348
+ icon: "Settings",
349
+ order: 1,
350
+ fields: [
351
+ {
352
+ key: "app.name",
353
+ label: "Application Name",
354
+ type: "text",
355
+ defaultValue: "My Application",
356
+ required: true,
357
+ },
358
+ {
359
+ key: "app.description",
360
+ label: "Description",
361
+ type: "text",
362
+ placeholder: "Enter application description",
363
+ },
364
+ ],
365
+ }),
366
+ server: () => ({
367
+ id: "server",
368
+ label: "Server",
369
+ description: "Server configuration",
370
+ icon: "Server",
371
+ order: 2,
372
+ fields: [
373
+ {
374
+ key: "server.port",
375
+ label: "Port",
376
+ type: "number",
377
+ defaultValue: 3000,
378
+ min: 1,
379
+ max: 65535,
380
+ required: true,
381
+ },
382
+ {
383
+ key: "server.host",
384
+ label: "Host",
385
+ type: "text",
386
+ defaultValue: "localhost",
387
+ },
388
+ {
389
+ key: "server.https.enabled",
390
+ label: "Enable HTTPS",
391
+ type: "boolean",
392
+ defaultValue: false,
393
+ },
394
+ ],
395
+ }),
396
+ logging: () => ({
397
+ id: "logging",
398
+ label: "Logging",
399
+ description: "Logging configuration",
400
+ icon: "FileText",
401
+ order: 3,
402
+ fields: [
403
+ {
404
+ key: "logging.level",
405
+ label: "Log Level",
406
+ type: "select",
407
+ defaultValue: "info",
408
+ options: [
409
+ { value: "debug", label: "Debug" },
410
+ { value: "info", label: "Info" },
411
+ { value: "warn", label: "Warning" },
412
+ { value: "error", label: "Error" },
413
+ ],
414
+ },
415
+ {
416
+ key: "logging.file",
417
+ label: "Log File Path",
418
+ type: "text",
419
+ placeholder: "./logs/app.log",
420
+ },
421
+ ],
422
+ }),
423
+ };
424
+ export default SettingsService;
425
+ //# sourceMappingURL=settingsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsService.js","sourceRoot":"","sources":["../../src/services/settingsService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Enhanced System Monitor Service
3
+ * Provides comprehensive system health and performance metrics
4
+ */
5
+ export interface CPUInfo {
6
+ usage: number;
7
+ temperature?: number;
8
+ cores: number;
9
+ model: string;
10
+ speed: number;
11
+ loadAverage: number[];
12
+ }
13
+ export interface MemoryInfo {
14
+ total: number;
15
+ used: number;
16
+ free: number;
17
+ percentage: number;
18
+ available?: number;
19
+ active?: number;
20
+ inactive?: number;
21
+ buffers?: number;
22
+ cached?: number;
23
+ swap?: {
24
+ total: number;
25
+ used: number;
26
+ free: number;
27
+ percentage?: number;
28
+ };
29
+ process?: {
30
+ rss: number;
31
+ heapTotal: number;
32
+ heapUsed: number;
33
+ external: number;
34
+ arrayBuffers: number;
35
+ };
36
+ breakdown?: {
37
+ apps: number;
38
+ pageCache: number;
39
+ buffers: number;
40
+ slab: number;
41
+ kernelStack: number;
42
+ pageTables: number;
43
+ vmallocUsed: number;
44
+ };
45
+ }
46
+ export interface DiskInfo {
47
+ total: number;
48
+ used: number;
49
+ free: number;
50
+ percentage: number;
51
+ io?: {
52
+ readBytes: number;
53
+ writeBytes: number;
54
+ readOps: number;
55
+ writeOps: number;
56
+ };
57
+ }
58
+ export interface NetworkInterfaceInfo {
59
+ name: string;
60
+ addresses: string[];
61
+ mac: string;
62
+ speed?: number;
63
+ stats?: {
64
+ rxBytes: number;
65
+ txBytes: number;
66
+ rxPackets: number;
67
+ txPackets: number;
68
+ rxErrors: number;
69
+ txErrors: number;
70
+ };
71
+ }
72
+ export interface SystemInfo {
73
+ platform: string;
74
+ arch: string;
75
+ version: string;
76
+ kernel: string;
77
+ hostname: string;
78
+ uptime: number;
79
+ bootTime: Date;
80
+ }
81
+ export interface ProcessInfo {
82
+ pid: number;
83
+ name: string;
84
+ cpu: number;
85
+ memory: number;
86
+ uptime: number;
87
+ }
88
+ export interface SystemHealth {
89
+ cpu: CPUInfo;
90
+ memory: MemoryInfo;
91
+ disk: DiskInfo;
92
+ system: SystemInfo;
93
+ network: {
94
+ interfaces: NetworkInterfaceInfo[];
95
+ connections: number;
96
+ };
97
+ processes?: ProcessInfo[];
98
+ timestamp: Date;
99
+ }
100
+ declare class SystemMonitor {
101
+ private cpuUsageHistory;
102
+ private lastCPUInfo;
103
+ private diskIOCache;
104
+ /**
105
+ * Get comprehensive system health metrics
106
+ */
107
+ getSystemHealth(): Promise<SystemHealth>;
108
+ /**
109
+ * Get CPU information including temperature
110
+ */
111
+ getCPUInfo(): Promise<CPUInfo>;
112
+ /**
113
+ * Calculate CPU usage percentage
114
+ */
115
+ private calculateCPUUsage;
116
+ /**
117
+ * Get CPU temperature (platform-specific)
118
+ */
119
+ private getCPUTemperature;
120
+ /**
121
+ * Get memory information including swap and detailed breakdown
122
+ */
123
+ getMemoryInfo(): Promise<MemoryInfo>;
124
+ /**
125
+ * Get detailed memory breakdown (Linux only)
126
+ */
127
+ private getDetailedMemoryInfo;
128
+ /**
129
+ * Get swap memory information
130
+ */
131
+ private getSwapInfo;
132
+ /**
133
+ * Get disk information including I/O stats
134
+ */
135
+ getDiskInfo(): Promise<DiskInfo>;
136
+ /**
137
+ * Get disk I/O statistics
138
+ */
139
+ private getDiskIOStats;
140
+ /**
141
+ * Get system information
142
+ */
143
+ getSystemInfo(): Promise<SystemInfo>;
144
+ /**
145
+ * Get network information
146
+ */
147
+ getNetworkInfo(): Promise<{
148
+ interfaces: NetworkInterfaceInfo[];
149
+ connections: number;
150
+ }>;
151
+ /**
152
+ * Get detailed network interface information
153
+ */
154
+ private getNetworkInterfaces;
155
+ /**
156
+ * Get network interface statistics
157
+ */
158
+ private getInterfaceStats;
159
+ /**
160
+ * Get detailed network statistics with bandwidth usage
161
+ */
162
+ getNetworkStatistics(): Promise<{
163
+ interfaces: NetworkInterfaceInfo[];
164
+ totalBytesReceived: number;
165
+ totalBytesSent: number;
166
+ totalPacketsReceived: number;
167
+ totalPacketsSent: number;
168
+ connections: number;
169
+ bandwidth?: {
170
+ download: number;
171
+ upload: number;
172
+ };
173
+ }>;
174
+ /**
175
+ * Calculate bandwidth based on byte counters
176
+ */
177
+ private lastNetworkMeasurement?;
178
+ private calculateBandwidth;
179
+ /**
180
+ * Get active network connections by state
181
+ */
182
+ getNetworkConnectionsByState(): Promise<{
183
+ established: number;
184
+ listening: number;
185
+ timeWait: number;
186
+ closeWait: number;
187
+ total: number;
188
+ }>;
189
+ /**
190
+ * Get number of network connections
191
+ */
192
+ private getNetworkConnections;
193
+ /**
194
+ * Get top processes by CPU or memory usage
195
+ */
196
+ getTopProcesses(sortBy?: "cpu" | "memory", limit?: number): Promise<ProcessInfo[]>;
197
+ /**
198
+ * Get CPU usage history
199
+ */
200
+ getCPUHistory(): number[];
201
+ /**
202
+ * Monitor system health continuously
203
+ */
204
+ startMonitoring(interval?: number, callback?: (health: SystemHealth) => void): Promise<NodeJS.Timeout>;
205
+ }
206
+ export declare function getSystemMonitor(): SystemMonitor;
207
+ export default SystemMonitor;
208
+ //# sourceMappingURL=systemMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systemMonitor.d.ts","sourceRoot":"","sources":["../../src/services/systemMonitor.ts"],"names":[],"mappings":"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"}