@64mb/freelens-power 1.0.3 → 1.2.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 (224) hide show
  1. package/README.md +9 -4
  2. package/THIRD_PARTY_LICENSES +1707 -0
  3. package/out/main/ai.js +63 -23
  4. package/out/main/ai.js.map +1 -1
  5. package/out/main/cluster-icons-catalog.js +28 -0
  6. package/out/main/cluster-icons-catalog.js.map +1 -0
  7. package/out/main/cluster-icons.js +125 -0
  8. package/out/main/cluster-icons.js.map +1 -0
  9. package/out/main/common/ai-terminal-context.js +51 -0
  10. package/out/main/common/ai-terminal-context.js.map +1 -0
  11. package/out/main/common/ai.js.map +1 -1
  12. package/out/main/common/cluster-icon-ipc.js +6 -0
  13. package/out/main/common/cluster-icon-ipc.js.map +1 -0
  14. package/out/main/common/cluster-icons.js +121 -0
  15. package/out/main/common/cluster-icons.js.map +1 -0
  16. package/out/main/common/dashboard.js +1 -1
  17. package/out/main/common/dashboard.js.map +1 -1
  18. package/out/main/common/monitoring-history.js +52 -0
  19. package/out/main/common/monitoring-history.js.map +1 -0
  20. package/out/main/common/settings-export.js +3 -1
  21. package/out/main/common/settings-export.js.map +1 -1
  22. package/out/main/common/store/cluster-icons-store.js +32 -0
  23. package/out/main/common/store/cluster-icons-store.js.map +1 -0
  24. package/out/main/common/store/monitoring-preferences-store.js +30 -2
  25. package/out/main/common/store/monitoring-preferences-store.js.map +1 -1
  26. package/out/main/dashboard-views.js +132 -28
  27. package/out/main/dashboard-views.js.map +1 -1
  28. package/out/main/diagnostics-menu-order.js +57 -0
  29. package/out/main/diagnostics-menu-order.js.map +1 -0
  30. package/out/main/index.js +11 -1
  31. package/out/main/index.js.map +1 -1
  32. package/out/main/monitoring-history-database.js +103 -0
  33. package/out/main/monitoring-history-database.js.map +1 -0
  34. package/out/main/monitoring-history-worker.js +61 -0
  35. package/out/main/monitoring-history-worker.js.map +1 -0
  36. package/out/main/monitoring-history.js +110 -0
  37. package/out/main/monitoring-history.js.map +1 -0
  38. package/out/renderer/_virtual/_global-external_mobx.js +2 -1
  39. package/out/renderer/_virtual/_global-external_react-dom.js +2 -1
  40. package/out/renderer/_virtual/_global-external_react.js +10 -5
  41. package/out/renderer/_virtual/_rolldown/runtime.js +22 -0
  42. package/out/renderer/ai-terminal-context.js +200 -0
  43. package/out/renderer/ai-terminal-context.js.map +1 -0
  44. package/out/renderer/ai.js +90 -9
  45. package/out/renderer/ai.js.map +1 -1
  46. package/out/renderer/appearance.js +1 -0
  47. package/out/renderer/appearance.js.map +1 -1
  48. package/out/renderer/cluster-icon-colors.js +188 -0
  49. package/out/renderer/cluster-icon-colors.js.map +1 -0
  50. package/out/renderer/cluster-icons.js +304 -0
  51. package/out/renderer/cluster-icons.js.map +1 -0
  52. package/out/renderer/dashboard.js +8 -5
  53. package/out/renderer/dashboard.js.map +1 -1
  54. package/out/renderer/details/secret-certificate-details.js +9 -2
  55. package/out/renderer/details/secret-certificate-details.js.map +1 -1
  56. package/out/renderer/diagnostics.css.js +39 -0
  57. package/out/renderer/diagnostics.css.js.map +1 -0
  58. package/out/renderer/diagnostics.js +1100 -0
  59. package/out/renderer/diagnostics.js.map +1 -0
  60. package/out/renderer/index.js +32 -0
  61. package/out/renderer/index.js.map +1 -1
  62. package/out/renderer/monitoring-collector.js +202 -0
  63. package/out/renderer/monitoring-collector.js.map +1 -0
  64. package/out/renderer/monitoring-details-chart.js +42 -0
  65. package/out/renderer/monitoring-details-chart.js.map +1 -0
  66. package/out/renderer/monitoring-history-collection.js +168 -0
  67. package/out/renderer/monitoring-history-collection.js.map +1 -0
  68. package/out/renderer/monitoring-history-view.js +227 -0
  69. package/out/renderer/monitoring-history-view.js.map +1 -0
  70. package/out/renderer/monitoring-history.js +19 -0
  71. package/out/renderer/monitoring-history.js.map +1 -0
  72. package/out/renderer/monitoring.js +153 -139
  73. package/out/renderer/monitoring.js.map +1 -1
  74. package/out/renderer/node-monitoring.js +127 -0
  75. package/out/renderer/node-monitoring.js.map +1 -0
  76. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js +10 -0
  77. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js.map +1 -0
  78. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +8 -0
  79. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js.map +1 -0
  80. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js +9 -0
  81. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js.map +1 -0
  82. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +9 -0
  83. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js.map +1 -0
  84. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/classCallCheck.js +8 -0
  85. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/classCallCheck.js.map +1 -0
  86. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/createClass.js +15 -0
  87. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/createClass.js.map +1 -0
  88. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/createSuper.js +19 -0
  89. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/createSuper.js.map +1 -0
  90. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/defineProperty.js +14 -0
  91. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/defineProperty.js.map +1 -0
  92. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/extends.js +19 -0
  93. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/extends.js.map +1 -0
  94. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js +15 -0
  95. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js.map +1 -0
  96. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/inherits.js +14 -0
  97. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/inherits.js.map +1 -0
  98. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js +18 -0
  99. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js.map +1 -0
  100. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/iterableToArray.js +8 -0
  101. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/iterableToArray.js.map +1 -0
  102. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +26 -0
  103. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js.map +1 -0
  104. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js +8 -0
  105. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js.map +1 -0
  106. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js +8 -0
  107. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js.map +1 -0
  108. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/objectSpread2.js +27 -0
  109. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/objectSpread2.js.map +1 -0
  110. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +15 -0
  111. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js.map +1 -0
  112. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +14 -0
  113. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js.map +1 -0
  114. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js +12 -0
  115. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js.map +1 -0
  116. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +15 -0
  117. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js.map +1 -0
  118. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/slicedToArray.js +12 -0
  119. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/slicedToArray.js.map +1 -0
  120. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js +8 -0
  121. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js.map +1 -0
  122. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js +12 -0
  123. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js.map +1 -0
  124. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/toPrimitive.js +16 -0
  125. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/toPrimitive.js.map +1 -0
  126. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js +11 -0
  127. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js.map +1 -0
  128. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/typeof.js +18 -0
  129. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/typeof.js.map +1 -0
  130. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js +13 -0
  131. package/out/renderer/node_modules/.pnpm/@babel_runtime@7.27.6/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js.map +1 -0
  132. package/out/renderer/node_modules/.pnpm/@emotion_cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js +237 -0
  133. package/out/renderer/node_modules/.pnpm/@emotion_cache@11.14.0/node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js.map +1 -0
  134. package/out/renderer/node_modules/.pnpm/@emotion_hash@0.9.2/node_modules/@emotion/hash/dist/emotion-hash.esm.js +25 -0
  135. package/out/renderer/node_modules/.pnpm/@emotion_hash@0.9.2/node_modules/@emotion/hash/dist/emotion-hash.esm.js.map +1 -0
  136. package/out/renderer/node_modules/.pnpm/@emotion_memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js +12 -0
  137. package/out/renderer/node_modules/.pnpm/@emotion_memoize@0.9.0/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js.map +1 -0
  138. package/out/renderer/node_modules/.pnpm/@emotion_react@11.14.0_@types_react@17.0.93_react@17.0.2/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js +58 -0
  139. package/out/renderer/node_modules/.pnpm/@emotion_react@11.14.0_@types_react@17.0.93_react@17.0.2/node_modules/@emotion/react/dist/emotion-element-f0de968e.browser.esm.js.map +1 -0
  140. package/out/renderer/node_modules/.pnpm/@emotion_react@11.14.0_@types_react@17.0.93_react@17.0.2/node_modules/@emotion/react/dist/emotion-react.browser.esm.js +54 -0
  141. package/out/renderer/node_modules/.pnpm/@emotion_react@11.14.0_@types_react@17.0.93_react@17.0.2/node_modules/@emotion/react/dist/emotion-react.browser.esm.js.map +1 -0
  142. package/out/renderer/node_modules/.pnpm/@emotion_serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js +133 -0
  143. package/out/renderer/node_modules/.pnpm/@emotion_serialize@1.3.3/node_modules/@emotion/serialize/dist/emotion-serialize.esm.js.map +1 -0
  144. package/out/renderer/node_modules/.pnpm/@emotion_sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js +65 -0
  145. package/out/renderer/node_modules/.pnpm/@emotion_sheet@1.4.0/node_modules/@emotion/sheet/dist/emotion-sheet.esm.js.map +1 -0
  146. package/out/renderer/node_modules/.pnpm/@emotion_unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js +54 -0
  147. package/out/renderer/node_modules/.pnpm/@emotion_unitless@0.10.0/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js.map +1 -0
  148. package/out/renderer/node_modules/.pnpm/@emotion_use-insertion-effect-with-fallbacks@1.2.0_react@17.0.2/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js +12 -0
  149. package/out/renderer/node_modules/.pnpm/@emotion_use-insertion-effect-with-fallbacks@1.2.0_react@17.0.2/node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js.map +1 -0
  150. package/out/renderer/node_modules/.pnpm/@emotion_utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js +30 -0
  151. package/out/renderer/node_modules/.pnpm/@emotion_utils@1.4.2/node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js.map +1 -0
  152. package/out/renderer/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +211 -0
  153. package/out/renderer/node_modules/.pnpm/@floating-ui_dom@1.7.2/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -0
  154. package/out/renderer/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +97 -0
  155. package/out/renderer/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -0
  156. package/out/renderer/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +31 -0
  157. package/out/renderer/node_modules/.pnpm/@floating-ui_utils@0.2.10/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -0
  158. package/out/renderer/node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js +93 -0
  159. package/out/renderer/node_modules/.pnpm/hoist-non-react-statics@3.3.2/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js.map +1 -0
  160. package/out/renderer/node_modules/.pnpm/memoize-one@6.0.0/node_modules/memoize-one/dist/memoize-one.esm.js +38 -0
  161. package/out/renderer/node_modules/.pnpm/memoize-one@6.0.0/node_modules/memoize-one/dist/memoize-one.esm.js.map +1 -0
  162. package/out/renderer/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js +159 -0
  163. package/out/renderer/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.development.js.map +1 -0
  164. package/out/renderer/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js +103 -0
  165. package/out/renderer/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/cjs/react-is.production.min.js.map +1 -0
  166. package/out/renderer/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +18 -0
  167. package/out/renderer/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js.map +1 -0
  168. package/out/renderer/node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/Select-ef7c0426.esm.js +2200 -0
  169. package/out/renderer/node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/Select-ef7c0426.esm.js.map +1 -0
  170. package/out/renderer/node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/index-641ee5b8.esm.js +992 -0
  171. package/out/renderer/node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/index-641ee5b8.esm.js.map +1 -0
  172. package/out/renderer/node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/react-select.esm.js +14 -0
  173. package/out/renderer/node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/react-select.esm.js.map +1 -0
  174. package/out/renderer/node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/useStateManager-7e1e8489.esm.js +56 -0
  175. package/out/renderer/node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/useStateManager-7e1e8489.esm.js.map +1 -0
  176. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Enum.js +22 -0
  177. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Enum.js.map +1 -0
  178. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Middleware.js +30 -0
  179. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Middleware.js.map +1 -0
  180. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Parser.js +164 -0
  181. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Parser.js.map +1 -0
  182. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Serializer.js +37 -0
  183. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Serializer.js.map +1 -0
  184. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js +245 -0
  185. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Tokenizer.js.map +1 -0
  186. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Utility.js +120 -0
  187. package/out/renderer/node_modules/.pnpm/stylis@4.2.0/node_modules/stylis/src/Utility.js.map +1 -0
  188. package/out/renderer/node_modules/.pnpm/use-isomorphic-layout-effect@1.2.1_@types_react@17.0.93_react@17.0.2/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +6 -0
  189. package/out/renderer/node_modules/.pnpm/use-isomorphic-layout-effect@1.2.1_@types_react@17.0.93_react@17.0.2/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -0
  190. package/out/renderer/pod-monitoring.js +38 -11
  191. package/out/renderer/pod-monitoring.js.map +1 -1
  192. package/out/renderer/preferences/ai-shortcuts-preferences.js +12 -4
  193. package/out/renderer/preferences/ai-shortcuts-preferences.js.map +1 -1
  194. package/out/renderer/preferences/dashboard-preferences.js +20 -4
  195. package/out/renderer/preferences/dashboard-preferences.js.map +1 -1
  196. package/out/renderer/preferences/monitoring-preferences.js +141 -9
  197. package/out/renderer/preferences/monitoring-preferences.js.map +1 -1
  198. package/out/renderer/preferences/preferences.js +31 -7
  199. package/out/renderer/preferences/preferences.js.map +1 -1
  200. package/out/renderer/read-only.js +2 -2
  201. package/out/renderer/read-only.js.map +1 -1
  202. package/out/renderer/src/common/ai-terminal-context.js +51 -0
  203. package/out/renderer/src/common/ai-terminal-context.js.map +1 -0
  204. package/out/renderer/src/common/ai.js.map +1 -1
  205. package/out/renderer/src/common/cluster-icon-ipc.js +6 -0
  206. package/out/renderer/src/common/cluster-icon-ipc.js.map +1 -0
  207. package/out/renderer/src/common/cluster-icons.js +133 -0
  208. package/out/renderer/src/common/cluster-icons.js.map +1 -0
  209. package/out/renderer/src/common/dashboard.js +1 -1
  210. package/out/renderer/src/common/dashboard.js.map +1 -1
  211. package/out/renderer/src/common/date-time.js +11 -0
  212. package/out/renderer/src/common/date-time.js.map +1 -0
  213. package/out/renderer/src/common/monitoring-history.js +17 -0
  214. package/out/renderer/src/common/monitoring-history.js.map +1 -0
  215. package/out/renderer/src/common/monitoring-math.js +98 -0
  216. package/out/renderer/src/common/monitoring-math.js.map +1 -0
  217. package/out/renderer/src/common/resource-diagnostics.js +227 -0
  218. package/out/renderer/src/common/resource-diagnostics.js.map +1 -0
  219. package/out/renderer/src/common/settings-export.js.map +1 -1
  220. package/out/renderer/src/common/store/monitoring-preferences-store.js +30 -2
  221. package/out/renderer/src/common/store/monitoring-preferences-store.js.map +1 -1
  222. package/out/renderer/welcome.js +31 -7
  223. package/out/renderer/welcome.js.map +1 -1
  224. package/package.json +3 -2
