@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
@@ -4,96 +4,11 @@ const require_monitoring_preferences_store = require("./src/common/store/monitor
4
4
  const require__global_external_react = require("./_virtual/_global-external_react.js");
5
5
  const require__global_external_react_dom = require("./_virtual/_global-external_react-dom.js");
6
6
  const require_jsx_runtime = require("./_virtual/_global-external_react/jsx-runtime.js");
7
+ const require_date_time = require("./src/common/date-time.js");
8
+ const require_monitoring_math = require("./src/common/monitoring-math.js");
9
+ const require_monitoring_collector = require("./monitoring-collector.js");
10
+ const require_monitoring_history_view = require("./monitoring-history-view.js");
7
11
  //#region src/renderer/monitoring.tsx
8
- function effectivePodResource(pod, metric, kind) {
9
- const read = (resources) => {
10
- const raw = resources?.[kind]?.[metric];
11
- if (raw !== void 0) return parseQuantity(raw, metric === "memory");
12
- if (kind === "requests" && resources?.limits?.[metric] !== void 0) return parseQuantity(resources.limits[metric], metric === "memory");
13
- return kind === "requests" ? 0 : Infinity;
14
- };
15
- const spec = pod.spec;
16
- if (!spec?.containers?.length) throw new Error("Missing pod containers");
17
- let sidecars = 0;
18
- let initPeak = 0;
19
- for (const container of spec.initContainers ?? []) {
20
- const value = read(container.resources);
21
- if (container.restartPolicy === "Always") {
22
- sidecars += value;
23
- initPeak = Math.max(initPeak, sidecars);
24
- } else initPeak = Math.max(initPeak, sidecars + value);
25
- }
26
- let effective = Math.max(initPeak, sidecars + spec.containers.reduce((sum, container) => sum + read(container.resources), 0));
27
- if (spec.resources?.[kind]?.[metric] !== void 0) effective = read(spec.resources);
28
- const overhead = spec.overhead?.[metric];
29
- if (overhead !== void 0 && (kind === "requests" || effective > 0)) effective += parseQuantity(overhead, metric === "memory");
30
- return effective;
31
- }
32
- function aggregateResources(nodes, pods) {
33
- if (!nodes.length || nodes.some((node) => !node.metadata?.name)) throw new Error("Missing node inventory");
34
- const names = new Set(nodes.map((node) => node.metadata.name));
35
- const scheduled = pods?.filter((pod) => pod.spec?.nodeName && names.has(pod.spec.nodeName) && pod.status?.phase !== "Succeeded" && pod.status?.phase !== "Failed");
36
- const sum = (metric) => {
37
- const capacity = nodes.reduce((total, node) => total + parseQuantity(node.status?.capacity?.[metric] ?? "", metric === "memory"), 0);
38
- const allocatable = nodes.reduce((total, node) => total + parseQuantity(node.status?.allocatable?.[metric] ?? "", metric === "memory"), 0);
39
- const requests = scheduled?.reduce((total, pod) => total + effectivePodResource(pod, metric, "requests"), 0);
40
- const limits = scheduled?.reduce((total, pod) => total + effectivePodResource(pod, metric, "limits"), 0);
41
- return {
42
- capacity,
43
- allocatable,
44
- requests,
45
- limits: limits === Infinity ? void 0 : limits,
46
- unbounded: limits === Infinity
47
- };
48
- };
49
- return {
50
- cpu: sum("cpu"),
51
- memory: sum("memory")
52
- };
53
- }
54
- var INTERVAL = 3e4;
55
- function parseQuantity(raw, memory = false) {
56
- const match = /^(\d+(?:\.\d*)?|\.\d+)([eE][+-]?\d+|n|u|m|Ki|Mi|Gi|Ti|Pi|Ei|k|K|M|G|T|P|E)?$/.exec(raw);
57
- if (!match) throw new Error("Invalid metrics quantity");
58
- const suffix = match[2] ?? "";
59
- const value = Number(match[1]) * (suffix.endsWith("i") ? 1024 ** ([
60
- "Ki",
61
- "Mi",
62
- "Gi",
63
- "Ti",
64
- "Pi",
65
- "Ei"
66
- ].indexOf(suffix) + 1) : /^[eE][+-]?\d+$/.test(suffix) ? 10 ** Number(suffix.slice(1)) : {
67
- n: 1e-9,
68
- u: 1e-6,
69
- m: .001,
70
- k: 1e3,
71
- K: 1e3,
72
- M: 1e6,
73
- G: 1e9,
74
- T: 0xe8d4a51000,
75
- P: 0x38d7ea4c68000,
76
- E: 0xde0b6b3a7640000
77
- }[suffix] ?? 1);
78
- if (!Number.isFinite(value) || !memory && suffix.endsWith("i")) throw new Error("Invalid metrics quantity");
79
- return value;
80
- }
81
- function aggregateMetrics(nodes, now = Date.now()) {
82
- if (!nodes.length) throw new Error("No node metrics available");
83
- let cpu = 0;
84
- let memory = 0;
85
- for (const node of nodes) {
86
- const timestamp = Date.parse(node.timestamp);
87
- if (!Number.isFinite(timestamp) || now - timestamp > 12e4 || timestamp > now + 3e4) throw new Error("Node metrics are stale");
88
- cpu += parseQuantity(node.usage.cpu);
89
- memory += parseQuantity(node.usage.memory, true);
90
- }
91
- return {
92
- time: now,
93
- cpu,
94
- memory
95
- };
96
- }
97
12
  function formatMonitoringTime(time) {
98
13
  return new Date(time).toLocaleTimeString([], {
99
14
  hour: "2-digit",
@@ -123,7 +38,7 @@ function ResourceTitle({ metric, label }) {
123
38
  }), label ?? (metric === "cpu" ? "CPU" : "Memory")]
124
39
  });
