polyv-live-cli 1.1.4 → 1.1.5

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 (244) hide show
  1. package/dist/commands/index.d.ts +1 -0
  2. package/dist/commands/index.d.ts.map +1 -1
  3. package/dist/commands/index.js +3 -1
  4. package/dist/commands/index.js.map +1 -1
  5. package/dist/commands/monitor.commands.d.ts +12 -0
  6. package/dist/commands/monitor.commands.d.ts.map +1 -0
  7. package/dist/commands/monitor.commands.js +75 -0
  8. package/dist/commands/monitor.commands.js.map +1 -0
  9. package/dist/components/alert.panel.d.ts +98 -0
  10. package/dist/components/alert.panel.d.ts.map +1 -0
  11. package/dist/components/alert.panel.js +1000 -0
  12. package/dist/components/alert.panel.js.map +1 -0
  13. package/dist/components/base.component.d.ts +61 -0
  14. package/dist/components/base.component.d.ts.map +1 -0
  15. package/dist/components/base.component.js +346 -0
  16. package/dist/components/base.component.js.map +1 -0
  17. package/dist/components/batch-operations.dialog.d.ts +58 -0
  18. package/dist/components/batch-operations.dialog.d.ts.map +1 -0
  19. package/dist/components/batch-operations.dialog.js +340 -0
  20. package/dist/components/batch-operations.dialog.js.map +1 -0
  21. package/dist/components/channel-details.popup.d.ts +55 -0
  22. package/dist/components/channel-details.popup.d.ts.map +1 -0
  23. package/dist/components/channel-details.popup.js +416 -0
  24. package/dist/components/channel-details.popup.js.map +1 -0
  25. package/dist/components/channel-status.panel.d.ts +129 -0
  26. package/dist/components/channel-status.panel.d.ts.map +1 -0
  27. package/dist/components/channel-status.panel.js +858 -0
  28. package/dist/components/channel-status.panel.js.map +1 -0
  29. package/dist/components/component-registry.d.ts +36 -0
  30. package/dist/components/component-registry.d.ts.map +1 -0
  31. package/dist/components/component-registry.js +119 -0
  32. package/dist/components/component-registry.js.map +1 -0
  33. package/dist/components/context-menu-factory.d.ts +13 -0
  34. package/dist/components/context-menu-factory.d.ts.map +1 -0
  35. package/dist/components/context-menu-factory.js +341 -0
  36. package/dist/components/context-menu-factory.js.map +1 -0
  37. package/dist/components/context-menu.d.ts +54 -0
  38. package/dist/components/context-menu.d.ts.map +1 -0
  39. package/dist/components/context-menu.js +235 -0
  40. package/dist/components/context-menu.js.map +1 -0
  41. package/dist/components/grid-manager.d.ts +52 -0
  42. package/dist/components/grid-manager.d.ts.map +1 -0
  43. package/dist/components/grid-manager.js +404 -0
  44. package/dist/components/grid-manager.js.map +1 -0
  45. package/dist/components/help-panel.d.ts +34 -0
  46. package/dist/components/help-panel.d.ts.map +1 -0
  47. package/dist/components/help-panel.js +249 -0
  48. package/dist/components/help-panel.js.map +1 -0
  49. package/dist/components/index.d.ts +20 -0
  50. package/dist/components/index.d.ts.map +1 -0
  51. package/dist/components/index.js +43 -0
  52. package/dist/components/index.js.map +1 -0
  53. package/dist/components/interaction-manager.d.ts +47 -0
  54. package/dist/components/interaction-manager.d.ts.map +1 -0
  55. package/dist/components/interaction-manager.js +597 -0
  56. package/dist/components/interaction-manager.js.map +1 -0
  57. package/dist/components/layout-manager.d.ts +76 -0
  58. package/dist/components/layout-manager.d.ts.map +1 -0
  59. package/dist/components/layout-manager.js +538 -0
  60. package/dist/components/layout-manager.js.map +1 -0
  61. package/dist/components/monitoring-dashboard.d.ts +85 -0
  62. package/dist/components/monitoring-dashboard.d.ts.map +1 -0
  63. package/dist/components/monitoring-dashboard.js +908 -0
  64. package/dist/components/monitoring-dashboard.js.map +1 -0
  65. package/dist/components/search-panel.d.ts +80 -0
  66. package/dist/components/search-panel.d.ts.map +1 -0
  67. package/dist/components/search-panel.js +585 -0
  68. package/dist/components/search-panel.js.map +1 -0
  69. package/dist/components/status-bar.d.ts +77 -0
  70. package/dist/components/status-bar.d.ts.map +1 -0
  71. package/dist/components/status-bar.js +482 -0
  72. package/dist/components/status-bar.js.map +1 -0
  73. package/dist/components/status.component.d.ts +16 -0
  74. package/dist/components/status.component.d.ts.map +1 -0
  75. package/dist/components/status.component.js +79 -0
  76. package/dist/components/status.component.js.map +1 -0
  77. package/dist/components/stream-metrics.panel.d.ts +86 -0
  78. package/dist/components/stream-metrics.panel.d.ts.map +1 -0
  79. package/dist/components/stream-metrics.panel.js +395 -0
  80. package/dist/components/stream-metrics.panel.js.map +1 -0
  81. package/dist/components/system-resource.panel.d.ts +78 -0
  82. package/dist/components/system-resource.panel.d.ts.map +1 -0
  83. package/dist/components/system-resource.panel.js +642 -0
  84. package/dist/components/system-resource.panel.js.map +1 -0
  85. package/dist/components/tooltip.d.ts +35 -0
  86. package/dist/components/tooltip.d.ts.map +1 -0
  87. package/dist/components/tooltip.js +156 -0
  88. package/dist/components/tooltip.js.map +1 -0
  89. package/dist/config/config-io.d.ts +63 -0
  90. package/dist/config/config-io.d.ts.map +1 -0
  91. package/dist/config/config-io.js +352 -0
  92. package/dist/config/config-io.js.map +1 -0
  93. package/dist/config/config-manager.d.ts +51 -0
  94. package/dist/config/config-manager.d.ts.map +1 -0
  95. package/dist/config/config-manager.js +404 -0
  96. package/dist/config/config-manager.js.map +1 -0
  97. package/dist/config/config-validator.d.ts +27 -0
  98. package/dist/config/config-validator.d.ts.map +1 -0
  99. package/dist/config/config-validator.js +421 -0
  100. package/dist/config/config-validator.js.map +1 -0
  101. package/dist/config/custom-theme-builder.d.ts +88 -0
  102. package/dist/config/custom-theme-builder.d.ts.map +1 -0
  103. package/dist/config/custom-theme-builder.js +458 -0
  104. package/dist/config/custom-theme-builder.js.map +1 -0
  105. package/dist/config/layout-manager.d.ts +60 -0
  106. package/dist/config/layout-manager.d.ts.map +1 -0
  107. package/dist/config/layout-manager.js +595 -0
  108. package/dist/config/layout-manager.js.map +1 -0
  109. package/dist/config/monitoring.d.ts +27 -0
  110. package/dist/config/monitoring.d.ts.map +1 -0
  111. package/dist/config/monitoring.js +276 -0
  112. package/dist/config/monitoring.js.map +1 -0
  113. package/dist/config/theme-manager.d.ts +53 -0
  114. package/dist/config/theme-manager.d.ts.map +1 -0
  115. package/dist/config/theme-manager.js +490 -0
  116. package/dist/config/theme-manager.js.map +1 -0
  117. package/dist/handlers/monitor.handler.d.ts +28 -0
  118. package/dist/handlers/monitor.handler.d.ts.map +1 -0
  119. package/dist/handlers/monitor.handler.js +457 -0
  120. package/dist/handlers/monitor.handler.js.map +1 -0
  121. package/dist/index.d.ts +2 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +8 -3
  124. package/dist/index.js.map +1 -1
  125. package/dist/performance/adaptive-polling.d.ts +69 -0
  126. package/dist/performance/adaptive-polling.d.ts.map +1 -0
  127. package/dist/performance/adaptive-polling.js +313 -0
  128. package/dist/performance/adaptive-polling.js.map +1 -0
  129. package/dist/performance/api-analytics.d.ts +137 -0
  130. package/dist/performance/api-analytics.d.ts.map +1 -0
  131. package/dist/performance/api-analytics.js +351 -0
  132. package/dist/performance/api-analytics.js.map +1 -0
  133. package/dist/performance/api-optimizer.d.ts +66 -0
  134. package/dist/performance/api-optimizer.d.ts.map +1 -0
  135. package/dist/performance/api-optimizer.js +368 -0
  136. package/dist/performance/api-optimizer.js.map +1 -0
  137. package/dist/performance/batch-request-manager.d.ts +89 -0
  138. package/dist/performance/batch-request-manager.d.ts.map +1 -0
  139. package/dist/performance/batch-request-manager.js +351 -0
  140. package/dist/performance/batch-request-manager.js.map +1 -0
  141. package/dist/performance/change-detector.d.ts +75 -0
  142. package/dist/performance/change-detector.d.ts.map +1 -0
  143. package/dist/performance/change-detector.js +392 -0
  144. package/dist/performance/change-detector.js.map +1 -0
  145. package/dist/performance/connection-pool-manager.d.ts +99 -0
  146. package/dist/performance/connection-pool-manager.d.ts.map +1 -0
  147. package/dist/performance/connection-pool-manager.js +474 -0
  148. package/dist/performance/connection-pool-manager.js.map +1 -0
  149. package/dist/performance/error-recovery-manager.d.ts +134 -0
  150. package/dist/performance/error-recovery-manager.d.ts.map +1 -0
  151. package/dist/performance/error-recovery-manager.js +673 -0
  152. package/dist/performance/error-recovery-manager.js.map +1 -0
  153. package/dist/performance/fallback-manager.d.ts +123 -0
  154. package/dist/performance/fallback-manager.d.ts.map +1 -0
  155. package/dist/performance/fallback-manager.js +524 -0
  156. package/dist/performance/fallback-manager.js.map +1 -0
  157. package/dist/performance/index.d.ts +13 -0
  158. package/dist/performance/index.d.ts.map +1 -0
  159. package/dist/performance/index.js +28 -0
  160. package/dist/performance/index.js.map +1 -0
  161. package/dist/performance/memory-manager.d.ts +97 -0
  162. package/dist/performance/memory-manager.d.ts.map +1 -0
  163. package/dist/performance/memory-manager.js +417 -0
  164. package/dist/performance/memory-manager.js.map +1 -0
  165. package/dist/performance/performance-monitor.d.ts +149 -0
  166. package/dist/performance/performance-monitor.d.ts.map +1 -0
  167. package/dist/performance/performance-monitor.js +513 -0
  168. package/dist/performance/performance-monitor.js.map +1 -0
  169. package/dist/performance/performance-optimizer.d.ts +110 -0
  170. package/dist/performance/performance-optimizer.d.ts.map +1 -0
  171. package/dist/performance/performance-optimizer.js +476 -0
  172. package/dist/performance/performance-optimizer.js.map +1 -0
  173. package/dist/performance/render-optimizer.d.ts +95 -0
  174. package/dist/performance/render-optimizer.d.ts.map +1 -0
  175. package/dist/performance/render-optimizer.js +408 -0
  176. package/dist/performance/render-optimizer.js.map +1 -0
  177. package/dist/services/index.d.ts +1 -0
  178. package/dist/services/index.d.ts.map +1 -1
  179. package/dist/services/index.js +3 -1
  180. package/dist/services/index.js.map +1 -1
  181. package/dist/services/system-resource.service.d.ts +168 -0
  182. package/dist/services/system-resource.service.d.ts.map +1 -0
  183. package/dist/services/system-resource.service.js +544 -0
  184. package/dist/services/system-resource.service.js.map +1 -0
  185. package/dist/types/alert.d.ts +147 -0
  186. package/dist/types/alert.d.ts.map +1 -0
  187. package/dist/types/alert.js +3 -0
  188. package/dist/types/alert.js.map +1 -0
  189. package/dist/types/index.d.ts +3 -0
  190. package/dist/types/index.d.ts.map +1 -1
  191. package/dist/types/index.js +2 -0
  192. package/dist/types/index.js.map +1 -1
  193. package/dist/types/interaction.d.ts +147 -0
  194. package/dist/types/interaction.d.ts.map +1 -0
  195. package/dist/types/interaction.js +3 -0
  196. package/dist/types/interaction.js.map +1 -0
  197. package/dist/types/monitoring.d.ts +233 -0
  198. package/dist/types/monitoring.d.ts.map +1 -0
  199. package/dist/types/monitoring.js +35 -0
  200. package/dist/types/monitoring.js.map +1 -0
  201. package/dist/utils/alert-history-manager.d.ts +72 -0
  202. package/dist/utils/alert-history-manager.d.ts.map +1 -0
  203. package/dist/utils/alert-history-manager.js +492 -0
  204. package/dist/utils/alert-history-manager.js.map +1 -0
  205. package/dist/utils/alert-manager.d.ts +75 -0
  206. package/dist/utils/alert-manager.d.ts.map +1 -0
  207. package/dist/utils/alert-manager.js +348 -0
  208. package/dist/utils/alert-manager.js.map +1 -0
  209. package/dist/utils/alert-rule-manager.d.ts +51 -0
  210. package/dist/utils/alert-rule-manager.d.ts.map +1 -0
  211. package/dist/utils/alert-rule-manager.js +515 -0
  212. package/dist/utils/alert-rule-manager.js.map +1 -0
  213. package/dist/utils/data-manager.d.ts +53 -0
  214. package/dist/utils/data-manager.d.ts.map +1 -0
  215. package/dist/utils/data-manager.js +228 -0
  216. package/dist/utils/data-manager.js.map +1 -0
  217. package/dist/utils/formatter.d.ts +5 -0
  218. package/dist/utils/formatter.d.ts.map +1 -1
  219. package/dist/utils/formatter.js +19 -0
  220. package/dist/utils/formatter.js.map +1 -1
  221. package/dist/utils/index.d.ts +6 -0
  222. package/dist/utils/index.d.ts.map +1 -1
  223. package/dist/utils/index.js +6 -0
  224. package/dist/utils/index.js.map +1 -1
  225. package/dist/utils/keyboard-handler.d.ts +32 -0
  226. package/dist/utils/keyboard-handler.d.ts.map +1 -0
  227. package/dist/utils/keyboard-handler.js +193 -0
  228. package/dist/utils/keyboard-handler.js.map +1 -0
  229. package/dist/utils/mouse-handler.d.ts +61 -0
  230. package/dist/utils/mouse-handler.d.ts.map +1 -0
  231. package/dist/utils/mouse-handler.js +192 -0
  232. package/dist/utils/mouse-handler.js.map +1 -0
  233. package/dist/utils/stream-verification.d.ts.map +1 -1
  234. package/dist/utils/stream-verification.js +2 -13
  235. package/dist/utils/stream-verification.js.map +1 -1
  236. package/dist/utils/terminal.d.ts +24 -0
  237. package/dist/utils/terminal.d.ts.map +1 -0
  238. package/dist/utils/terminal.js +148 -0
  239. package/dist/utils/terminal.js.map +1 -0
  240. package/dist/utils/time-series.processor.d.ts +65 -0
  241. package/dist/utils/time-series.processor.d.ts.map +1 -0
  242. package/dist/utils/time-series.processor.js +263 -0
  243. package/dist/utils/time-series.processor.js.map +1 -0
  244. package/package.json +28 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-resource.panel.d.ts","sourceRoot":"","sources":["../../src/components/system-resource.panel.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAyB,uBAAuB,EAAgB,MAAM,qCAAqC,CAAC;AAyBnH,UAAU,uBAAuB;IAC/B,GAAG,EAAE;QACH,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAMD,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAA8B;IAE9C,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,gBAAgB,CAAwC;IAChE,OAAO,CAAC,cAAc,CAAuE;IAC7F,OAAO,CAAC,UAAU,CAAmD;IACrE,OAAO,CAAC,aAAa,CAAmD;IACxE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAM;IAC5C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAM;IAE3C,OAAO,CAAC,eAAe,CAIrB;IAEF,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,gBAAgB,CAAmC;gBAE/C,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY;IAU3D,OAAO,CAAC,mBAAmB;IAuBpB,qBAAqB,CAAC,aAAa,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI;IAe5E,kBAAkB,IAAI,uBAAuB;IAOpD,OAAO,CAAC,oBAAoB;IAiB5B,SAAS,CAAC,YAAY,IAAI,IAAI;IAqC9B,OAAO,CAAC,YAAY;IAqDpB,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,mBAAmB;YAYb,mBAAmB;IAWjC,OAAO,CAAC,oBAAoB;IAsC5B,OAAO,CAAC,gBAAgB;IAkBxB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,gBAAgB;IAUjB,MAAM,IAAI,IAAI;IAyBrB,OAAO,CAAC,YAAY;IAwCpB,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,qBAAqB;IAyC7B,OAAO,CAAC,qBAAqB;IAkD7B,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,cAAc;IA8CtB,OAAO,CAAC,gBAAgB;IAejB,MAAM,CAAC,IAAI,EAAE,uBAAuB,GAAG,IAAI;cAe/B,aAAa,IAAI,IAAI;IAOxB,OAAO,IAAI,IAAI;CAYhC"}