@@ -0,0 +1,168 @@
1
+ const require_extensions = require("./_virtual/_global-external_@freelensapp/extensions.js");
2
+ const require_monitoring_preferences_store = require("./src/common/store/monitoring-preferences-store.js");
3
+ const require_monitoring_math = require("./src/common/monitoring-math.js");
4
+ const require_resource_diagnostics = require("./src/common/resource-diagnostics.js");
5
+ const require_monitoring_collector = require("./monitoring-collector.js");
6
+ const require_monitoring_history = require("./monitoring-history.js");
7
+ //#region src/renderer/monitoring-history-collection.ts
8
+ function numeric(sample) {
9
+ const values = {
10
+ cpu: sample.cpu,
11
+ memory: sample.memory
12
+ };
13
+ for (const metric of ["cpu", "memory"]) for (const field of [
14
+ "requests",
15
+ "limits",
16
+ "capacity",
17
+ "allocatable"
18
+ ]) {
19
+ const value = sample.resources?.[metric]?.[field];
20
+ if (value !== void 0 && Number.isFinite(value)) values[`${metric}${field[0].toUpperCase()}${field.slice(1)}`] = value;
21
+ }
22
+ return values;
23
+ }
24
+ function historySnapshotSamples(data, tracked) {
25
+ const result = [];
26
+ const add = (scope, uid, sample) => result.push({
27
+ clusterId: data.clusterId,
28
+ scope,
29
+ uid,
30
+ time: sample.time,
31
+ values: numeric(sample)
32
+ });
33
+ if (data.nodeMetrics?.length) try {
34
+ const sample = require_monitoring_math.aggregateMetrics(data.nodeMetrics);
35
+ sample.time = Math.min(...data.nodeMetrics.map((metric) => Date.parse(metric.timestamp)));
36
+ if (data.nodes?.length) try {
37
+ sample.resources = require_monitoring_math.aggregateResources(data.nodes, data.pods);
38
+ } catch {}
39
+ add("cluster", data.clusterId, sample);
40
+ } catch {}
41
+ const nodeMetricsByName = /* @__PURE__ */ new Map();
42
+ for (const metric of data.nodeMetrics ?? []) {
43
+ if (!metric.metadata?.name) continue;
44
+ const metrics = nodeMetricsByName.get(metric.metadata.name) ?? [];
45
+ metrics.push(metric);
46
+ nodeMetricsByName.set(metric.metadata.name, metrics);
47
+ }
48
+ const podsByNode = /* @__PURE__ */ new Map();
49
+ for (const pod of data.pods ?? []) {
50
+ const name = pod.spec.nodeName;
51
+ if (!name) continue;
52
+ const pods = podsByNode.get(name) ?? [];
53
+ pods.push(pod);
54
+ podsByNode.set(name, pods);
55
+ }
56
+ for (const node of data.nodes ?? []) {
57
+ if (!node.metadata.uid) continue;
58
+ try {
59
+ const sample = require_monitoring_collector.getNodeSample({
60
+ ...data,
61
+ nodes: [node],
62
+ nodeMetrics: nodeMetricsByName.get(node.metadata.name),
63
+ pods: data.pods ? podsByNode.get(node.metadata.name) ?? [] : void 0
64
+ }, node.metadata.name, node.metadata.uid);
65
+ if (sample) add("node", node.metadata.uid, sample);
66
+ } catch {}
67
+ }
68
+ const usage = require_monitoring_collector.getCollectedPodUsage(data);
69
+ const targets = tracked.filter((item) => item.clusterId === data.clusterId);
70
+ const podsByUid = new Map((data.pods ?? []).map((pod) => [pod.metadata.uid, pod]));
71
+ const usageByUid = new Map(usage.map((item) => [item.uid, item]));
72
+ const metricsByName = new Map((data.podMetrics ?? []).map((metric) => [`${metric.metadata.namespace ?? ""}/${metric.metadata.name}`, metric]));
73
+ const workloadTargets = new Set(targets.filter((item) => item.scope === "workload").map((item) => item.uid));
74
+ for (const target of targets.filter((item) => item.scope === "pod")) {
75
+ const pod = podsByUid.get(target.uid);
76
+ const metric = usageByUid.get(target.uid);
77
+ const raw = pod ? metricsByName.get(`${pod.metadata.namespace ?? ""}/${pod.metadata.name}`) : void 0;
78
+ if (!pod || !metric || metric.cpu === void 0 || metric.memory === void 0 || !raw) continue;
79
+ const sample = {
80
+ time: Date.parse(raw.timestamp),
81
+ cpu: metric.cpu,
82
+ memory: metric.memory
83
+ };
84
+ try {
85
+ sample.resources = {
86
+ cpu: {
87
+ requests: require_resource_diagnostics.effectivePodResource(pod, "cpu"),
88
+ limits: require_resource_diagnostics.effectivePodResource(pod, "cpu", "limits")
89
+ },
90
+ memory: {
91
+ requests: require_resource_diagnostics.effectivePodResource(pod, "memory"),
92
+ limits: require_resource_diagnostics.effectivePodResource(pod, "memory", "limits")
93
+ }
94
+ };
95
+ } catch {}
96
+ add("pod", target.uid, sample);
97
+ }
98
+ for (const group of workloadTargets.size ? require_resource_diagnostics.buildConsumerGroups(data.pods ?? [], data.owners ?? [], usage) : []) {
99
+ if (!group.ownerResolved || !workloadTargets.has(group.identity) || group.cpu.coveredPods !== group.cpu.totalPods || group.memory.coveredPods !== group.memory.totalPods || group.cpu.usage === void 0 || group.memory.usage === void 0) continue;
100
+ const times = group.pods.flatMap((pod) => {
101
+ const metric = metricsByName.get(`${pod.metadata.namespace ?? ""}/${pod.metadata.name}`);
102
+ return metric ? [Date.parse(metric.timestamp)] : [];
103
+ });
104
+ if (!times.length) continue;
105
+ add("workload", group.identity, {
106
+ time: Math.min(...times),
107
+ cpu: group.cpu.usage,
108
+ memory: group.memory.usage,
109
+ resources: {
110
+ cpu: { requests: group.cpu.unknownRequestPods ? void 0 : group.cpu.requests },
111
+ memory: { requests: group.memory.unknownRequestPods ? void 0 : group.memory.requests }
112
+ }
113
+ });
114
+ }
115
+ return result;
116
+ }
117
+ function startMonitoringHistoryCollection() {
118
+ const seen = /* @__PURE__ */ new Map();
119
+ let stopped = false;
120
+ let writing = false;
121
+ let queued;
122
+ const permitted = (data) => {
123
+ const preferences = require_monitoring_preferences_store.MonitoringPreferencesStore.getInstanceOrCreate();
124
+ return !stopped && preferences.enabled && preferences.historyEnabled && document.visibilityState !== "hidden" && require_extensions.Renderer.Catalog.activeCluster.get()?.metadata.uid === data.clusterId;
125
+ };
126
+ const flush = async () => {
127
+ if (writing) return;
128
+ writing = true;
129
+ try {
130
+ while (queued && !stopped) {
131
+ const data = queued;
132
+ queued = void 0;
133
+ if (!permitted(data)) continue;
134
+ const samples = historySnapshotSamples(data, require_monitoring_preferences_store.MonitoringPreferencesStore.getInstanceOrCreate().trackedHistory).filter((sample) => (seen.get(`${sample.clusterId}/${sample.scope}/${sample.uid}`) ?? 0) < sample.time);
135
+ for (let i = 0; i < samples.length; i += 512) {
136
+ if (!permitted(data)) break;
137
+ const batch = samples.slice(i, i + 512);
138
+ try {
139
+ if (!await require_monitoring_history.monitoringHistory.append(batch) || stopped) continue;
140
+ for (const sample of batch) {
141
+ const key = `${sample.clusterId}/${sample.scope}/${sample.uid}`;
142
+ seen.set(key, Math.max(seen.get(key) ?? 0, sample.time));
143
+ }
144
+ while (seen.size > 1e4) seen.delete(seen.keys().next().value);
145
+ } catch {}
146
+ }
147
+ }
148
+ } finally {
149
+ writing = false;
150
+ }
151
+ };
152
+ const unsubscribe = require_monitoring_collector.onMonitoringSnapshot((data) => {
153
+ if (!permitted(data)) return;
154
+ queued = data;
155
+ flush();
156
+ });
157
+ return () => {
158
+ stopped = true;
159
+ queued = void 0;
160
+ unsubscribe();
161
+ seen.clear();
162
+ };
163
+ }
164
+ //#endregion
165
+ exports.historySnapshotSamples = historySnapshotSamples;
166
+ exports.startMonitoringHistoryCollection = startMonitoringHistoryCollection;
167
+
168
+ //# sourceMappingURL=monitoring-history-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring-history-collection.js","names":[],"sources":["../../src/renderer/monitoring-history-collection.ts"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\nimport { type HistoryIdentity, type HistorySample, validHistoryIdentity } from \"../common/monitoring-history\";\nimport { aggregateMetrics, aggregateResources, type MonitoringSample } from \"../common/monitoring-math\";\nimport { buildConsumerGroups, effectivePodResource } from \"../common/resource-diagnostics\";\nimport { MonitoringPreferencesStore } from \"../common/store/monitoring-preferences-store\";\nimport {\n getCollectedPodUsage,\n getNodeSample,\n type MonitoringSnapshot,\n onMonitoringSnapshot,\n} from \"./monitoring-collector\";\nimport { monitoringHistory } from \"./monitoring-history\";\nexport function isHistoryTracked(identity: HistoryIdentity): boolean {\n return MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>().trackedHistory.some(\n (item) => item.clusterId === identity.clusterId && item.scope === identity.scope && item.uid === identity.uid,\n );\n}\nexport function setHistoryTracked(identity: HistoryIdentity, tracked: boolean): void {\n if (!validHistoryIdentity(identity)) return;\n const preferences = MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>();\n const rest = preferences.trackedHistory.filter(\n (item) => !(item.clusterId === identity.clusterId && item.scope === identity.scope && item.uid === identity.uid),\n );\n preferences.trackedHistory = tracked\n ? [...rest, { clusterId: identity.clusterId, scope: identity.scope, uid: identity.uid }].slice(-100)\n : rest;\n}\nfunction numeric(sample: MonitoringSample): HistorySample[\"values\"] {\n const values: HistorySample[\"values\"] = { cpu: sample.cpu, memory: sample.memory };\n for (const metric of [\"cpu\", \"memory\"] as const)\n for (const field of [\"requests\", \"limits\", \"capacity\", \"allocatable\"] as const) {\n const value = sample.resources?.[metric]?.[field];\n if (value !== undefined && Number.isFinite(value))\n values[`${metric}${field[0].toUpperCase()}${field.slice(1)}` as keyof typeof values] = value;\n }\n return values;\n}\nexport function historySnapshotSamples(data: MonitoringSnapshot, tracked: HistoryIdentity[]): HistorySample[] {\n const result: HistorySample[] = [];\n const add = (scope: HistoryIdentity[\"scope\"], uid: string, sample: MonitoringSample) =>\n result.push({ clusterId: data.clusterId, scope, uid, time: sample.time, values: numeric(sample) });\n if (data.nodeMetrics?.length) {\n try {\n const sample = aggregateMetrics(data.nodeMetrics);\n sample.time = Math.min(...data.nodeMetrics.map((metric) => Date.parse(metric.timestamp)));\n if (data.nodes?.length) {\n try {\n sample.resources = aggregateResources(data.nodes, data.pods);\n } catch {\n // usage remains valid when capacity or request data is incomplete\n }\n }\n add(\"cluster\", data.clusterId, sample);\n } catch {\n /* invalid or stale metrics leave a gap */\n }\n }\n const nodeMetricsByName = new Map<string, NonNullable<MonitoringSnapshot[\"nodeMetrics\"]>>();\n for (const metric of data.nodeMetrics ?? []) {\n if (!metric.metadata?.name) continue;\n const metrics = nodeMetricsByName.get(metric.metadata.name) ?? [];\n metrics.push(metric);\n nodeMetricsByName.set(metric.metadata.name, metrics);\n }\n const podsByNode = new Map<string, NonNullable<MonitoringSnapshot[\"pods\"]>>();\n for (const pod of data.pods ?? []) {\n const name = pod.spec.nodeName;\n if (!name) continue;\n const pods = podsByNode.get(name) ?? [];\n pods.push(pod);\n podsByNode.set(name, pods);\n }\n for (const node of data.nodes ?? []) {\n if (!node.metadata.uid) continue;\n try {\n const sample = getNodeSample(\n {\n ...data,\n nodes: [node],\n nodeMetrics: nodeMetricsByName.get(node.metadata.name),\n pods: data.pods ? (podsByNode.get(node.metadata.name) ?? []) : undefined,\n },\n node.metadata.name,\n node.metadata.uid,\n );\n if (sample) add(\"node\", node.metadata.uid, sample);\n } catch {\n /* invalid or stale metrics leave a gap */\n }\n }\n const usage = getCollectedPodUsage(data);\n const targets = tracked.filter((item) => item.clusterId === data.clusterId);\n const podsByUid = new Map((data.pods ?? []).map((pod) => [pod.metadata.uid, pod]));\n const usageByUid = new Map(usage.map((item) => [item.uid, item]));\n const metricsByName = new Map(\n (data.podMetrics ?? []).map((metric) => [`${metric.metadata.namespace ?? \"\"}/${metric.metadata.name}`, metric]),\n );\n const workloadTargets = new Set(targets.filter((item) => item.scope === \"workload\").map((item) => item.uid));\n for (const target of targets.filter((item) => item.scope === \"pod\")) {\n const pod = podsByUid.get(target.uid);\n const metric = usageByUid.get(target.uid);\n const raw = pod ? metricsByName.get(`${pod.metadata.namespace ?? \"\"}/${pod.metadata.name}`) : undefined;\n if (!pod || !metric || metric.cpu === undefined || metric.memory === undefined || !raw) continue;\n const sample: MonitoringSample = { time: Date.parse(raw.timestamp), cpu: metric.cpu, memory: metric.memory };\n try {\n sample.resources = {\n cpu: { requests: effectivePodResource(pod, \"cpu\"), limits: effectivePodResource(pod, \"cpu\", \"limits\") },\n memory: {\n requests: effectivePodResource(pod, \"memory\"),\n limits: effectivePodResource(pod, \"memory\", \"limits\"),\n },\n };\n } catch {\n /* usage remains available without resource totals */\n }\n add(\"pod\", target.uid, sample);\n }\n for (const group of workloadTargets.size ? buildConsumerGroups(data.pods ?? [], data.owners ?? [], usage) : []) {\n if (\n !group.ownerResolved ||\n !workloadTargets.has(group.identity) ||\n group.cpu.coveredPods !== group.cpu.totalPods ||\n group.memory.coveredPods !== group.memory.totalPods ||\n group.cpu.usage === undefined ||\n group.memory.usage === undefined\n )\n continue;\n const times = group.pods.flatMap((pod) => {\n const metric = metricsByName.get(`${pod.metadata.namespace ?? \"\"}/${pod.metadata.name}`);\n return metric ? [Date.parse(metric.timestamp)] : [];\n });\n if (!times.length) continue;\n add(\"workload\", group.identity, {\n time: Math.min(...times),\n cpu: group.cpu.usage,\n memory: group.memory.usage,\n resources: {\n cpu: { requests: group.cpu.unknownRequestPods ? undefined : group.cpu.requests },\n memory: { requests: group.memory.unknownRequestPods ? undefined : group.memory.requests },\n },\n });\n }\n return result;\n}\nexport function startMonitoringHistoryCollection(): () => void {\n const seen = new Map<string, number>();\n let stopped = false;\n let writing = false;\n let queued: MonitoringSnapshot | undefined;\n const permitted = (data: MonitoringSnapshot) => {\n const preferences = MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>();\n return (\n !stopped &&\n preferences.enabled &&\n preferences.historyEnabled &&\n document.visibilityState !== \"hidden\" &&\n Renderer.Catalog.activeCluster.get()?.metadata.uid === data.clusterId\n );\n };\n const flush = async () => {\n if (writing) return;\n writing = true;\n try {\n while (queued && !stopped) {\n const data = queued;\n queued = undefined;\n if (!permitted(data)) continue;\n const preferences = MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>();\n const samples = historySnapshotSamples(data, preferences.trackedHistory).filter(\n (sample) => (seen.get(`${sample.clusterId}/${sample.scope}/${sample.uid}`) ?? 0) < sample.time,\n );\n for (let i = 0; i < samples.length; i += 512) {\n if (!permitted(data)) break;\n const batch = samples.slice(i, i + 512);\n try {\n if (!(await monitoringHistory.append(batch)) || stopped) continue;\n for (const sample of batch) {\n const key = `${sample.clusterId}/${sample.scope}/${sample.uid}`;\n seen.set(key, Math.max(seen.get(key) ?? 0, sample.time));\n }\n while (seen.size > 10_000) seen.delete(seen.keys().next().value!);\n } catch {\n // failed batches remain eligible for the next snapshot\n }\n }\n }\n } finally {\n writing = false;\n }\n };\n const unsubscribe = onMonitoringSnapshot((data) => {\n if (!permitted(data)) return;\n // retain only the newest pending snapshot while writes are in flight\n queued = data;\n void flush();\n });\n return () => {\n stopped = true;\n queued = undefined;\n unsubscribe();\n seen.clear();\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ const require_extensions = require("./_virtual/_global-external_@freelensapp/extensions.js");
2
+ const require__global_external_mobx = require("./_virtual/_global-external_mobx.js");
3
+ const require_monitoring_preferences_store = require("./src/common/store/monitoring-preferences-store.js");
4
+ const require__global_external_react = require("./_virtual/_global-external_react.js");
5
+ const require_jsx_runtime = require("./_virtual/_global-external_react/jsx-runtime.js");
6
+ const require_react_select_esm = require("./node_modules/.pnpm/react-select@5.10.2_@types_react@17.0.93_react-dom@17.0.2_react@17.0.2__react@17.0.2/node_modules/react-select/dist/react-select.esm.js");
7
+ const require_monitoring_history = require("./monitoring-history.js");
8
+ //#region src/renderer/monitoring-history-view.tsx
9
+ var HISTORY_RANGES = {
10
+ "5m": 3e5,
11
+ "30m": 18e5,
12
+ "2h": 72e5,
13
+ "24h": 864e5,
14
+ "7d": 6048e5
15
+ };
16
+ var RANGE_LABELS = {
17
+ "5m": "5 min",
18
+ "30m": "30 min",
19
+ "2h": "2 hours",
20
+ "24h": "24 hours",
21
+ "7d": "7 days"
22
+ };
23
+ function mergeHistorySamples(points, live, from) {
24
+ const buckets = /* @__PURE__ */ new Map();
25
+ for (const point of points) {
26
+ if (point.time < from) continue;
27
+ const sample = buckets.get(point.time) ?? {
28
+ time: point.time,
29
+ cpu: NaN,
30
+ memory: NaN
31
+ };
32
+ if (point.metric === "cpu" || point.metric === "memory") {
33
+ sample[point.metric] = point.avg;
34
+ sample.historical ??= {};
35
+ sample.historical[point.metric] = {
36
+ min: point.min,
37
+ max: point.max,
38
+ count: point.count,
39
+ resolution: point.resolution,
40
+ gap: point.gap
41
+ };
42
+ if (point.gap) sample.breakBefore = true;
43
+ } else if (point.metric !== "restarts") {
44
+ const match = /^(cpu|memory)(Requests|Limits|Capacity|Allocatable)$/.exec(point.metric);
45
+ if (match) {
46
+ sample.resources ??= {
47
+ cpu: {},
48
+ memory: {}
49
+ };
50
+ sample.resources[match[1]][match[2].toLowerCase()] = point.avg;
51
+ }
52
+ }
53
+ if (point.gap) sample.resourceStatus = "Partial historical bucket; missing samples are gaps";
54
+ buckets.set(point.time, sample);
55
+ }
56
+ for (const sample of live) if (sample.time >= from) {
57
+ for (const point of points) if (sample.time >= point.time && sample.time < point.time + point.resolution) buckets.delete(point.time);
58
+ buckets.set(sample.time, sample);
59
+ }
60
+ const samples = [...buckets.values()].filter((sample) => Number.isFinite(sample.cpu) && Number.isFinite(sample.memory)).sort((a, b) => a.time - b.time);
61
+ const resolution = (sample) => Math.max(sample.historical?.cpu?.resolution ?? 3e4, sample.historical?.memory?.resolution ?? 3e4);
62
+ return samples.map((sample, index) => index > 0 && sample.time - samples[index - 1].time > 1.8 * Math.max(resolution(sample), resolution(samples[index - 1])) ? {
63
+ ...sample,
64
+ breakBefore: true
65
+ } : sample);
66
+ }
67
+ function useMonitoringHistory(identity, liveSamples) {
68
+ const preferences = require_monitoring_preferences_store.MonitoringPreferencesStore.getInstanceOrCreate();
69
+ const [enabled, setEnabled] = require__global_external_react.useState(preferences.historyEnabled === true);
70
+ require__global_external_react.useEffect(() => require__global_external_mobx.reaction(() => preferences.historyEnabled === true, setEnabled, { fireImmediately: true }), [preferences]);
71
+ const [range, setRange] = require__global_external_react.useState("5m");
72
+ const [points, setPoints] = require__global_external_react.useState([]);
73
+ const [status, setStatus] = require__global_external_react.useState("");
74
+ require__global_external_react.useEffect(() => {
75
+ let current = true;
76
+ setPoints([]);
77
+ setStatus("");
78
+ if (!identity || !enabled) return;
79
+ const query = () => {
80
+ const to = Date.now();
81
+ Promise.resolve().then(() => require_monitoring_history.monitoringHistory.query({
82
+ ...identity,
83
+ from: to - HISTORY_RANGES[range] + 1e3,
84
+ to
85
+ })).then((value) => {
86
+ if (current) {
87
+ setPoints(value);
88
+ setStatus(value.length ? "" : "No local history for this range. Collection starts when enabled.");
89
+ }
90
+ }).catch(() => {
91
+ if (current) setStatus("Local history unavailable. Live samples remain visible.");
92
+ });
93
+ };
94
+ query();
95
+ const timer = window.setInterval(query, 3e4);
96
+ return () => {
97
+ current = false;
98
+ window.clearInterval(timer);
99
+ };
100
+ }, [
101
+ identity ? `${identity.clusterId}/${identity.scope}/${identity.uid}` : "",
102
+ range,
103
+ enabled
104
+ ]);
105
+ return {
106
+ range,
107
+ setRange,
108
+ samples: mergeHistorySamples(points, liveSamples, Date.now() - HISTORY_RANGES[range]),
109
+ points,
110
+ status
111
+ };
112
+ }
113
+ function MonitoringHistoryRange({ range, onChange, native = false, status, compact = false }) {
114
+ return /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
115
+ className: compact ? "power-history-compact" : void 0,
116
+ style: {
117
+ display: "flex",
118
+ flexDirection: "column",
119
+ alignItems: "flex-start",
120
+ gap: 8,
121
+ marginBottom: compact ? 0 : 12
122
+ },
123
+ children: [
124
+ /* @__PURE__ */ require_jsx_runtime.jsx("style", { children: `
125
+ .power-history-select.Select { min-width: 0; width: 100%; }
126
+ .power-history-select .Select__control { min-height: 32px; }
127
+ .power-history-select .Select__value-container { padding: 6px 10px; }
128
+ .power-history-compact .Select__control { min-height: 26px; height:26px; font-size:12px; }
129
+ .power-history-compact .Select__value-container { padding:4px 8px; }
130
+ .power-history-compact .Select__indicator { padding:3px; }
131
+ .power-history-compact .Select__indicator svg { width:14px;height:14px; }
132
+ ` }),
133
+ /* @__PURE__ */ require_jsx_runtime.jsxs("label", {
134
+ style: {
135
+ display: "inline-flex",
136
+ alignItems: "center",
137
+ gap: 12,
138
+ minHeight: compact ? 26 : 32,
139
+ color: "var(--textColorSecondary)"
140
+ },
141
+ children: [!compact && "Period", /* @__PURE__ */ require_jsx_runtime.jsx("span", {
142
+ style: {
143
+ width: compact ? 88 : 140,
144
+ position: "relative",
145
+ display: "inline-flex",
146
+ alignItems: "center"
147
+ },
148
+ children: native ? /* @__PURE__ */ require_jsx_runtime.jsx(require_extensions.Renderer.Component.Select, {
149
+ className: "power-history-select",
150
+ "aria-label": "History range",
151
+ value: range,
152
+ options: Object.keys(HISTORY_RANGES).map((value) => ({
153
+ value,
154
+ label: RANGE_LABELS[value]
155
+ })),
156
+ onChange: (option) => {
157
+ if (option) onChange(option.value);
158
+ },
159
+ isClearable: false
160
+ }) : /* @__PURE__ */ require_jsx_runtime.jsx(require_react_select_esm.default, {
161
+ "aria-label": "History range",
162
+ className: "Select power-history-select",
163
+ classNamePrefix: "Select",
164
+ unstyled: true,
165
+ isSearchable: false,
166
+ isClearable: false,
167
+ value: {
168
+ value: range,
169
+ label: RANGE_LABELS[range]
170
+ },
171
+ options: Object.keys(HISTORY_RANGES).map((value) => ({
172
+ value,
173
+ label: RANGE_LABELS[value]
174
+ })),
175
+ onChange: (option) => {
176
+ if (option) onChange(option.value);
177
+ },
178
+ onKeyDown: (event) => {
179
+ if (event.key === "Escape") event.stopPropagation();
180
+ },
181
+ menuPortalTarget: document.body,
182
+ menuPlacement: "auto",
183
+ styles: {
184
+ menuPortal: (base) => ({
185
+ ...base,
186
+ zIndex: 1e4
187
+ }),
188
+ ...compact ? {
189
+ menu: (base) => ({
190
+ ...base,
191
+ minWidth: 88,
192
+ width: "100%"
193
+ }),
194
+ menuList: (base) => ({
195
+ ...base,
196
+ padding: 4
197
+ }),
198
+ option: (base) => ({
199
+ ...base,
200
+ fontSize: 12,
201
+ lineHeight: "16px",
202
+ padding: "4px 8px",
203
+ minHeight: 24
204
+ })
205
+ } : {}
206
+ }
207
+ })
208
+ })]
209
+ }),
210
+ status && /* @__PURE__ */ require_jsx_runtime.jsx("small", {
211
+ role: "status",
212
+ style: {
213
+ color: "var(--textColorSecondary)",
214
+ lineHeight: 1.4
215
+ },
216
+ children: status
217
+ })
218
+ ]
219
+ });
220
+ }
221
+ //#endregion
222
+ exports.HISTORY_RANGES = HISTORY_RANGES;
223
+ exports.MonitoringHistoryRange = MonitoringHistoryRange;
224
+ exports.mergeHistorySamples = mergeHistorySamples;
225
+ exports.useMonitoringHistory = useMonitoringHistory;
226
+
227
+ //# sourceMappingURL=monitoring-history-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring-history-view.js","names":[],"sources":["../../src/renderer/monitoring-history-view.tsx"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\nimport { reaction } from \"mobx\";\nimport { useEffect, useState } from \"react\";\nimport ReactSelect from \"react-select\";\nimport { MonitoringPreferencesStore } from \"../common/store/monitoring-preferences-store\";\nimport { monitoringHistory } from \"./monitoring-history\";\n\nimport type { HistoryIdentity, HistoryPoint } from \"../common/monitoring-history\";\nimport type { MonitoringSample } from \"../common/monitoring-math\";\nexport const HISTORY_RANGES = {\n \"5m\": 300_000,\n \"30m\": 1_800_000,\n \"2h\": 7_200_000,\n \"24h\": 86_400_000,\n \"7d\": 604_800_000,\n} as const;\nexport type HistoryRange = keyof typeof HISTORY_RANGES;\nconst RANGE_LABELS: Record<HistoryRange, string> = {\n \"5m\": \"5 min\",\n \"30m\": \"30 min\",\n \"2h\": \"2 hours\",\n \"24h\": \"24 hours\",\n \"7d\": \"7 days\",\n};\nexport function mergeHistorySamples(\n points: HistoryPoint[],\n live: MonitoringSample[],\n from: number,\n): MonitoringSample[] {\n const buckets = new Map<number, MonitoringSample>();\n for (const point of points) {\n if (point.time < from) continue;\n const sample = buckets.get(point.time) ?? { time: point.time, cpu: NaN, memory: NaN };\n if (point.metric === \"cpu\" || point.metric === \"memory\") {\n sample[point.metric] = point.avg;\n sample.historical ??= {};\n sample.historical[point.metric] = {\n min: point.min,\n max: point.max,\n count: point.count,\n resolution: point.resolution,\n gap: point.gap,\n };\n if (point.gap) sample.breakBefore = true;\n } else if (point.metric !== \"restarts\") {\n const match = /^(cpu|memory)(Requests|Limits|Capacity|Allocatable)$/.exec(point.metric);\n if (match) {\n sample.resources ??= { cpu: {}, memory: {} };\n sample.resources[match[1] as \"cpu\" | \"memory\"][\n match[2].toLowerCase() as \"requests\" | \"limits\" | \"capacity\" | \"allocatable\"\n ] = point.avg;\n }\n }\n if (point.gap) sample.resourceStatus = \"Partial historical bucket; missing samples are gaps\";\n buckets.set(point.time, sample);\n }\n for (const sample of live)\n if (sample.time >= from) {\n for (const point of points)\n if (sample.time >= point.time && sample.time < point.time + point.resolution) buckets.delete(point.time);\n buckets.set(sample.time, sample);\n }\n const samples = [...buckets.values()]\n .filter((sample) => Number.isFinite(sample.cpu) && Number.isFinite(sample.memory))\n .sort((a, b) => a.time - b.time);\n const resolution = (sample: MonitoringSample) =>\n Math.max(sample.historical?.cpu?.resolution ?? 30_000, sample.historical?.memory?.resolution ?? 30_000);\n return samples.map((sample, index) =>\n index > 0 &&\n sample.time - samples[index - 1].time > 1.8 * Math.max(resolution(sample), resolution(samples[index - 1]))\n ? { ...sample, breakBefore: true }\n : sample,\n );\n}\nexport function useMonitoringHistory(identity: HistoryIdentity | undefined, liveSamples: MonitoringSample[]) {\n const preferences = MonitoringPreferencesStore.getInstanceOrCreate<MonitoringPreferencesStore>();\n const [enabled, setEnabled] = useState(preferences.historyEnabled === true);\n useEffect(\n () => reaction(() => preferences.historyEnabled === true, setEnabled, { fireImmediately: true }),\n [preferences],\n );\n const [range, setRange] = useState<HistoryRange>(\"5m\");\n const [points, setPoints] = useState<HistoryPoint[]>([]);\n const [status, setStatus] = useState(\"\");\n const key = identity ? `${identity.clusterId}/${identity.scope}/${identity.uid}` : \"\";\n useEffect(() => {\n let current = true;\n setPoints([]);\n setStatus(\"\");\n if (!identity || !enabled) return;\n const query = () => {\n const to = Date.now();\n void Promise.resolve()\n .then(() => monitoringHistory.query({ ...identity, from: to - HISTORY_RANGES[range] + 1000, to }))\n .then((value) => {\n if (current) {\n setPoints(value);\n setStatus(value.length ? \"\" : \"No local history for this range. Collection starts when enabled.\");\n }\n })\n .catch(() => {\n if (current) setStatus(\"Local history unavailable. Live samples remain visible.\");\n });\n };\n query();\n const timer = window.setInterval(query, 30_000);\n return () => {\n current = false;\n window.clearInterval(timer);\n };\n }, [key, range, enabled]);\n return {\n range,\n setRange,\n samples: mergeHistorySamples(points, liveSamples, Date.now() - HISTORY_RANGES[range]),\n points,\n status,\n };\n}\nexport function MonitoringHistoryRange({\n range,\n onChange,\n native = false,\n status,\n compact = false,\n}: {\n range: HistoryRange;\n onChange: (value: HistoryRange) => void;\n // host [Select] requires injected context unavailable in detached chart roots\n native?: boolean;\n status?: string;\n compact?: boolean;\n}) {\n return (\n <div\n className={compact ? \"power-history-compact\" : undefined}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n gap: 8,\n marginBottom: compact ? 0 : 12,\n }}\n >\n <style>{`\n .power-history-select.Select { min-width: 0; width: 100%; }\n .power-history-select .Select__control { min-height: 32px; }\n .power-history-select .Select__value-container { padding: 6px 10px; }\n .power-history-compact .Select__control { min-height: 26px; height:26px; font-size:12px; }\n .power-history-compact .Select__value-container { padding:4px 8px; }\n .power-history-compact .Select__indicator { padding:3px; }\n .power-history-compact .Select__indicator svg { width:14px;height:14px; }\n `}</style>\n <label\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: 12,\n minHeight: compact ? 26 : 32,\n color: \"var(--textColorSecondary)\",\n }}\n >\n {!compact && \"Period\"}\n <span style={{ width: compact ? 88 : 140, position: \"relative\", display: \"inline-flex\", alignItems: \"center\" }}>\n {native ? (\n <Renderer.Component.Select\n className=\"power-history-select\"\n aria-label=\"History range\"\n value={range}\n options={Object.keys(HISTORY_RANGES).map((value) => ({\n value: value as HistoryRange,\n label: RANGE_LABELS[value as HistoryRange],\n }))}\n onChange={(option) => {\n if (option) onChange(option.value);\n }}\n isClearable={false}\n />\n ) : (\n <ReactSelect\n aria-label=\"History range\"\n className=\"Select power-history-select\"\n classNamePrefix=\"Select\"\n unstyled\n isSearchable={false}\n isClearable={false}\n value={{ value: range, label: RANGE_LABELS[range] }}\n options={Object.keys(HISTORY_RANGES).map((value) => ({\n value: value as HistoryRange,\n label: RANGE_LABELS[value as HistoryRange],\n }))}\n onChange={(option) => {\n if (option) onChange(option.value);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") event.stopPropagation();\n }}\n menuPortalTarget={document.body}\n menuPlacement=\"auto\"\n styles={{\n menuPortal: (base) => ({ ...base, zIndex: 10000 }),\n ...(compact\n ? {\n menu: (base) => ({ ...base, minWidth: 88, width: \"100%\" }),\n menuList: (base) => ({ ...base, padding: 4 }),\n option: (base) => ({\n ...base,\n fontSize: 12,\n lineHeight: \"16px\",\n padding: \"4px 8px\",\n minHeight: 24,\n }),\n }\n : {}),\n }}\n />\n )}\n </span>\n </label>\n {status && (\n <small role=\"status\" style={{ color: \"var(--textColorSecondary)\", lineHeight: 1.4 }}>\n {status}\n </small>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ const require_monitoring_history = require("./src/common/monitoring-history.js");
2
+ let electron = require("electron");
3
+ //#region src/renderer/monitoring-history.ts
4
+ var monitoringHistory = {
5
+ append: (samples) => electron.ipcRenderer.invoke(require_monitoring_history.MONITORING_HISTORY_CHANNEL, {
6
+ operation: "append",
7
+ samples
8
+ }),
9
+ query: (query) => electron.ipcRenderer.invoke(require_monitoring_history.MONITORING_HISTORY_CHANNEL, {
10
+ operation: "query",
11
+ query
12
+ }),
13
+ status: () => electron.ipcRenderer.invoke(require_monitoring_history.MONITORING_HISTORY_CHANNEL, { operation: "status" }),
14
+ clear: () => electron.ipcRenderer.invoke(require_monitoring_history.MONITORING_HISTORY_CHANNEL, { operation: "clear" })
15
+ };
16
+ //#endregion
17
+ exports.monitoringHistory = monitoringHistory;
18
+
19
+ //# sourceMappingURL=monitoring-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring-history.js","names":[],"sources":["../../src/renderer/monitoring-history.ts"],"sourcesContent":["import { ipcRenderer } from \"electron\";\nimport {\n type HistoryPoint,\n type HistoryQuery,\n type HistorySample,\n type HistoryStatus,\n MONITORING_HISTORY_CHANNEL,\n} from \"../common/monitoring-history\";\nexport const monitoringHistory = {\n append: (samples: HistorySample[]): Promise<boolean> =>\n ipcRenderer.invoke(MONITORING_HISTORY_CHANNEL, { operation: \"append\", samples }),\n query: (query: HistoryQuery): Promise<HistoryPoint[]> =>\n ipcRenderer.invoke(MONITORING_HISTORY_CHANNEL, { operation: \"query\", query }),\n status: (): Promise<HistoryStatus> => ipcRenderer.invoke(MONITORING_HISTORY_CHANNEL, { operation: \"status\" }),\n clear: (): Promise<boolean> => ipcRenderer.invoke(MONITORING_HISTORY_CHANNEL, { operation: \"clear\" }),\n};\n"],"mappings":";;;AAQA,IAAa,oBAAoB;CAC/B,SAAS,YACP,SAAA,YAAY,OAAO,2BAAA,4BAA4B;EAAE,WAAW;EAAU;CAAQ,CAAC;CACjF,QAAQ,UACN,SAAA,YAAY,OAAO,2BAAA,4BAA4B;EAAE,WAAW;EAAS;CAAM,CAAC;CAC9E,cAAsC,SAAA,YAAY,OAAO,2BAAA,4BAA4B,EAAE,WAAW,SAAS,CAAC;CAC5G,aAA+B,SAAA,YAAY,OAAO,2BAAA,4BAA4B,EAAE,WAAW,QAAQ,CAAC;AACtG"}