125
40
  }
126
- function MetricChart({ metric, samples, status, scope = "node" }) {
41
+ function MetricChart({ metric, samples, status, scope = "node", headerAction }) {
127
42
  const [selectedTime, setSelectedTime] = require__global_external_react.useState();
128
43
  const [pinned, setPinned] = require__global_external_react.useState(false);
129
44
  const previousMetric = require__global_external_react.useRef(metric);
@@ -198,10 +113,10 @@ function MetricChart({ metric, samples, status, scope = "node" }) {
198
113
  value: (sample) => sample.resources?.[metric][key]
199
114
  }))];
200
115
  const visibleSeries = scope === "pod" ? series.filter((line) => line.key === "usage" || line.key === "requests") : series;
201
- const max = Math.max(...samples.flatMap((sample) => visibleSeries.map((line) => line.value(sample) ?? 0)), .001) * 1.1;
116
+ const max = Math.max(...samples.flatMap((sample) => [...visibleSeries.map((line) => line.value(sample) ?? 0), sample.historical?.[metric]?.max ?? 0]), .001) * 1.1;
202
117
  const end = last?.time ?? Date.now();
203
118
  const start = samples[0]?.time ?? end;
204
- const duration = Math.max(end - start, INTERVAL);
119
+ const duration = Math.max(end - start, require_monitoring_math.MONITORING_INTERVAL);
205
120
  const x = (sample) => 88 + (sample.time - start) / duration * plotWidth;
206
121
  const y = (sample) => 208 - sample[metric] / max * 184;