@@ -0,0 +1,642 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SystemResourcePanel = void 0;
37
+ const blessed = __importStar(require("blessed"));
38
+ const contrib = __importStar(require("blessed-contrib"));
39
+ const base_component_1 = require("./base.component");
40
+ const system_resource_service_1 = require("../services/system-resource.service");
41
+ let screen = null;
42
+ const getScreen = () => {
43
+ if (!screen) {
44
+ try {
45
+ screen = blessed.screen({
46
+ smartCSR: true,
47
+ dockBorders: true,
48
+ });
49
+ }
50
+ catch (error) {
51
+ screen = {
52
+ render: () => { },
53
+ destroy: () => { },
54
+ };
55
+ }
56
+ }
57
+ return screen;
58
+ };
59
+ class SystemResourcePanel extends base_component_1.BaseComponent {
60
+ constructor(config, eventBus) {
61
+ super(config, eventBus);
62
+ this.currentResources = null;
63
+ this.networkHistory = [];
64
+ this.cpuHistory = [];
65
+ this.memoryHistory = [];
66
+ this.maxNetworkHistorySize = 60;
67
+ this.maxCpuHistorySize = 60;
68
+ this.maxMemoryHistorySize = 60;
69
+ this.alertThresholds = {
70
+ cpu: { warning: 70, critical: 85 },
71
+ memory: { warning: 75, critical: 90 },
72
+ network: { warning: 10, critical: 50 },
73
+ };
74
+ this.isGracefullyDegraded = false;
75
+ this.lastNetworkBytes = { in: 0, out: 0, timestamp: 0 };
76
+ this.systemResourceService = new system_resource_service_1.SystemResourceService();
77
+ this.setupResourceService();
78
+ this.loadAlertThresholds();
79
+ }
80
+ loadAlertThresholds() {
81
+ const alertConfig = this.config.config['alertThresholds'];
82
+ if (alertConfig) {
83
+ this.alertThresholds = {
84
+ cpu: {
85
+ warning: alertConfig.cpu?.warning || this.alertThresholds.cpu.warning,
86
+ critical: alertConfig.cpu?.critical || this.alertThresholds.cpu.critical,
87
+ },
88
+ memory: {
89
+ warning: alertConfig.memory?.warning || this.alertThresholds.memory.warning,
90
+ critical: alertConfig.memory?.critical || this.alertThresholds.memory.critical,
91
+ },
92
+ network: {
93
+ warning: alertConfig.network?.warning || this.alertThresholds.network.warning,
94
+ critical: alertConfig.network?.critical || this.alertThresholds.network.critical,
95
+ },
96
+ };
97
+ }
98
+ }
99
+ updateAlertThresholds(newThresholds) {
100
+ if (newThresholds.cpu) {
101
+ this.alertThresholds.cpu = { ...this.alertThresholds.cpu, ...newThresholds.cpu };
102
+ }
103
+ if (newThresholds.memory) {
104
+ this.alertThresholds.memory = { ...this.alertThresholds.memory, ...newThresholds.memory };
105
+ }
106
+ if (newThresholds.network) {
107
+ this.alertThresholds.network = { ...this.alertThresholds.network, ...newThresholds.network };
108
+ }
109
+ }
110
+ getAlertThresholds() {
111
+ return { ...this.alertThresholds };
112
+ }
113
+ setupResourceService() {
114
+ this.systemResourceService.on('resourceUpdate', (resources) => {
115
+ this.currentResources = resources;
116
+ this.updateNetworkHistory(resources);
117
+ this.updateCpuHistory(resources);
118
+ this.updateMemoryHistory(resources);
119
+ this.update(resources);
120
+ });
121
+ this.systemResourceService.on('error', (error) => {
122
+ this.handleResourceError(error);
123
+ });
124
+ }
125
+ createWidget() {
126
+ try {
127
+ this.widget = blessed.box({
128
+ parent: getScreen(),
129
+ top: this.config.position.y || 0,
130
+ left: this.config.position.x || 0,
131
+ width: this.config.position.width || '100%',
132
+ height: this.config.position.height || '100%',
133
+ label: ' System Resources ',
134
+ border: { type: 'line' },
135
+ style: {
136
+ border: { fg: 'blue' },
137
+ label: { fg: 'white', bold: true },
138
+ },
139
+ });
140
+ this.container = this.widget;
141
+ this.createGauges();
142
+ this.createNetworkChart();
143
+ this.createCpuChart();
144
+ this.createMemoryChart();
145
+ this.createNetworkStatsBox();
146
+ this.createProcessStatsBox();
147
+ this.createInfoBox();
148
+ this.createAlertBox();
149
+ this.startDataCollection();
150
+ }
151
+ catch (error) {
152
+ this.handleResourceError(error instanceof Error ? error : new Error('Widget creation failed'));
153
+ }
154
+ }
155
+ createGauges() {
156
+ this.cpuGauge = contrib.gauge({
157
+ top: '1%',
158
+ left: '0%',
159
+ width: '33%',
160
+ height: '40%',
161
+ label: 'CPU Usage',
162
+ stroke: 'green',
163
+ fill: 'white',
164
+ showLabel: true,
165
+ style: {
166
+ label: { fg: 'white' },
167
+ },
168
+ });
169
+ this.container.append(this.cpuGauge);
170
+ this.memoryGauge = contrib.gauge({
171
+ top: '1%',
172
+ left: '33%',
173
+ width: '33%',
174
+ height: '40%',
175
+ label: 'Memory Usage',
176
+ stroke: 'green',
177
+ fill: 'white',
178
+ showLabel: true,
179
+ style: {
180
+ label: { fg: 'white' },
181
+ },
182
+ });
183
+ this.container.append(this.memoryGauge);
184
+ this.processGauge = contrib.gauge({
185
+ top: '1%',
186
+ left: '66%',
187
+ width: '34%',
188
+ height: '40%',
189
+ label: 'Process CPU',
190
+ stroke: 'green',
191
+ fill: 'white',
192
+ showLabel: true,
193
+ style: {
194
+ label: { fg: 'white' },
195
+ },
196
+ });
197
+ this.container.append(this.processGauge);
198
+ }
199
+ createNetworkChart() {
200
+ this.networkChart = contrib.line({
201
+ label: 'Network Traffic (MB/s)',
202
+ showLegend: true,
203
+ legend: { width: 12 },
204
+ style: {
205
+ line: 'yellow',
206
+ text: 'green',
207
+ baseline: 'black',
208
+ },
209
+ });
210
+ this.networkChart.top = '41%';
211
+ this.networkChart.left = '0%';
212
+ this.networkChart.width = '35%';
213
+ this.networkChart.height = '25%';
214
+ this.container.append(this.networkChart);
215
+ }
216
+ createCpuChart() {
217
+ this.cpuChart = contrib.line({
218
+ label: 'CPU Usage Trend (%)',
219
+ showLegend: false,
220
+ style: {
221
+ line: 'red',
222
+ text: 'green',
223
+ baseline: 'black',
224
+ },
225
+ });
226
+ this.cpuChart.top = '41%';
227
+ this.cpuChart.left = '35%';
228
+ this.cpuChart.width = '35%';
229
+ this.cpuChart.height = '25%';
230
+ this.container.append(this.cpuChart);
231
+ }
232
+ createMemoryChart() {
233
+ this.memoryChart = contrib.line({
234
+ label: 'Memory Usage Trend (%)',
235
+ showLegend: false,
236
+ style: {
237
+ line: 'blue',
238
+ text: 'green',
239
+ baseline: 'black',
240
+ },
241
+ });
242
+ this.memoryChart.top = '66%';
243
+ this.memoryChart.left = '0%';
244
+ this.memoryChart.width = '35%';
245
+ this.memoryChart.height = '25%';
246
+ this.container.append(this.memoryChart);
247
+ }
248
+ createNetworkStatsBox() {
249
+ this.networkStatsBox = blessed.box({
250
+ parent: this.container,
251
+ top: '41%',
252
+ left: '70%',
253
+ width: '30%',
254
+ height: '25%',
255
+ label: ' Network Stats ',
256
+ border: { type: 'line' },
257
+ style: {
258
+ border: { fg: 'cyan' },
259
+ label: { fg: 'white' },
260
+ },
261
+ content: 'Loading network stats...',
262
+ });
263
+ }
264
+ createProcessStatsBox() {
265
+ this.processStatsBox = blessed.box({
266
+ parent: this.container,
267
+ top: '66%',
268
+ left: '35%',
269
+ width: '35%',
270
+ height: '25%',
271
+ label: ' Process Stats ',
272
+ border: { type: 'line' },
273
+ style: {
274
+ border: { fg: 'magenta' },
275
+ label: { fg: 'white' },
276
+ },
277
+ content: 'Loading process stats...',
278
+ });
279
+ }
280
+ createInfoBox() {
281
+ this.infoBox = blessed.box({
282
+ parent: this.container,
283
+ top: '91%',
284
+ left: 0,
285
+ width: '50%',
286
+ height: '9%',
287
+ label: ' System Info ',
288
+ border: { type: 'line' },
289
+ style: {
290
+ border: { fg: 'gray' },
291
+ label: { fg: 'white' },
292
+ },
293
+ content: 'Loading system info...',
294
+ });
295
+ }
296
+ createAlertBox() {
297
+ this.alertBox = blessed.box({
298
+ parent: this.container,
299
+ top: '91%',
300
+ left: '50%',
301
+ width: '50%',
302
+ height: '9%',
303
+ label: ' Alerts ',
304
+ border: { type: 'line' },
305
+ style: {
306
+ border: { fg: 'red' },
307
+ label: { fg: 'white' },
308
+ },
309
+ content: 'No alerts',
310
+ });
311
+ }
312
+ startDataCollection() {
313
+ this.collectResourceData();
314
+ const refreshInterval = this.config.config['refreshInterval'] || 5000;
315
+ this.startRefresh(refreshInterval);
316
+ }
317
+ async collectResourceData() {
318
+ try {
319
+ await this.systemResourceService.getSystemResources();
320
+ }
321
+ catch (error) {
322
+ this.handleResourceError(error instanceof Error ? error : new Error('Data collection failed'));
323
+ }
324
+ }
325
+ updateNetworkHistory(resources) {
326
+ const now = Date.now();
327
+ const currentBytes = {
328
+ in: resources.network.totalBytesIn,
329
+ out: resources.network.totalBytesOut,
330
+ timestamp: now,
331
+ };
332
+ let inRate = 0;
333
+ let outRate = 0;
334
+ if (this.lastNetworkBytes.timestamp > 0) {
335
+ const timeDiff = (now - this.lastNetworkBytes.timestamp) / 1000;
336
+ if (timeDiff > 0) {
337
+ inRate = Math.max(0, (currentBytes.in - this.lastNetworkBytes.in) / timeDiff);
338
+ outRate = Math.max(0, (currentBytes.out - this.lastNetworkBytes.out) / timeDiff);
339
+ }
340
+ }
341
+ this.lastNetworkBytes = currentBytes;
342
+ this.networkHistory.push({
343
+ timestamp: now,
344
+ bytesIn: inRate / (1024 * 1024),
345
+ bytesOut: outRate / (1024 * 1024),
346
+ });
347
+ if (this.networkHistory.length > this.maxNetworkHistorySize) {
348
+ this.networkHistory.shift();
349
+ }
350
+ }
351
+ updateCpuHistory(resources) {
352
+ const now = Date.now();
353
+ this.cpuHistory.push({
354
+ timestamp: now,
355
+ usage: resources.cpu.usage,
356
+ });
357
+ if (this.cpuHistory.length > this.maxCpuHistorySize) {
358
+ this.cpuHistory.shift();
359
+ }
360
+ }
361
+ updateMemoryHistory(resources) {
362
+ const now = Date.now();
363
+ this.memoryHistory.push({
364
+ timestamp: now,
365
+ usage: resources.memory.percentage,
366
+ });
367
+ if (this.memoryHistory.length > this.maxMemoryHistorySize) {
368
+ this.memoryHistory.shift();
369
+ }
370
+ }
371
+ handleResourceError(error) {
372
+ if (!this.isGracefullyDegraded) {
373
+ this.isGracefullyDegraded = true;
374
+ this.showDegradedMode();
375
+ }
376
+ this.handleError(error);
377
+ }
378
+ showDegradedMode() {
379
+ if (this.alertBox) {
380
+ this.alertBox.setContent('DEGRADED MODE\nLimited data available');
381
+ this.alertBox.style.border = { fg: 'yellow' };
382
+ }
383
+ }
384
+ render() {
385
+ if (!this.currentResources)
386
+ return;
387
+ try {
388
+ this.updateGauges();
389
+ this.updateNetworkChart();
390
+ this.updateCpuChart();
391
+ this.updateMemoryChart();
392
+ this.updateNetworkStatsBox();
393
+ this.updateProcessStatsBox();
394
+ this.updateInfoBox();
395
+ this.updateAlertBox();
396
+ const currentScreen = getScreen();
397
+ if (currentScreen && currentScreen.render) {
398
+ currentScreen.render();
399
+ }
400
+ }
401
+ catch (error) {
402
+ this.handleError(error instanceof Error ? error : new Error('Render failed'));
403
+ }
404
+ }
405
+ updateGauges() {
406
+ if (!this.currentResources)
407
+ return;
408
+ if (this.cpuGauge) {
409
+ const cpuPercent = this.currentResources.cpu.usage;
410
+ this.cpuGauge.setPercent(cpuPercent);
411
+ this.cpuGauge.setStack([
412
+ { percent: cpuPercent, stroke: this.getColorForValue(cpuPercent, 'cpu') }
413
+ ]);
414
+ }
415
+ if (this.memoryGauge) {
416
+ const memoryPercent = this.currentResources.memory.percentage;
417
+ this.memoryGauge.setPercent(memoryPercent);
418
+ this.memoryGauge.setStack([
419
+ { percent: memoryPercent, stroke: this.getColorForValue(memoryPercent, 'memory') }
420
+ ]);
421
+ }
422
+ if (this.processGauge) {
423
+ const processPercent = Math.min(100, this.currentResources.process.cpuUsage);
424
+ this.processGauge.setPercent(processPercent);
425
+ const ratingColor = this.currentResources.process.performanceRating === 'excellent' ? 'green' :
426
+ this.currentResources.process.performanceRating === 'good' ? 'cyan' :
427
+ this.currentResources.process.performanceRating === 'fair' ? 'yellow' : 'red';
428
+ this.processGauge.setStack([
429
+ { percent: processPercent, stroke: ratingColor }
430
+ ]);
431
+ }
432
+ }
433
+ updateNetworkChart() {
434
+ if (!this.networkChart || this.networkHistory.length === 0)
435
+ return;
436
+ const labels = this.networkHistory.map((_, index) => index.toString());
437
+ const inData = this.networkHistory.map(entry => entry.bytesIn.toFixed(2));
438
+ const outData = this.networkHistory.map(entry => entry.bytesOut.toFixed(2));
439
+ this.networkChart.setData([
440
+ {
441
+ title: 'In',
442
+ x: labels,
443
+ y: inData,
444
+ style: { line: 'green' },
445
+ },
446
+ {
447
+ title: 'Out',
448
+ x: labels,
449
+ y: outData,
450
+ style: { line: 'red' },
451
+ },
452
+ ]);
453
+ }
454
+ updateCpuChart() {
455
+ if (!this.cpuChart || this.cpuHistory.length === 0)
456
+ return;
457
+ const labels = this.cpuHistory.map((_, index) => index.toString());
458
+ const data = this.cpuHistory.map(entry => entry.usage.toFixed(1));
459
+ this.cpuChart.setData([
460
+ {
461
+ title: 'CPU',
462
+ x: labels,
463
+ y: data,
464
+ style: { line: 'red' },
465
+ },
466
+ ]);
467
+ }
468
+ updateMemoryChart() {
469
+ if (!this.memoryChart || this.memoryHistory.length === 0)
470
+ return;
471
+ const labels = this.memoryHistory.map((_, index) => index.toString());
472
+ const data = this.memoryHistory.map(entry => entry.usage.toFixed(1));
473
+ this.memoryChart.setData([
474
+ {
475
+ title: 'Memory',
476
+ x: labels,
477
+ y: data,
478
+ style: { line: 'blue' },
479
+ },
480
+ ]);
481
+ }
482
+ updateNetworkStatsBox() {
483
+ if (!this.networkStatsBox || !this.currentResources)
484
+ return;
485
+ const network = this.currentResources.network;
486
+ const totalRateIn = network.totalRateIn || 0;
487
+ const totalRateOut = network.totalRateOut || 0;
488
+ const totalRate = totalRateIn + totalRateOut;
489
+ const bandwidthIn = system_resource_service_1.NetworkUtils.formatBandwidth(totalRateIn);
490
+ const bandwidthOut = system_resource_service_1.NetworkUtils.formatBandwidth(totalRateOut);
491
+ const totalBandwidth = system_resource_service_1.NetworkUtils.formatBandwidth(totalRate);
492
+ const totalBytes = system_resource_service_1.NetworkUtils.formatBytes(network.totalBytesIn + network.totalBytesOut);
493
+ const content = [
494
+ `Total: ${totalBandwidth.formatted}`,
495
+ `In: ${bandwidthIn.formatted}`,
496
+ `Out: ${bandwidthOut.formatted}`,
497
+ ``,
498
+ `Total Data: ${totalBytes.formatted}`,
499
+ `Active IFs: ${network.activeInterfaces}`,
500
+ `Connections: ${network.connections}`,
501
+ `State: ${network.connectionState}`,
502
+ ``,
503
+ `Interface Details:`,
504
+ ...network.interfaces.slice(0, 3).map(iface => ` ${iface.name}: ${iface.isUp ? 'UP' : 'DOWN'}`),
505
+ ].join('\n');
506
+ this.networkStatsBox.setContent(content);
507
+ const borderColor = network.connectionState === 'connected' ? 'green' :
508
+ network.connectionState === 'limited' ? 'yellow' : 'red';
509
+ this.networkStatsBox.style.border = { fg: borderColor };
510
+ }
511
+ updateProcessStatsBox() {
512
+ if (!this.processStatsBox || !this.currentResources)
513
+ return;
514
+ const proc = this.currentResources.process;
515
+ const uptimeHours = Math.floor(proc.uptime / 3600);
516
+ const uptimeMinutes = Math.floor((proc.uptime % 3600) / 60);
517
+ const uptimeSeconds = Math.floor(proc.uptime % 60);
518
+ const uptimeFormatted = `${uptimeHours}h ${uptimeMinutes}m ${uptimeSeconds}s`;
519
+ const heapUsed = system_resource_service_1.NetworkUtils.formatBytes(proc.heapUsed);
520
+ const heapTotal = system_resource_service_1.NetworkUtils.formatBytes(proc.heapTotal || 0);
521
+ const rss = system_resource_service_1.NetworkUtils.formatBytes(proc.rss || 0);
522
+ const peakMemory = system_resource_service_1.NetworkUtils.formatBytes(proc.peakMemoryUsage || 0);
523
+ const ratingColor = proc.performanceRating === 'excellent' ? 'green' :
524
+ proc.performanceRating === 'good' ? 'cyan' :
525
+ proc.performanceRating === 'fair' ? 'yellow' : 'red';
526
+ const content = [
527
+ `PID: ${proc.pid}`,
528
+ `Status: ${proc.status}`,
529
+ `Uptime: ${uptimeFormatted}`,
530
+ ``,
531
+ `CPU: ${proc.cpuUsage}%`,
532
+ `Avg CPU: ${proc.avgCpuUsage || 0}%`,
533
+ ``,
534
+ `Heap: ${heapUsed.formatted}`,
535
+ `Total: ${heapTotal.formatted}`,
536
+ `RSS: ${rss.formatted}`,
537
+ `Peak: ${peakMemory.formatted}`,
538
+ ``,
539
+ `FDs: ${proc.fileDescriptors || 'N/A'}`,
540
+ `Threads: ${proc.threadCount || 'N/A'}`,
541
+ ``,
542
+ `Rating: ${proc.performanceRating || 'unknown'}`,
543
+ ].join('\n');
544
+ this.processStatsBox.setContent(content);
545
+ this.processStatsBox.style.border = { fg: ratingColor };
546
+ }
547
+ updateInfoBox() {
548
+ if (!this.infoBox || !this.currentResources)
549
+ return;
550
+ const info = this.systemResourceService.getSystemInfo();
551
+ const formatBytes = (bytes) => {
552
+ const result = system_resource_service_1.NetworkUtils.formatBytes(bytes);
553
+ return result.formatted;
554
+ };
555
+ const content = [
556
+ `Platform: ${info.platform}`,
557
+ `Hostname: ${info.hostname}`,
558
+ `Uptime: ${Math.floor(info.uptime / 3600)}h ${Math.floor((info.uptime % 3600) / 60)}m`,
559
+ `Memory: ${formatBytes(this.currentResources.memory.used)} / ${formatBytes(this.currentResources.memory.total)}`,
560
+ `CPU: ${this.currentResources.cpu.cores} cores`,
561
+ `Process: PID ${this.currentResources.process.pid}`,
562
+ `Proc Mem: ${formatBytes(this.currentResources.process.memoryUsage)}`,
563
+ ].join('\n');
564
+ this.infoBox.setContent(content);
565
+ }
566
+ updateAlertBox() {
567
+ if (!this.alertBox || !this.currentResources)
568
+ return;
569
+ const alerts = [];
570
+ if (this.currentResources.cpu.usage >= this.alertThresholds.cpu.critical) {
571
+ alerts.push(`CPU: ${this.currentResources.cpu.usage}% (CRITICAL)`);
572
+ }
573
+ else if (this.currentResources.cpu.usage >= this.alertThresholds.cpu.warning) {
574
+ alerts.push(`CPU: ${this.currentResources.cpu.usage}% (WARNING)`);
575
+ }
576
+ if (this.currentResources.memory.percentage >= this.alertThresholds.memory.critical) {
577
+ alerts.push(`Memory: ${this.currentResources.memory.percentage}% (CRITICAL)`);
578
+ }
579
+ else if (this.currentResources.memory.percentage >= this.alertThresholds.memory.warning) {
580
+ alerts.push(`Memory: ${this.currentResources.memory.percentage}% (WARNING)`);
581
+ }
582
+ const currentNetworkMBps = this.networkHistory.length > 0 ?
583
+ (this.networkHistory[this.networkHistory.length - 1]?.bytesIn || 0) +
584
+ (this.networkHistory[this.networkHistory.length - 1]?.bytesOut || 0) : 0;
585
+ if (currentNetworkMBps >= this.alertThresholds.network.critical) {
586
+ alerts.push(`Network: ${currentNetworkMBps.toFixed(1)}MB/s (CRITICAL)`);
587
+ }
588
+ else if (currentNetworkMBps >= this.alertThresholds.network.warning) {
589
+ alerts.push(`Network: ${currentNetworkMBps.toFixed(1)}MB/s (WARNING)`);
590
+ }
591
+ const content = alerts.length > 0 ? alerts.join('\n') : 'No alerts';
592
+ this.alertBox.setContent(content);
593
+ if (alerts.some(alert => alert.includes('CRITICAL'))) {
594
+ this.alertBox.style.border = { fg: 'red' };
595
+ }
596
+ else if (alerts.some(alert => alert.includes('WARNING'))) {
597
+ this.alertBox.style.border = { fg: 'yellow' };
598
+ }
599
+ else {
600
+ this.alertBox.style.border = { fg: 'green' };
601
+ }
602
+ }
603
+ getColorForValue(value, type) {
604
+ const thresholds = this.alertThresholds[type];
605
+ if (value >= thresholds.critical) {
606
+ return 'red';
607
+ }
608
+ else if (value >= thresholds.warning) {
609
+ return 'yellow';
610
+ }
611
+ else {
612
+ return 'green';
613
+ }
614
+ }
615
+ update(data) {
616
+ if (this.isDestroyed)
617
+ return;
618
+ try {
619
+ this.currentResources = data;
620
+ this.updateState({ data, lastUpdate: new Date() });
621
+ this.throttledRender();
622
+ }
623
+ catch (error) {
624
+ this.handleError(error instanceof Error ? error : new Error('Update failed'));
625
+ }
626
+ }
627
+ requestUpdate() {
628
+ this.collectResourceData();
629
+ }
630
+ destroy() {
631
+ if (this.systemResourceService) {
632
+ this.systemResourceService.removeAllListeners();
633
+ }
634
+ this.networkHistory = [];
635
+ this.cpuHistory = [];
636
+ this.memoryHistory = [];
637
+ this.currentResources = null;
638
+ super.destroy();
639
+ }
640
+ }
641
+ exports.SystemResourcePanel = SystemResourcePanel;
642
+ //# sourceMappingURL=system-resource.panel.js.map