207
122
  const selectNearest = (event) => {
@@ -224,11 +139,19 @@ function MetricChart({ metric, samples, status, scope = "node" }) {
224
139
  position: "relative"
225
140
  },
226
141
  children: [
142
+ headerAction && /* @__PURE__ */ require_jsx_runtime.jsx("div", {
143
+ className: "power-monitoring-period-action",
144
+ children: headerAction
145
+ }),
227
146
  /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
147
+ "data-monitoring-heading": "",
228
148
  style: {
229
149
  display: "flex",
230
150
  alignItems: "center",
231
- gap: 12
151
+ flexWrap: "wrap",
152
+ gap: 12,
153
+ paddingRight: headerAction ? 100 : 0,
154
+ minHeight: headerAction ? 32 : void 0
232
155
  },
233
156
  children: [/* @__PURE__ */ require_jsx_runtime.jsx(ResourceTitle, { metric }), /* @__PURE__ */ require_jsx_runtime.jsx("span", { children: status ? "Unavailable" : last ? format(last[metric]) : "Collecting…" })]
234
157
  }),
@@ -298,25 +221,66 @@ function MetricChart({ metric, samples, status, scope = "node" }) {
298
221
  fontSize: "11",
299
222
  children: format(max * fraction)
300
223
  })] }, fraction)),
301
- visibleSeries.map((line) => /* @__PURE__ */ require_jsx_runtime.jsx("path", {
302
- "data-monitoring-series": line.key,
303
- d: samples.reduce((path, sample, index) => {
224
+ samples.map((sample) => {
225
+ const summary = sample.historical?.[metric];
226
+ if (!summary || summary.min === summary.max) return null;
227
+ return /* @__PURE__ */ require_jsx_runtime.jsx("line", {
228
+ "data-monitoring-extrema": "",
229
+ x1: x(sample),
230
+ x2: x(sample),
231
+ y1: 208 - summary.max / max * 184,
232
+ y2: 208 - summary.min / max * 184,
233
+ stroke: "#c93dce",
234
+ strokeOpacity: .35,
235
+ strokeWidth: 4
236
+ }, `range:${sample.time}`);
237
+ }),
238
+ visibleSeries.map((line) => {
239
+ let path = "";
240
+ let gaps = "";
241
+ let previous;
242
+ let interrupted = false;
243
+ for (const sample of samples) {
304
244
  const value = line.value(sample);
305
- if (value === void 0) return path;
306
- return `${path} ${(index ? line.value(samples[index - 1]) : void 0) === void 0 ? "M" : "L"}${x(sample)},${208 - value / max * 184}`;
307
- }, ""),
308
- fill: "none",
309
- stroke: line.color,
310
- strokeWidth: "2",
311
- strokeDasharray: line.key === "capacity" || line.key === "allocatable" ? "5 3" : void 0
312
- }, line.key)),
245
+ if (value === void 0 || !Number.isFinite(value)) {
246
+ interrupted = true;
247
+ continue;
248
+ }
249
+ const point = `${x(sample)},${208 - value / max * 184}`;
250
+ const gap = previous && (interrupted || sample.breakBefore || sample.time - previous.sample.time > 1.8 * Math.max(sample.historical?.[metric]?.resolution ?? 3e4, previous.sample.historical?.[metric]?.resolution ?? 3e4));
251
+ path += ` ${!previous || gap ? "M" : "L"}${point}`;
252
+ if (previous && gap) gaps += ` M${previous.point} L${point}`;
253
+ previous = {
254
+ sample,
255
+ point
256
+ };
257
+ interrupted = false;
258
+ }
259
+ return /* @__PURE__ */ require_jsx_runtime.jsxs("g", { children: [/* @__PURE__ */ require_jsx_runtime.jsx("path", {
260
+ "data-monitoring-series": line.key,
261
+ d: path,
262
+ fill: "none",
263
+ stroke: line.color,
264
+ strokeWidth: "2",
265
+ strokeDasharray: line.key === "capacity" || line.key === "allocatable" ? "5 3" : void 0
266
+ }), gaps && /* @__PURE__ */ require_jsx_runtime.jsx("path", {
267
+ "data-monitoring-gap": line.key,
268
+ d: gaps,
269
+ fill: "none",
270
+ stroke: line.color,
271
+ strokeWidth: "2",
272
+ strokeDasharray: "3 4",
273
+ opacity: ".65",
274
+ children: /* @__PURE__ */ require_jsx_runtime.jsx("title", { children: "Dashed connections span missing measurements; intermediate values are unknown" })
275
+ })] }, line.key);
276
+ }),
313
277
  samples.map((sample) => /* @__PURE__ */ require_jsx_runtime.jsx("circle", {
314
278
  cx: x(sample),
315
279
  cy: y(sample),
316
280
  r: "2",
317
281
  fill: "currentColor",
318
282
  children: /* @__PURE__ */ require_jsx_runtime.jsxs("title", { children: [
319
- formatMonitoringTime(sample.time),
283
+ require_date_time.formatDateTime(sample.time),
320
284
  ": ",
321
285
  format(sample[metric])
322
286
  ] })
@@ -362,7 +326,10 @@ function MetricChart({ metric, samples, status, scope = "node" }) {
362
326
  pointerEvents: "none"
363
327
  },
364
328
  children: [
365
- /* @__PURE__ */ require_jsx_runtime.jsxs("div", { children: [formatMonitoringTime(selected.time), pinned ? " · Pinned" : ""] }),
329
+ /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
330
+ style: { whiteSpace: "pre-wrap" },
331
+ children: [require_date_time.formatDateTime(selected.time), pinned ? " · Pinned" : ""]
332
+ }),
366
333
  visibleSeries.map((line) => /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
367
334
  style: { color: line.color },
368
335
  children: [
@@ -371,6 +338,18 @@ function MetricChart({ metric, samples, status, scope = "node" }) {
371
338
  line.value(selected) === void 0 ? "Unavailable" : format(line.value(selected))
372
339
  ]
373
340
  }, line.key)),
341
+ selected.historical?.[metric] && /* @__PURE__ */ require_jsx_runtime.jsxs("div", { children: [
342
+ "Min: ",
343
+ format(selected.historical[metric].min),
344
+ " · Max: ",
345
+ format(selected.historical[metric].max),
346
+ /* @__PURE__ */ require_jsx_runtime.jsx("br", {}),
347
+ selected.historical[metric].count,
348
+ " samples ·",
349
+ " ",
350
+ Math.round(selected.historical[metric].resolution / 1e3),
351
+ "s bucket"
352
+ ] }),
374
353
  /* @__PURE__ */ require_jsx_runtime.jsx("div", {
375
354
  style: {
376
355
  color: "var(--textColorSecondary)",
@@ -617,11 +596,19 @@ function ResourceDonut({ metric, sample, status }) {
617
596
  });
618
597
  }
619
598
  function MonitoringCharts({ samples, status }) {
599
+ const clusterId = require_extensions.Renderer.Catalog.activeCluster.get()?.metadata.uid;
600
+ const history = require_monitoring_history_view.useMonitoringHistory(clusterId ? {
601
+ clusterId,
602
+ scope: "cluster",
603
+ uid: clusterId
604
+ } : void 0, samples);
620
605
  return /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
621
606
  style: { containerType: "inline-size" },
622
- children: [/* @__PURE__ */ require_jsx_runtime.jsx("style", { children: `
607
+ children: [
608
+ /* @__PURE__ */ require_jsx_runtime.jsx("style", { children: `
623
609
  [data-monitoring-layout] { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr); gap:16px; align-items:stretch }
624
610
  [data-monitoring-trends], [data-monitoring-summaries] { display:contents }
611
+ .power-monitoring-period-action { position:absolute;right:16px;top:19px }
625
612
  @container (min-width: 961px) {
626
613
  [data-monitoring-summaries] > section { --power-monitoring-summary-top:16px }
627
614
  }
@@ -631,29 +618,48 @@ function MonitoringCharts({ samples, status }) {
631
618
  }
632
619
  @container (max-width: 580px) {
633
620
  [data-monitoring-layout] { grid-template-columns:minmax(0,1fr) }
621
+ .power-monitoring-period-action { left:16px;right:auto;top:15px }
622
+ [data-monitoring-trends] > section:first-child { --power-monitoring-trend-top:56px }
634
623
  .power-ai-overview-actions + [data-testid="cluster-overview-page"] [data-monitoring-trends] > section:not(:first-child) { --power-monitoring-trend-top:16px }
635
624
  }
636
- ` }), /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
637
- "data-monitoring-layout": "",
638
- children: [/* @__PURE__ */ require_jsx_runtime.jsx("div", {
639
- "data-monitoring-trends": "",
640
- children: ["cpu", "memory"].map((metric) => /* @__PURE__ */ require_jsx_runtime.jsx(MetricChart, {
641
- metric,
642
- samples,
643
- status
644
- }, metric))
645
- }), /* @__PURE__ */ require_jsx_runtime.jsx("div", {
646
- "data-monitoring-summaries": "",
647
- children: ["cpu", "memory"].map((metric) => /* @__PURE__ */ require_jsx_runtime.jsx(ResourceDonut, {
648
- metric,
649
- sample: samples.at(-1),
650
- status
651
- }, metric))
652
- })]
653
- })]
625
+ ` }),
626
+ history.status && /* @__PURE__ */ require_jsx_runtime.jsx("small", {
627
+ role: "status",
628
+ style: {
629
+ display: "block",
630
+ color: "var(--textColorSecondary)",
631
+ marginBottom: 8
632
+ },
633
+ children: history.status
634
+ }),
635
+ /* @__PURE__ */ require_jsx_runtime.jsxs("div", {
636
+ "data-monitoring-layout": "",
637
+ children: [/* @__PURE__ */ require_jsx_runtime.jsx("div", {
638
+ "data-monitoring-trends": "",
639
+ children: ["cpu", "memory"].map((metric) => /* @__PURE__ */ require_jsx_runtime.jsx(MetricChart, {
640
+ metric,
641
+ samples: history.samples,
642
+ status,
643
+ headerAction: metric === "cpu" ? /* @__PURE__ */ require_jsx_runtime.jsx(require_monitoring_history_view.MonitoringHistoryRange, {
644
+ compact: true,
645
+ range: history.range,
646
+ onChange: history.setRange
647
+ }) : void 0
648
+ }, metric))
649
+ }), /* @__PURE__ */ require_jsx_runtime.jsx("div", {
650
+ "data-monitoring-summaries": "",
651
+ children: ["cpu", "memory"].map((metric) => /* @__PURE__ */ require_jsx_runtime.jsx(ResourceDonut, {
652
+ metric,
653
+ sample: samples.at(-1),
654
+ status
655
+ }, metric))
656
+ })]
657
+ })
658
+ ]
654
659
  });
655
660
  }
656
661
  function startMonitoring() {
662
+ const release = require_monitoring_collector.retainMonitoringCollector();
657
663
  const preferences = require_monitoring_preferences_store.MonitoringPreferencesStore.getInstanceOrCreate();
658
664
  let stopCurrent;
659
665
  const stop = require__global_external_mobx.reaction(() => preferences.enabled, (enabled) => {
@@ -663,6 +669,7 @@ function startMonitoring() {
663
669
  return () => {
664
670
  stop();
665
671
  stopCurrent?.();
672
+ release();
666
673
  };
667
674
  }
668
675
  function mountMonitoring() {
@@ -713,7 +720,7 @@ function mountMonitoring() {
713
720
  cluster = currentCluster;
714
721
  overview = currentOverview;
715
722
  }
716
- const cutoff = Date.now() - 60 * INTERVAL;
723
+ const cutoff = Date.now() - 60 * require_monitoring_math.MONITORING_INTERVAL;
717
724
  if (samples.length && samples[0].time < cutoff) samples = samples.filter((sample) => sample.time >= cutoff);
718
725
  if (!overview || !cluster || document.visibilityState === "hidden") return;
719
726
  if (!host) {
@@ -761,21 +768,30 @@ function mountMonitoring() {
761
768
  render();
762
769
  if (pendingGeneration === generation || Date.now() < nextSample) return;
763
770
  pendingGeneration = generation;
764
- nextSample = Date.now() + INTERVAL;
771
+ nextSample = Date.now() + require_monitoring_math.MONITORING_INTERVAL;
765
772
  const requestGeneration = generation;
766
773
  const isCurrent = () => !stopped && requestGeneration === generation && document.visibilityState !== "hidden" && overview?.isConnected === true && require_extensions.Renderer.Catalog.activeCluster.get()?.metadata.uid === cluster;
767
774
  try {
768
- const [metrics, inventory, pods] = await Promise.allSettled([
769
- require_extensions.Renderer.K8sApi.nodesMetricsApi.list(),
770
- Promise.resolve().then(() => require_extensions.Renderer.K8sApi.nodesApi.list()),
771
- Promise.resolve().then(() => require_extensions.Renderer.K8sApi.podsApi.list())
772
- ]);
775
+ const collected = await require_monitoring_collector.getMonitoringSnapshot();
776
+ const metrics = collected.nodeMetrics === void 0 ? { status: "rejected" } : {
777
+ status: "fulfilled",
778
+ value: collected.nodeMetrics
779
+ };
780
+ const inventory = collected.nodes === void 0 ? { status: "rejected" } : {
781
+ status: "fulfilled",
782
+ value: collected.nodes
783
+ };
784
+ const pods = collected.pods === void 0 ? { status: "rejected" } : {
785
+ status: "fulfilled",
786
+ value: collected.pods
787
+ };
773
788
  if (!isCurrent()) return;
774
789
  if (metrics.status !== "fulfilled") throw new Error("Metrics unavailable");
775
- const sample = aggregateMetrics(metrics.value ?? []);
790
+ const sample = require_monitoring_math.aggregateMetrics(metrics.value ?? []);
791
+ sample.time = Math.min(...metrics.value.map((item) => Date.parse(item.timestamp)));
776
792
  const warnings = [];
777
793
  if (inventory.status === "fulfilled") try {
778
- sample.resources = aggregateResources(inventory.value ?? [], pods.status === "fulfilled" ? pods.value ?? void 0 : void 0);
794
+ sample.resources = require_monitoring_math.aggregateResources(inventory.value ?? [], pods.status === "fulfilled" ? pods.value ?? void 0 : void 0);
779
795
  const expected = new Set((inventory.value ?? []).map((node) => node.metadata.name));
780
796
  const observed = new Set((metrics.value ?? []).map((node) => node.metadata.name));
781
797
  sample.completeUsage = expected.size > 0 && expected.size === observed.size && [...expected].every((name) => observed.has(name));
@@ -786,7 +802,7 @@ function mountMonitoring() {
786
802
  else warnings.push("Node inventory unavailable or access denied; usage coverage unverified, capacity unavailable");
787
803
  if (pods.status !== "fulfilled") warnings.push("Cluster-wide Pods unavailable or access denied; requests unavailable");
788
804
  sample.resourceStatus = warnings.join(". ");
789
- samples = [...samples, sample].slice(-60);
805
+ samples = [...samples.filter((entry) => entry.time !== sample.time), sample].sort((a, b) => a.time - b.time).slice(-60);
790
806
  status = "";
791
807
  } catch {
792
808
  if (!isCurrent()) return;
@@ -819,11 +835,9 @@ function mountMonitoring() {
819
835
  }
820
836
  //#endregion
821
837
  exports.MetricChart = MetricChart;
822
- exports.aggregateMetrics = aggregateMetrics;
823
- exports.aggregateResources = aggregateResources;
824
- exports.effectivePodResource = effectivePodResource;
838
+ exports.effectivePodResource = require_monitoring_math.effectivePodResource;
825
839
  exports.formatMonitoringTime = formatMonitoringTime;
826
- exports.parseQuantity = parseQuantity;
840
+ exports.parseQuantity = require_monitoring_math.parseQuantity;
827
841
  exports.startMonitoring = startMonitoring;
828
842
 
829
843
  //# sourceMappingURL=monitoring.js.map