@oneuptime/common 11.7.2 → 11.7.4

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 (414) hide show
  1. package/Models/AnalyticsModels/KubernetesCostAllocation.ts +103 -0
  2. package/Models/DatabaseModels/AlertEpisodeStateTimeline.ts +1 -0
  3. package/Models/DatabaseModels/AlertStateTimeline.ts +1 -0
  4. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +1 -0
  5. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
  6. package/Models/DatabaseModels/Index.ts +5 -0
  7. package/Models/DatabaseModels/LogDropFilter.ts +89 -0
  8. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +13 -3
  9. package/Models/DatabaseModels/RecommendationDismissal.ts +463 -0
  10. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +1 -0
  11. package/Models/DatabaseModels/StatusPageGroup.ts +95 -0
  12. package/Models/DatabaseModels/TableView.ts +40 -0
  13. package/Models/DatabaseModels/TraceDropFilter.ts +89 -0
  14. package/Models/DatabaseModels/WorkflowVariable.ts +5 -1
  15. package/Server/API/AlertAPI.ts +32 -17
  16. package/Server/API/BaseAPI.ts +31 -2
  17. package/Server/API/BaseAnalyticsAPI.ts +36 -2
  18. package/Server/API/CommonAPI.ts +57 -0
  19. package/Server/API/IncidentAPI.ts +60 -33
  20. package/Server/API/IncidentEpisodeAPI.ts +31 -16
  21. package/Server/API/MonitorAPI.ts +30 -0
  22. package/Server/API/MonitorTemplateAPI.ts +8 -0
  23. package/Server/API/ProbeAPI.ts +196 -15
  24. package/Server/API/ProjectAPI.ts +79 -1
  25. package/Server/API/ScheduledMaintenanceAPI.ts +33 -18
  26. package/Server/API/StatusPageAPI.ts +74 -37
  27. package/Server/API/WorkspaceNotificationRuleAPI.ts +34 -4
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.ts +13 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.ts +527 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.ts +31 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.ts +55 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.ts +53 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  34. package/Server/Services/AlertEpisodeService.ts +47 -0
  35. package/Server/Services/AlertService.ts +125 -0
  36. package/Server/Services/BillingService.ts +98 -0
  37. package/Server/Services/DatabaseService.ts +184 -20
  38. package/Server/Services/IncidentEpisodeService.ts +47 -0
  39. package/Server/Services/IncidentService.ts +123 -0
  40. package/Server/Services/IncidentTemplateService.ts +123 -1
  41. package/Server/Services/Index.ts +2 -0
  42. package/Server/Services/LogDropFilterService.ts +133 -0
  43. package/Server/Services/MonitorProbeService.ts +94 -4
  44. package/Server/Services/MonitorService.ts +48 -43
  45. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +70 -0
  46. package/Server/Services/ProbeService.ts +66 -0
  47. package/Server/Services/ProjectService.ts +131 -7
  48. package/Server/Services/RecommendationDismissalService.ts +52 -0
  49. package/Server/Services/RunbookAgentJobService.ts +68 -7
  50. package/Server/Services/ScheduledMaintenanceService.ts +103 -0
  51. package/Server/Services/ScheduledMaintenanceTemplateService.ts +90 -0
  52. package/Server/Services/StatusPageGroupService.ts +186 -0
  53. package/Server/Services/TraceDropFilterService.ts +133 -0
  54. package/Server/Types/Workflow/Components/API/Delete.ts +12 -0
  55. package/Server/Types/Workflow/Components/API/Get.ts +12 -0
  56. package/Server/Types/Workflow/Components/API/Patch.ts +12 -0
  57. package/Server/Types/Workflow/Components/API/Post.ts +12 -0
  58. package/Server/Types/Workflow/Components/API/Put.ts +13 -0
  59. package/Server/Utils/Database/ProjectScopedReferenceValidator.ts +212 -0
  60. package/Server/Utils/DropFilterValidation.ts +127 -0
  61. package/Server/Utils/Errors.ts +5 -0
  62. package/Server/Utils/Monitor/MonitorAlert.ts +28 -1
  63. package/Server/Utils/Monitor/MonitorIncident.ts +31 -2
  64. package/Server/Utils/Telemetry/AppMetrics.ts +31 -0
  65. package/Tests/Models/AnalyticsModels/KubernetesCostAllocation.test.ts +16 -0
  66. package/Tests/Models/DatabaseModels/MonitorProbeColumnAccessControl.test.ts +196 -0
  67. package/Tests/Models/RecommendationDismissalModel.test.ts +269 -0
  68. package/Tests/Server/API/BaseAPIUpdatePayloadValidation.test.ts +320 -0
  69. package/Tests/Server/API/BaseAnalyticsAPIUpdatePayloadValidation.test.ts +293 -0
  70. package/Tests/Server/API/CommonAPIAuthGuard.test.ts +164 -0
  71. package/Tests/Server/API/ProbeAPI.test.ts +422 -53
  72. package/Tests/Server/API/ProjectAPI.test.ts +180 -0
  73. package/Tests/Server/API/ProjectAPIExtendTrialBillingDisabled.test.ts +138 -0
  74. package/Tests/Server/API/ProjectScopedCustomRouteAuth.test.ts +458 -0
  75. package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +359 -0
  76. package/Tests/Server/Infrastructure/ProcessSignalDelivery.test.ts +427 -0
  77. package/Tests/Server/Services/BillingServiceExtendTrial.test.ts +439 -0
  78. package/Tests/Server/Services/CrossProjectReferenceWriteGuard.test.ts +810 -0
  79. package/Tests/Server/Services/DatabaseServiceAtomicAddToColumns.test.ts +269 -0
  80. package/Tests/Server/Services/DatabaseServiceEmptyUpdate.test.ts +277 -0
  81. package/Tests/Server/Services/DatabaseServiceSortColumnSelect.test.ts +201 -0
  82. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +81 -23
  83. package/Tests/Server/Services/DropFilterSaveValidation.test.ts +398 -0
  84. package/Tests/Server/Services/MonitorProbeDeleteHooks.test.ts +280 -0
  85. package/Tests/Server/Services/MonitorProbeServiceProbeTenancy.test.ts +304 -0
  86. package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +262 -0
  87. package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +614 -0
  88. package/Tests/Server/Services/RecommendationDismissalService.test.ts +306 -0
  89. package/Tests/Server/Services/RepairCrossProjectIncidentReferencesMigration.test.ts +528 -0
  90. package/Tests/Server/Services/StatusPageGroupNesting.test.ts +395 -0
  91. package/Tests/Server/TestingUtils/Services/BillingServiceHelper.ts +26 -21
  92. package/Tests/Server/Types/Database/Permissions/WorkflowVariableColumnPermission.test.ts +227 -0
  93. package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +285 -0
  94. package/Tests/Server/Utils/Database/ProjectScopedReferenceValidator.test.ts +463 -0
  95. package/Tests/Server/Utils/DropFilterValidation.test.ts +269 -0
  96. package/Tests/Server/Utils/Telemetry/SpanUtil.test.ts +94 -0
  97. package/Tests/Types/DateUserTimezone.test.ts +52 -0
  98. package/Tests/Types/JSONFunctions.test.ts +103 -1
  99. package/Tests/Types/Monitor/KubernetesAlertTemplates.test.ts +177 -9
  100. package/Tests/Types/Monitor/MonitorStepDnsMonitor.test.ts +105 -0
  101. package/Tests/Types/Monitor/MonitorStepDnssecMonitor.test.ts +131 -0
  102. package/Tests/Types/Monitor/MonitorStepDomainMonitor.test.ts +60 -0
  103. package/Tests/Types/Monitor/MonitorStepExternalStatusPageMonitor.test.ts +82 -0
  104. package/Tests/Types/Monitor/MonitorStepInfrastructureMonitors.test.ts +268 -0
  105. package/Tests/Types/Monitor/MonitorStepMetricMonitor.test.ts +386 -0
  106. package/Tests/Types/Monitor/MonitorStepProfileMonitor.test.ts +185 -0
  107. package/Tests/Types/Monitor/MonitorStepSnmpMonitor.test.ts +156 -0
  108. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +371 -0
  109. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +901 -0
  110. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +607 -0
  111. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +754 -0
  112. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +960 -0
  113. package/Tests/Types/RollingTime/RollingTimeUtil.test.ts +186 -0
  114. package/Tests/Types/Runbook/RunbookStepTimeout.test.ts +410 -0
  115. package/Tests/Types/Telemetry/DropFilterSampling.test.ts +241 -0
  116. package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +353 -0
  117. package/Tests/Types/Workspace/NotificationRuleUtil.test.ts +566 -0
  118. package/Tests/UI/Components/CodeEditor.test.tsx +174 -0
  119. package/Tests/UI/Components/ErrorBoundary.test.tsx +555 -24
  120. package/Tests/UI/Components/InfoCard.test.tsx +358 -0
  121. package/Tests/UI/Components/LogTimeRangePicker.test.tsx +138 -0
  122. package/Tests/UI/Components/Modal.test.tsx +43 -5
  123. package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +679 -0
  124. package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +397 -0
  125. package/Tests/UI/Components/ModelTable/ColumnCustomizationModal.test.tsx +999 -0
  126. package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +1678 -0
  127. package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1094 -0
  128. package/Tests/UI/Components/Runbook/StepTimeoutInput.test.tsx +386 -0
  129. package/Tests/UI/Components/StatusPage/ResourceGroupSection.test.tsx +671 -0
  130. package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +404 -0
  131. package/Tests/UI/Utils/DropdownAlignment.test.ts +306 -0
  132. package/Tests/UI/Utils/TableFilterUrlState.test.ts +292 -0
  133. package/Tests/Utils/Monitor/MonitorSummaryProbeUtil.test.ts +263 -0
  134. package/Tests/Utils/NetworkDiscovery/ScanTargetUtil.test.ts +583 -0
  135. package/Tests/Utils/StatusPage/GroupNestingLayout.test.ts +1072 -0
  136. package/Tests/Utils/StatusPage/GroupTree.test.ts +583 -0
  137. package/Tests/Utils/StatusPage/ResourceUptime.test.ts +411 -0
  138. package/Tests/Utils/UserPreferences.test.ts +563 -0
  139. package/Types/Date.ts +15 -6
  140. package/Types/JSONFunctions.ts +7 -2
  141. package/Types/Kubernetes/KubernetesCostIngest.ts +37 -1
  142. package/Types/Monitor/KubernetesAlertTemplates.ts +205 -0
  143. package/Types/Monitor/MonitorStep.ts +10 -1
  144. package/Types/Monitor/MonitorStepMetricMonitor.ts +46 -1
  145. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +413 -0
  146. package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +168 -0
  147. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +175 -0
  148. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +743 -0
  149. package/Types/Permission.ts +45 -0
  150. package/Types/Recommendation/RecommendationType.ts +20 -0
  151. package/Types/Runbook/RunbookExecutionDeadline.ts +129 -0
  152. package/Types/Runbook/RunbookStepTimeout.ts +202 -0
  153. package/Types/Telemetry/DropFilterSampling.ts +92 -0
  154. package/UI/Components/AI/GenerateFromAIModal.tsx +0 -2
  155. package/UI/Components/Accordion/Accordion.tsx +10 -2
  156. package/UI/Components/BulkUpdate/BulkLabelActions.tsx +0 -1
  157. package/UI/Components/CodeEditor/CodeEditor.tsx +34 -20
  158. package/UI/Components/Date/RangeStartAndEndDateView.tsx +0 -1
  159. package/UI/Components/EditionLabel/EditionLabel.tsx +1 -27
  160. package/UI/Components/Error/PageError.tsx +0 -4
  161. package/UI/Components/ErrorBoundary.tsx +252 -15
  162. package/UI/Components/InfoCard/InfoCard.tsx +58 -1
  163. package/UI/Components/LogsViewer/components/LogTimeRangePicker.tsx +34 -1
  164. package/UI/Components/MasterPage/MasterPage.tsx +65 -0
  165. package/UI/Components/Modal/Modal.tsx +16 -60
  166. package/UI/Components/ModelFormModal/ModelFormModal.tsx +0 -8
  167. package/UI/Components/ModelTable/BaseModelTable.tsx +503 -71
  168. package/UI/Components/ModelTable/Column.ts +17 -0
  169. package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +523 -0
  170. package/UI/Components/ModelTable/ColumnPreference.ts +482 -0
  171. package/UI/Components/ModelTable/CustomFieldColumns.tsx +326 -0
  172. package/UI/Components/ModelTable/TableView.tsx +24 -2
  173. package/UI/Components/ModelTable/useCustomFieldColumns.ts +150 -0
  174. package/UI/Components/Runbook/StepTimeoutInput.tsx +173 -0
  175. package/UI/Components/SideMenu/SideMenu.tsx +24 -4
  176. package/UI/Components/StatusPage/ResourceGroupSection.tsx +231 -0
  177. package/UI/Components/Table/Table.tsx +14 -1
  178. package/UI/Components/Table/TableRow.tsx +180 -175
  179. package/UI/Components/Table/Types/Column.ts +2 -0
  180. package/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.tsx +34 -1
  181. package/UI/Utils/DropdownAlignment.ts +162 -0
  182. package/UI/Utils/TableFilterUrlState.ts +59 -20
  183. package/Utils/API.ts +106 -2
  184. package/Utils/Monitor/MonitorSummaryProbeUtil.ts +130 -0
  185. package/Utils/NetworkDiscovery/ScanTargetUtil.ts +434 -0
  186. package/Utils/StatusPage/GroupNestingLayout.ts +343 -0
  187. package/Utils/StatusPage/GroupTree.ts +307 -0
  188. package/Utils/StatusPage/ResourceUptime.ts +90 -17
  189. package/Utils/UserPreferences.ts +53 -0
  190. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js +86 -0
  191. package/build/dist/Models/AnalyticsModels/KubernetesCostAllocation.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js +1 -0
  193. package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js.map +1 -1
  194. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +1 -0
  195. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
  196. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +1 -0
  197. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
  198. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
  199. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  200. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  201. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  202. package/build/dist/Models/DatabaseModels/LogDropFilter.js +91 -0
  203. package/build/dist/Models/DatabaseModels/LogDropFilter.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +14 -4
  205. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  206. package/build/dist/Models/DatabaseModels/RecommendationDismissal.js +484 -0
  207. package/build/dist/Models/DatabaseModels/RecommendationDismissal.js.map +1 -0
  208. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +1 -0
  209. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  210. package/build/dist/Models/DatabaseModels/StatusPageGroup.js +94 -0
  211. package/build/dist/Models/DatabaseModels/StatusPageGroup.js.map +1 -1
  212. package/build/dist/Models/DatabaseModels/TableView.js +40 -0
  213. package/build/dist/Models/DatabaseModels/TableView.js.map +1 -1
  214. package/build/dist/Models/DatabaseModels/TraceDropFilter.js +91 -0
  215. package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -1
  216. package/build/dist/Models/DatabaseModels/WorkflowVariable.js +5 -1
  217. package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
  218. package/build/dist/Server/API/AlertAPI.js +22 -13
  219. package/build/dist/Server/API/AlertAPI.js.map +1 -1
  220. package/build/dist/Server/API/BaseAPI.js +22 -1
  221. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  222. package/build/dist/Server/API/BaseAnalyticsAPI.js +24 -1
  223. package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
  224. package/build/dist/Server/API/CommonAPI.js +42 -0
  225. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  226. package/build/dist/Server/API/IncidentAPI.js +43 -26
  227. package/build/dist/Server/API/IncidentAPI.js.map +1 -1
  228. package/build/dist/Server/API/IncidentEpisodeAPI.js +21 -12
  229. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
  230. package/build/dist/Server/API/MonitorAPI.js +23 -0
  231. package/build/dist/Server/API/MonitorAPI.js.map +1 -1
  232. package/build/dist/Server/API/MonitorTemplateAPI.js +4 -0
  233. package/build/dist/Server/API/MonitorTemplateAPI.js.map +1 -1
  234. package/build/dist/Server/API/ProbeAPI.js +131 -15
  235. package/build/dist/Server/API/ProbeAPI.js.map +1 -1
  236. package/build/dist/Server/API/ProjectAPI.js +62 -3
  237. package/build/dist/Server/API/ProjectAPI.js.map +1 -1
  238. package/build/dist/Server/API/ScheduledMaintenanceAPI.js +23 -14
  239. package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
  240. package/build/dist/Server/API/StatusPageAPI.js +61 -33
  241. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  242. package/build/dist/Server/API/WorkspaceNotificationRuleAPI.js +26 -2
  243. package/build/dist/Server/API/WorkspaceNotificationRuleAPI.js.map +1 -1
  244. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js +12 -0
  245. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785241000000-AddColumnsToTableView.js.map +1 -0
  246. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.js +397 -0
  247. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785320000000-RepairCrossProjectIncidentReferences.js.map +1 -0
  248. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.js +16 -0
  249. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785329453269-AddParentGroupToStatusPageGroup.js.map +1 -0
  250. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.js +30 -0
  251. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785397674289-AddRecommendationDismissalTable.js.map +1 -0
  252. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.js +34 -0
  253. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1785405581596-AddDroppedCountersToDropFilters.js.map +1 -0
  254. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  255. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  256. package/build/dist/Server/Services/AlertEpisodeService.js +39 -0
  257. package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
  258. package/build/dist/Server/Services/AlertService.js +95 -0
  259. package/build/dist/Server/Services/AlertService.js.map +1 -1
  260. package/build/dist/Server/Services/BillingService.js +71 -0
  261. package/build/dist/Server/Services/BillingService.js.map +1 -1
  262. package/build/dist/Server/Services/DatabaseService.js +140 -17
  263. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  264. package/build/dist/Server/Services/IncidentEpisodeService.js +39 -0
  265. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  266. package/build/dist/Server/Services/IncidentService.js +100 -0
  267. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  268. package/build/dist/Server/Services/IncidentTemplateService.js +97 -0
  269. package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
  270. package/build/dist/Server/Services/Index.js +2 -0
  271. package/build/dist/Server/Services/Index.js.map +1 -1
  272. package/build/dist/Server/Services/LogDropFilterService.js +93 -0
  273. package/build/dist/Server/Services/LogDropFilterService.js.map +1 -1
  274. package/build/dist/Server/Services/MonitorProbeService.js +73 -5
  275. package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
  276. package/build/dist/Server/Services/MonitorService.js +34 -39
  277. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  278. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +71 -0
  279. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  280. package/build/dist/Server/Services/ProbeService.js +64 -0
  281. package/build/dist/Server/Services/ProbeService.js.map +1 -1
  282. package/build/dist/Server/Services/ProjectService.js +103 -7
  283. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  284. package/build/dist/Server/Services/RecommendationDismissalService.js +50 -0
  285. package/build/dist/Server/Services/RecommendationDismissalService.js.map +1 -0
  286. package/build/dist/Server/Services/RunbookAgentJobService.js +63 -5
  287. package/build/dist/Server/Services/RunbookAgentJobService.js.map +1 -1
  288. package/build/dist/Server/Services/ScheduledMaintenanceService.js +83 -0
  289. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  290. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js +65 -0
  291. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js.map +1 -1
  292. package/build/dist/Server/Services/StatusPageGroupService.js +136 -0
  293. package/build/dist/Server/Services/StatusPageGroupService.js.map +1 -1
  294. package/build/dist/Server/Services/TraceDropFilterService.js +93 -0
  295. package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -1
  296. package/build/dist/Server/Types/Workflow/Components/API/Delete.js +11 -0
  297. package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
  298. package/build/dist/Server/Types/Workflow/Components/API/Get.js +11 -0
  299. package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
  300. package/build/dist/Server/Types/Workflow/Components/API/Patch.js +11 -0
  301. package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
  302. package/build/dist/Server/Types/Workflow/Components/API/Post.js +11 -0
  303. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  304. package/build/dist/Server/Types/Workflow/Components/API/Put.js +12 -0
  305. package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
  306. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js +132 -0
  307. package/build/dist/Server/Utils/Database/ProjectScopedReferenceValidator.js.map +1 -0
  308. package/build/dist/Server/Utils/DropFilterValidation.js +80 -0
  309. package/build/dist/Server/Utils/DropFilterValidation.js.map +1 -0
  310. package/build/dist/Server/Utils/Errors.js +3 -0
  311. package/build/dist/Server/Utils/Errors.js.map +1 -1
  312. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +30 -12
  313. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  314. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +38 -18
  315. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  316. package/build/dist/Server/Utils/Telemetry/AppMetrics.js +26 -0
  317. package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
  318. package/build/dist/Types/Date.js +14 -4
  319. package/build/dist/Types/Date.js.map +1 -1
  320. package/build/dist/Types/JSONFunctions.js +8 -3
  321. package/build/dist/Types/JSONFunctions.js.map +1 -1
  322. package/build/dist/Types/Kubernetes/KubernetesCostIngest.js.map +1 -1
  323. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +192 -0
  324. package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
  325. package/build/dist/Types/Monitor/MonitorStep.js +6 -1
  326. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  327. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js +32 -1
  328. package/build/dist/Types/Monitor/MonitorStepMetricMonitor.js.map +1 -1
  329. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +294 -0
  330. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -0
  331. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +110 -0
  332. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -0
  333. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +58 -0
  334. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -0
  335. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +451 -0
  336. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -0
  337. package/build/dist/Types/Permission.js +40 -0
  338. package/build/dist/Types/Permission.js.map +1 -1
  339. package/build/dist/Types/Recommendation/RecommendationType.js +21 -0
  340. package/build/dist/Types/Recommendation/RecommendationType.js.map +1 -0
  341. package/build/dist/Types/Runbook/RunbookExecutionDeadline.js +93 -0
  342. package/build/dist/Types/Runbook/RunbookExecutionDeadline.js.map +1 -0
  343. package/build/dist/Types/Runbook/RunbookStepTimeout.js +142 -0
  344. package/build/dist/Types/Runbook/RunbookStepTimeout.js.map +1 -0
  345. package/build/dist/Types/Telemetry/DropFilterSampling.js +75 -0
  346. package/build/dist/Types/Telemetry/DropFilterSampling.js.map +1 -0
  347. package/build/dist/UI/Components/AI/GenerateFromAIModal.js +1 -2
  348. package/build/dist/UI/Components/AI/GenerateFromAIModal.js.map +1 -1
  349. package/build/dist/UI/Components/Accordion/Accordion.js +9 -2
  350. package/build/dist/UI/Components/Accordion/Accordion.js.map +1 -1
  351. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +1 -1
  352. package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
  353. package/build/dist/UI/Components/CodeEditor/CodeEditor.js +27 -14
  354. package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
  355. package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js +1 -1
  356. package/build/dist/UI/Components/Date/RangeStartAndEndDateView.js.map +1 -1
  357. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +2 -20
  358. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  359. package/build/dist/UI/Components/Error/PageError.js +1 -3
  360. package/build/dist/UI/Components/Error/PageError.js.map +1 -1
  361. package/build/dist/UI/Components/ErrorBoundary.js +145 -11
  362. package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
  363. package/build/dist/UI/Components/InfoCard/InfoCard.js +28 -1
  364. package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
  365. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js +13 -2
  366. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js.map +1 -1
  367. package/build/dist/UI/Components/MasterPage/MasterPage.js +50 -1
  368. package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
  369. package/build/dist/UI/Components/Modal/Modal.js +4 -32
  370. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  371. package/build/dist/UI/Components/ModelFormModal/ModelFormModal.js.map +1 -1
  372. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +308 -40
  373. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  374. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +230 -0
  375. package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -0
  376. package/build/dist/UI/Components/ModelTable/ColumnPreference.js +258 -0
  377. package/build/dist/UI/Components/ModelTable/ColumnPreference.js.map +1 -0
  378. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js +168 -0
  379. package/build/dist/UI/Components/ModelTable/CustomFieldColumns.js.map +1 -0
  380. package/build/dist/UI/Components/ModelTable/TableView.js +13 -2
  381. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
  382. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +84 -0
  383. package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -0
  384. package/build/dist/UI/Components/Runbook/StepTimeoutInput.js +101 -0
  385. package/build/dist/UI/Components/Runbook/StepTimeoutInput.js.map +1 -0
  386. package/build/dist/UI/Components/SideMenu/SideMenu.js +15 -5
  387. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  388. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js +73 -0
  389. package/build/dist/UI/Components/StatusPage/ResourceGroupSection.js.map +1 -0
  390. package/build/dist/UI/Components/Table/Table.js +15 -2
  391. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  392. package/build/dist/UI/Components/Table/TableRow.js +11 -6
  393. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  394. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js +13 -2
  395. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js.map +1 -1
  396. package/build/dist/UI/Utils/DropdownAlignment.js +98 -0
  397. package/build/dist/UI/Utils/DropdownAlignment.js.map +1 -0
  398. package/build/dist/UI/Utils/TableFilterUrlState.js +48 -15
  399. package/build/dist/UI/Utils/TableFilterUrlState.js.map +1 -1
  400. package/build/dist/Utils/API.js +39 -2
  401. package/build/dist/Utils/API.js.map +1 -1
  402. package/build/dist/Utils/Monitor/MonitorSummaryProbeUtil.js +97 -0
  403. package/build/dist/Utils/Monitor/MonitorSummaryProbeUtil.js.map +1 -0
  404. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js +330 -0
  405. package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js.map +1 -0
  406. package/build/dist/Utils/StatusPage/GroupNestingLayout.js +280 -0
  407. package/build/dist/Utils/StatusPage/GroupNestingLayout.js.map +1 -0
  408. package/build/dist/Utils/StatusPage/GroupTree.js +214 -0
  409. package/build/dist/Utils/StatusPage/GroupTree.js.map +1 -0
  410. package/build/dist/Utils/StatusPage/ResourceUptime.js +60 -16
  411. package/build/dist/Utils/StatusPage/ResourceUptime.js.map +1 -1
  412. package/build/dist/Utils/UserPreferences.js +33 -0
  413. package/build/dist/Utils/UserPreferences.js.map +1 -1
  414. package/package.json +1 -1
@@ -0,0 +1,294 @@
1
+ import MonitorType from "../MonitorType";
2
+ import IconProp from "../../Icon/IconProp";
3
+ import RecommendationType from "../../Recommendation/RecommendationType";
4
+ import { MonitorRecommendationResourceType, buildRecommendationId, } from "./MonitorRecommendationTypes";
5
+ import { getAllCephAlertTemplates, } from "../CephAlertTemplates";
6
+ import { getAllDockerAlertTemplates, } from "../DockerAlertTemplates";
7
+ import { getAllDockerSwarmAlertTemplates, } from "../DockerSwarmAlertTemplates";
8
+ import { getAllHostAlertTemplates, } from "../HostAlertTemplates";
9
+ import { getAllIoTAlertTemplates, } from "../IotAlertTemplates";
10
+ import { getAllKubernetesAlertTemplates, } from "../KubernetesAlertTemplates";
11
+ import { getAllPodmanAlertTemplates, } from "../PodmanAlertTemplates";
12
+ import { getAllProxmoxAlertTemplates, } from "../ProxmoxAlertTemplates";
13
+ function normalize(data) {
14
+ return {
15
+ recommendationId: buildRecommendationId(data.resourceType, data.template.id),
16
+ recommendationType: RecommendationType.Monitor,
17
+ resourceType: data.resourceType,
18
+ monitorType: data.monitorType,
19
+ templateId: data.template.id,
20
+ name: data.template.name,
21
+ description: data.template.description,
22
+ category: data.template.category,
23
+ severity: data.template.severity,
24
+ getMonitorStep: data.getMonitorStep,
25
+ };
26
+ }
27
+ /*
28
+ * One adapter per module. Each is deliberately written out rather than
29
+ * generated from a lookup table: the args field rename is the only thing that
30
+ * differs, and doing it explicitly keeps every call site fully type-checked
31
+ * against that module's real args interface. A generic version would need
32
+ * `any` and would not catch a renamed field.
33
+ */
34
+ function getKubernetesRecommendations() {
35
+ return getAllKubernetesAlertTemplates().map((template) => {
36
+ return normalize({
37
+ resourceType: MonitorRecommendationResourceType.Kubernetes,
38
+ monitorType: MonitorType.Kubernetes,
39
+ template: template,
40
+ getMonitorStep: (args) => {
41
+ return template.getMonitorStep({
42
+ clusterIdentifier: args.resourceIdentifier,
43
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
44
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
45
+ defaultIncidentSeverityId: args.defaultIncidentSeverityId,
46
+ defaultAlertSeverityId: args.defaultAlertSeverityId,
47
+ monitorName: args.monitorName,
48
+ });
49
+ },
50
+ });
51
+ });
52
+ }
53
+ function getHostRecommendations() {
54
+ return getAllHostAlertTemplates().map((template) => {
55
+ return normalize({
56
+ resourceType: MonitorRecommendationResourceType.Host,
57
+ monitorType: MonitorType.Host,
58
+ template: template,
59
+ getMonitorStep: (args) => {
60
+ return template.getMonitorStep({
61
+ hostIdentifier: args.resourceIdentifier,
62
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
63
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
64
+ defaultIncidentSeverityId: args.defaultIncidentSeverityId,
65
+ defaultAlertSeverityId: args.defaultAlertSeverityId,
66
+ monitorName: args.monitorName,
67
+ });
68
+ },
69
+ });
70
+ });
71
+ }
72
+ function getDockerRecommendations() {
73
+ return getAllDockerAlertTemplates().map((template) => {
74
+ return normalize({
75
+ resourceType: MonitorRecommendationResourceType.Docker,
76
+ monitorType: MonitorType.Docker,
77
+ template: template,
78
+ getMonitorStep: (args) => {
79
+ return template.getMonitorStep({
80
+ hostIdentifier: args.resourceIdentifier,
81
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
82
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
83
+ defaultIncidentSeverityId: args.defaultIncidentSeverityId,
84
+ defaultAlertSeverityId: args.defaultAlertSeverityId,
85
+ monitorName: args.monitorName,
86
+ });
87
+ },
88
+ });
89
+ });
90
+ }
91
+ function getDockerSwarmRecommendations() {
92
+ return getAllDockerSwarmAlertTemplates().map((template) => {
93
+ return normalize({
94
+ resourceType: MonitorRecommendationResourceType.DockerSwarm,
95
+ monitorType: MonitorType.DockerSwarm,
96
+ template: template,
97
+ getMonitorStep: (args) => {
98
+ return template.getMonitorStep({
99
+ clusterIdentifier: args.resourceIdentifier,
100
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
101
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
102
+ defaultIncidentSeverityId: args.defaultIncidentSeverityId,
103
+ defaultAlertSeverityId: args.defaultAlertSeverityId,
104
+ monitorName: args.monitorName,
105
+ });
106
+ },
107
+ });
108
+ });
109
+ }
110
+ function getPodmanRecommendations() {
111
+ return getAllPodmanAlertTemplates().map((template) => {
112
+ return normalize({
113
+ resourceType: MonitorRecommendationResourceType.Podman,
114
+ monitorType: MonitorType.Podman,
115
+ template: template,
116
+ getMonitorStep: (args) => {
117
+ return template.getMonitorStep({
118
+ hostIdentifier: args.resourceIdentifier,
119
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
120
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
121
+ defaultIncidentSeverityId: args.defaultIncidentSeverityId,
122
+ defaultAlertSeverityId: args.defaultAlertSeverityId,
123
+ monitorName: args.monitorName,
124
+ });
125
+ },
126
+ });
127
+ });
128
+ }
129
+ function getProxmoxRecommendations() {
130
+ return getAllProxmoxAlertTemplates().map((template) => {
131
+ return normalize({
132
+ resourceType: MonitorRecommendationResourceType.Proxmox,
133
+ monitorType: MonitorType.Proxmox,
134
+ template: template,
135
+ getMonitorStep: (args) => {
136
+ return template.getMonitorStep({
137
+ clusterIdentifier: args.resourceIdentifier,
138
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
139
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
140
+ defaultIncidentSeverityId: args.defaultIncidentSeverityId,
141
+ defaultAlertSeverityId: args.defaultAlertSeverityId,
142
+ monitorName: args.monitorName,
143
+ });
144
+ },
145
+ });
146
+ });
147
+ }
148
+ function getCephRecommendations() {
149
+ return getAllCephAlertTemplates().map((template) => {
150
+ return normalize({
151
+ resourceType: MonitorRecommendationResourceType.Ceph,
152
+ monitorType: MonitorType.Ceph,
153
+ template: template,
154
+ getMonitorStep: (args) => {
155
+ return template.getMonitorStep({
156
+ clusterIdentifier: args.resourceIdentifier,
157
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
158
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
159
+ defaultIncidentSeverityId: args.defaultIncidentSeverityId,
160
+ defaultAlertSeverityId: args.defaultAlertSeverityId,
161
+ monitorName: args.monitorName,
162
+ });
163
+ },
164
+ });
165
+ });
166
+ }
167
+ function getIoTRecommendations() {
168
+ return getAllIoTAlertTemplates().map((template) => {
169
+ return normalize({
170
+ resourceType: MonitorRecommendationResourceType.IoTDevice,
171
+ monitorType: MonitorType.IoTDevice,
172
+ template: template,
173
+ getMonitorStep: (args) => {
174
+ return template.getMonitorStep({
175
+ fleetIdentifier: args.resourceIdentifier,
176
+ onlineMonitorStatusId: args.onlineMonitorStatusId,
177
+ offlineMonitorStatusId: args.offlineMonitorStatusId,
178
+ defaultIncidentSeverityId: args.defaultIncidentSeverityId,
179
+ defaultAlertSeverityId: args.defaultAlertSeverityId,
180
+ monitorName: args.monitorName,
181
+ });
182
+ },
183
+ });
184
+ });
185
+ }
186
+ const RESOURCE_TYPE_DEFINITIONS = [
187
+ {
188
+ resourceType: MonitorRecommendationResourceType.Kubernetes,
189
+ monitorType: MonitorType.Kubernetes,
190
+ resourceLabel: "Kubernetes Cluster",
191
+ identifierFieldName: "clusterIdentifier",
192
+ icon: IconProp.Kubernetes,
193
+ getRecommendations: getKubernetesRecommendations,
194
+ },
195
+ {
196
+ resourceType: MonitorRecommendationResourceType.Host,
197
+ monitorType: MonitorType.Host,
198
+ resourceLabel: "Host",
199
+ identifierFieldName: "hostIdentifier",
200
+ icon: IconProp.Server,
201
+ getRecommendations: getHostRecommendations,
202
+ },
203
+ {
204
+ resourceType: MonitorRecommendationResourceType.Docker,
205
+ monitorType: MonitorType.Docker,
206
+ resourceLabel: "Docker Host",
207
+ identifierFieldName: "hostIdentifier",
208
+ icon: IconProp.Docker,
209
+ getRecommendations: getDockerRecommendations,
210
+ },
211
+ {
212
+ resourceType: MonitorRecommendationResourceType.DockerSwarm,
213
+ monitorType: MonitorType.DockerSwarm,
214
+ resourceLabel: "Docker Swarm Cluster",
215
+ identifierFieldName: "clusterIdentifier",
216
+ icon: IconProp.DockerSwarm,
217
+ getRecommendations: getDockerSwarmRecommendations,
218
+ },
219
+ {
220
+ resourceType: MonitorRecommendationResourceType.Podman,
221
+ monitorType: MonitorType.Podman,
222
+ resourceLabel: "Podman Host",
223
+ identifierFieldName: "hostIdentifier",
224
+ icon: IconProp.Podman,
225
+ getRecommendations: getPodmanRecommendations,
226
+ },
227
+ {
228
+ resourceType: MonitorRecommendationResourceType.Proxmox,
229
+ monitorType: MonitorType.Proxmox,
230
+ resourceLabel: "Proxmox Cluster",
231
+ identifierFieldName: "clusterIdentifier",
232
+ icon: IconProp.Server,
233
+ getRecommendations: getProxmoxRecommendations,
234
+ },
235
+ {
236
+ resourceType: MonitorRecommendationResourceType.Ceph,
237
+ monitorType: MonitorType.Ceph,
238
+ resourceLabel: "Ceph Cluster",
239
+ identifierFieldName: "clusterIdentifier",
240
+ icon: IconProp.Database,
241
+ getRecommendations: getCephRecommendations,
242
+ },
243
+ {
244
+ resourceType: MonitorRecommendationResourceType.IoTDevice,
245
+ monitorType: MonitorType.IoTDevice,
246
+ resourceLabel: "IoT Fleet",
247
+ identifierFieldName: "fleetIdentifier",
248
+ icon: IconProp.CPUChip,
249
+ getRecommendations: getIoTRecommendations,
250
+ },
251
+ ];
252
+ export default class MonitorRecommendationCatalog {
253
+ static getResourceTypeDefinitions() {
254
+ return [...RESOURCE_TYPE_DEFINITIONS];
255
+ }
256
+ static getResourceTypeDefinition(resourceType) {
257
+ return RESOURCE_TYPE_DEFINITIONS.find((definition) => {
258
+ return definition.resourceType === resourceType;
259
+ });
260
+ }
261
+ static getRecommendations(resourceType) {
262
+ const definition = this.getResourceTypeDefinition(resourceType);
263
+ if (!definition) {
264
+ return [];
265
+ }
266
+ return definition.getRecommendations();
267
+ }
268
+ static getAllRecommendations() {
269
+ return RESOURCE_TYPE_DEFINITIONS.flatMap((definition) => {
270
+ return definition.getRecommendations();
271
+ });
272
+ }
273
+ static getRecommendationById(recommendationId) {
274
+ return this.getAllRecommendations().find((recommendation) => {
275
+ return recommendation.recommendationId === recommendationId;
276
+ });
277
+ }
278
+ /*
279
+ * Distinct categories for a resource type, in the order the underlying
280
+ * module declares its templates. Order matters for the UI: the modules list
281
+ * their most important templates first, and the page renders category
282
+ * sections in this order.
283
+ */
284
+ static getCategories(resourceType) {
285
+ const categories = [];
286
+ for (const recommendation of this.getRecommendations(resourceType)) {
287
+ if (!categories.includes(recommendation.category)) {
288
+ categories.push(recommendation.category);
289
+ }
290
+ }
291
+ return categories;
292
+ }
293
+ }
294
+ //# sourceMappingURL=MonitorRecommendationCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorRecommendationCatalog.js","sourceRoot":"","sources":["../../../../../Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAGL,iCAAiC,EAEjC,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAEL,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,+BAA+B,GAChC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,2BAA2B,GAC5B,MAAM,0BAA0B,CAAC;AAyClC,SAAS,SAAS,CAAC,IAKlB;IACC,OAAO;QACL,gBAAgB,EAAE,qBAAqB,CACrC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,CACjB;QACD,kBAAkB,EAAE,kBAAkB,CAAC,OAAO;QAC9C,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;QAC5B,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;QACxB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;QACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAChC,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AAEH,SAAS,4BAA4B;IACnC,OAAO,8BAA8B,EAAE,CAAC,GAAG,CACzC,CAAC,QAAiC,EAAE,EAAE;QACpC,OAAO,SAAS,CAAC;YACf,YAAY,EAAE,iCAAiC,CAAC,UAAU;YAC1D,WAAW,EAAE,WAAW,CAAC,UAAU;YACnC,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,CAAC,IAA+B,EAAE,EAAE;gBAClD,OAAO,QAAQ,CAAC,cAAc,CAAC;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;oBAC1C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;oBACzD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,QAA2B,EAAE,EAAE;QACpE,OAAO,SAAS,CAAC;YACf,YAAY,EAAE,iCAAiC,CAAC,IAAI;YACpD,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,CAAC,IAA+B,EAAE,EAAE;gBAClD,OAAO,QAAQ,CAAC,cAAc,CAAC;oBAC7B,cAAc,EAAE,IAAI,CAAC,kBAAkB;oBACvC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;oBACzD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,QAA6B,EAAE,EAAE;QACxE,OAAO,SAAS,CAAC;YACf,YAAY,EAAE,iCAAiC,CAAC,MAAM;YACtD,WAAW,EAAE,WAAW,CAAC,MAAM;YAC/B,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,CAAC,IAA+B,EAAE,EAAE;gBAClD,OAAO,QAAQ,CAAC,cAAc,CAAC;oBAC7B,cAAc,EAAE,IAAI,CAAC,kBAAkB;oBACvC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;oBACzD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B;IACpC,OAAO,+BAA+B,EAAE,CAAC,GAAG,CAC1C,CAAC,QAAkC,EAAE,EAAE;QACrC,OAAO,SAAS,CAAC;YACf,YAAY,EAAE,iCAAiC,CAAC,WAAW;YAC3D,WAAW,EAAE,WAAW,CAAC,WAAW;YACpC,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,CAAC,IAA+B,EAAE,EAAE;gBAClD,OAAO,QAAQ,CAAC,cAAc,CAAC;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;oBAC1C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;oBACzD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB;IAC/B,OAAO,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,QAA6B,EAAE,EAAE;QACxE,OAAO,SAAS,CAAC;YACf,YAAY,EAAE,iCAAiC,CAAC,MAAM;YACtD,WAAW,EAAE,WAAW,CAAC,MAAM;YAC/B,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,CAAC,IAA+B,EAAE,EAAE;gBAClD,OAAO,QAAQ,CAAC,cAAc,CAAC;oBAC7B,cAAc,EAAE,IAAI,CAAC,kBAAkB;oBACvC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;oBACzD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO,2BAA2B,EAAE,CAAC,GAAG,CAAC,CAAC,QAA8B,EAAE,EAAE;QAC1E,OAAO,SAAS,CAAC;YACf,YAAY,EAAE,iCAAiC,CAAC,OAAO;YACvD,WAAW,EAAE,WAAW,CAAC,OAAO;YAChC,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,CAAC,IAA+B,EAAE,EAAE;gBAClD,OAAO,QAAQ,CAAC,cAAc,CAAC;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;oBAC1C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;oBACzD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB;IAC7B,OAAO,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,QAA2B,EAAE,EAAE;QACpE,OAAO,SAAS,CAAC;YACf,YAAY,EAAE,iCAAiC,CAAC,IAAI;YACpD,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,CAAC,IAA+B,EAAE,EAAE;gBAClD,OAAO,QAAQ,CAAC,cAAc,CAAC;oBAC7B,iBAAiB,EAAE,IAAI,CAAC,kBAAkB;oBAC1C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;oBACzD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,uBAAuB,EAAE,CAAC,GAAG,CAAC,CAAC,QAA0B,EAAE,EAAE;QAClE,OAAO,SAAS,CAAC;YACf,YAAY,EAAE,iCAAiC,CAAC,SAAS;YACzD,WAAW,EAAE,WAAW,CAAC,SAAS;YAClC,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,CAAC,IAA+B,EAAE,EAAE;gBAClD,OAAO,QAAQ,CAAC,cAAc,CAAC;oBAC7B,eAAe,EAAE,IAAI,CAAC,kBAAkB;oBACxC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,yBAAyB,EAAE,IAAI,CAAC,yBAAyB;oBACzD,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;oBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,yBAAyB,GAC7B;IACE;QACE,YAAY,EAAE,iCAAiC,CAAC,UAAU;QAC1D,WAAW,EAAE,WAAW,CAAC,UAAU;QACnC,aAAa,EAAE,oBAAoB;QACnC,mBAAmB,EAAE,mBAAmB;QACxC,IAAI,EAAE,QAAQ,CAAC,UAAU;QACzB,kBAAkB,EAAE,4BAA4B;KACjD;IACD;QACE,YAAY,EAAE,iCAAiC,CAAC,IAAI;QACpD,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,aAAa,EAAE,MAAM;QACrB,mBAAmB,EAAE,gBAAgB;QACrC,IAAI,EAAE,QAAQ,CAAC,MAAM;QACrB,kBAAkB,EAAE,sBAAsB;KAC3C;IACD;QACE,YAAY,EAAE,iCAAiC,CAAC,MAAM;QACtD,WAAW,EAAE,WAAW,CAAC,MAAM;QAC/B,aAAa,EAAE,aAAa;QAC5B,mBAAmB,EAAE,gBAAgB;QACrC,IAAI,EAAE,QAAQ,CAAC,MAAM;QACrB,kBAAkB,EAAE,wBAAwB;KAC7C;IACD;QACE,YAAY,EAAE,iCAAiC,CAAC,WAAW;QAC3D,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,aAAa,EAAE,sBAAsB;QACrC,mBAAmB,EAAE,mBAAmB;QACxC,IAAI,EAAE,QAAQ,CAAC,WAAW;QAC1B,kBAAkB,EAAE,6BAA6B;KAClD;IACD;QACE,YAAY,EAAE,iCAAiC,CAAC,MAAM;QACtD,WAAW,EAAE,WAAW,CAAC,MAAM;QAC/B,aAAa,EAAE,aAAa;QAC5B,mBAAmB,EAAE,gBAAgB;QACrC,IAAI,EAAE,QAAQ,CAAC,MAAM;QACrB,kBAAkB,EAAE,wBAAwB;KAC7C;IACD;QACE,YAAY,EAAE,iCAAiC,CAAC,OAAO;QACvD,WAAW,EAAE,WAAW,CAAC,OAAO;QAChC,aAAa,EAAE,iBAAiB;QAChC,mBAAmB,EAAE,mBAAmB;QACxC,IAAI,EAAE,QAAQ,CAAC,MAAM;QACrB,kBAAkB,EAAE,yBAAyB;KAC9C;IACD;QACE,YAAY,EAAE,iCAAiC,CAAC,IAAI;QACpD,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,aAAa,EAAE,cAAc;QAC7B,mBAAmB,EAAE,mBAAmB;QACxC,IAAI,EAAE,QAAQ,CAAC,QAAQ;QACvB,kBAAkB,EAAE,sBAAsB;KAC3C;IACD;QACE,YAAY,EAAE,iCAAiC,CAAC,SAAS;QACzD,WAAW,EAAE,WAAW,CAAC,SAAS;QAClC,aAAa,EAAE,WAAW;QAC1B,mBAAmB,EAAE,iBAAiB;QACtC,IAAI,EAAE,QAAQ,CAAC,OAAO;QACtB,kBAAkB,EAAE,qBAAqB;KAC1C;CACF,CAAC;AAEJ,MAAM,CAAC,OAAO,OAAO,4BAA4B;IACxC,MAAM,CAAC,0BAA0B;QACtC,OAAO,CAAC,GAAG,yBAAyB,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,yBAAyB,CACrC,YAA+C;QAE/C,OAAO,yBAAyB,CAAC,IAAI,CACnC,CAAC,UAAuD,EAAE,EAAE;YAC1D,OAAO,UAAU,CAAC,YAAY,KAAK,YAAY,CAAC;QAClD,CAAC,CACF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,YAA+C;QAE/C,MAAM,UAAU,GACd,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;QAE/C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,UAAU,CAAC,kBAAkB,EAAE,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,qBAAqB;QACjC,OAAO,yBAAyB,CAAC,OAAO,CACtC,CAAC,UAAuD,EAAE,EAAE;YAC1D,OAAO,UAAU,CAAC,kBAAkB,EAAE,CAAC;QACzC,CAAC,CACF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,qBAAqB,CACjC,gBAAwB;QAExB,OAAO,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,CACtC,CAAC,cAAqC,EAAE,EAAE;YACxC,OAAO,cAAc,CAAC,gBAAgB,KAAK,gBAAgB,CAAC;QAC9D,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,aAAa,CACzB,YAA+C;QAE/C,MAAM,UAAU,GAAkB,EAAE,CAAC;QAErC,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClD,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -0,0 +1,110 @@
1
+ /*
2
+ * Maps a recommendation's declared severity (`Critical` / `Warning`) onto one
3
+ * of the project's own incident or alert severities.
4
+ *
5
+ * Why this exists: the templates take a single `defaultIncidentSeverityId`
6
+ * argument, and the page filled it with the project's first severity. So
7
+ * "Deployment Replica Mismatch" (Warning) and "Node Not Ready" (Critical)
8
+ * both opened a Critical Incident. Every recommendation paged at the same
9
+ * level, and the Critical/Warning badge on the card described nothing that
10
+ * happened afterwards.
11
+ *
12
+ * The rule is intentionally boring and order-based rather than name-based:
13
+ * severities are user-renameable ("Sev1", "P0", "Critical Incident", localized
14
+ * names), so matching on a name works for the default seed and for nothing
15
+ * else. `order` is the field the product itself treats as rank.
16
+ */
17
+ export default class MonitorRecommendationSeverityMapper {
18
+ /*
19
+ * Severities ranked most-severe first.
20
+ *
21
+ * Sorted by `order` ascending, with rows missing an order pushed to the end
22
+ * rather than treated as order 0 — an unset order is "unranked", and
23
+ * silently promoting it to most-severe would map every Critical
24
+ * recommendation onto it.
25
+ *
26
+ * Ties (two severities sharing an order, which the product permits) fall
27
+ * back to the incoming array order, so the mapping is stable across calls
28
+ * given the same input. Callers pass the list already sorted by order from
29
+ * the API, so in practice this is the API's own ordering.
30
+ */
31
+ static rankSeverities(options) {
32
+ return [...options].sort((a, b) => {
33
+ const aOrder = typeof a.order === "number" ? a.order : Number.MAX_SAFE_INTEGER;
34
+ const bOrder = typeof b.order === "number" ? b.order : Number.MAX_SAFE_INTEGER;
35
+ return aOrder - bOrder;
36
+ });
37
+ }
38
+ /*
39
+ * The default Critical -> ? / Warning -> ? mapping for a project.
40
+ *
41
+ * Critical takes the most severe row. Warning takes the next one down, and
42
+ * falls back to the same row as Critical when the project only defines one
43
+ * severity — a project with a single severity has no way to express the
44
+ * distinction, and refusing to map Warning at all would leave those monitors
45
+ * on the template's own choice, which is the bug this class exists to fix.
46
+ *
47
+ * Warning deliberately takes the SECOND severity rather than the LAST. On
48
+ * the default seed those are the same row (incidents: Critical/Major/Minor
49
+ * -> Major either way is second, Minor is last), but a project with five
50
+ * severities means "Warning" much closer to Major than to the bottom of the
51
+ * scale, and a recommendation the catalog calls Warning is a real
52
+ * production problem, not a nitpick.
53
+ */
54
+ static getDefaultSeverityMapping(options) {
55
+ const ranked = this.rankSeverities(options);
56
+ if (ranked.length === 0) {
57
+ return {};
58
+ }
59
+ const mostSevere = ranked[0];
60
+ const nextSevere = ranked[1] || mostSevere;
61
+ return {
62
+ Critical: mostSevere.id,
63
+ Warning: nextSevere.id,
64
+ };
65
+ }
66
+ /*
67
+ * Resolve one recommendation's severity through a mapping.
68
+ *
69
+ * Returns undefined when the mapping has no entry, which callers must treat
70
+ * as "leave the template's own severity alone" rather than as "no severity"
71
+ * — a criteria instance with a populated incident and no severity id fails
72
+ * `MonitorCriteriaInstance.getValidationError` and the whole create fails.
73
+ */
74
+ static resolveSeverityId(data) {
75
+ if (!data.severityMap) {
76
+ return undefined;
77
+ }
78
+ return data.severityMap[data.severity];
79
+ }
80
+ /*
81
+ * Human-readable "Critical -> Critical Incident" pairs, for the create form
82
+ * to show what it is about to do. Rendering the mapping is the only thing
83
+ * that makes an automatic choice reviewable instead of surprising.
84
+ */
85
+ static describeMapping(data) {
86
+ const severities = [
87
+ "Critical",
88
+ "Warning",
89
+ ];
90
+ const described = [];
91
+ for (const severity of severities) {
92
+ const id = this.resolveSeverityId({
93
+ severity: severity,
94
+ severityMap: data.severityMap,
95
+ });
96
+ if (!id) {
97
+ continue;
98
+ }
99
+ const match = data.options.find((option) => {
100
+ return option.id.toString() === id.toString();
101
+ });
102
+ if (!match) {
103
+ continue;
104
+ }
105
+ described.push({ severity: severity, name: match.name });
106
+ }
107
+ return described;
108
+ }
109
+ }
110
+ //# sourceMappingURL=MonitorRecommendationSeverityMapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorRecommendationSeverityMapper.js","sourceRoot":"","sources":["../../../../../Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,OAAO,OAAO,mCAAmC;IACtD;;;;;;;;;;;;OAYG;IACI,MAAM,CAAC,cAAc,CAC1B,OAAmD;QAEnD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CACtB,CACE,CAAsC,EACtC,CAAsC,EACtC,EAAE;YACF,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAClE,MAAM,MAAM,GACV,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAElE,OAAO,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,MAAM,CAAC,yBAAyB,CACrC,OAAmD;QAEnD,MAAM,MAAM,GACV,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,UAAU,GAAwC,MAAM,CAAC,CAAC,CAAE,CAAC;QACnE,MAAM,UAAU,GACd,MAAM,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC;QAE1B,OAAO;YACL,QAAQ,EAAE,UAAU,CAAC,EAAE;YACvB,OAAO,EAAE,UAAU,CAAC,EAAE;SACvB,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,iBAAiB,CAAC,IAG/B;QACC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,eAAe,CAAC,IAG7B;QACC,MAAM,UAAU,GAAyC;YACvD,UAAU;YACV,SAAS;SACV,CAAC;QAEF,MAAM,SAAS,GAGV,EAAE,CAAC;QAER,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,EAAE,GAAyB,IAAI,CAAC,iBAAiB,CAAC;gBACtD,QAAQ,EAAE,QAAQ;gBAClB,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,SAAS;YACX,CAAC;YAED,MAAM,KAAK,GACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAA2C,EAAE,EAAE;gBAChE,OAAO,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;YAChD,CAAC,CAAC,CAAC;YAEL,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS;YACX,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,58 @@
1
+ /*
2
+ * The infrastructure resource types that ship a curated alert-template
3
+ * library. There is exactly one member per `<X>AlertTemplates.ts` module in
4
+ * `Common/Types/Monitor` — adding a ninth template module means adding a
5
+ * member here and an adapter in `MonitorRecommendationCatalog.ts`, and the
6
+ * catalog's own tests fail until both exist.
7
+ *
8
+ * These values are persisted nowhere. They are a UI/registry key only, so
9
+ * they are free to differ from `MonitorType` (which they do: `DockerSwarm`
10
+ * here vs `"Docker Swarm"` there).
11
+ */
12
+ export var MonitorRecommendationResourceType;
13
+ (function (MonitorRecommendationResourceType) {
14
+ MonitorRecommendationResourceType["Kubernetes"] = "Kubernetes";
15
+ MonitorRecommendationResourceType["Host"] = "Host";
16
+ MonitorRecommendationResourceType["Docker"] = "Docker";
17
+ MonitorRecommendationResourceType["DockerSwarm"] = "DockerSwarm";
18
+ MonitorRecommendationResourceType["Podman"] = "Podman";
19
+ MonitorRecommendationResourceType["Proxmox"] = "Proxmox";
20
+ MonitorRecommendationResourceType["Ceph"] = "Ceph";
21
+ MonitorRecommendationResourceType["IoTDevice"] = "IoTDevice";
22
+ })(MonitorRecommendationResourceType || (MonitorRecommendationResourceType = {}));
23
+ /*
24
+ * Registry-wide unique id for a recommendation.
25
+ *
26
+ * Every template module happens to self-prefix its ids today (`host-high-cpu`,
27
+ * `docker-high-cpu`, `podman-high-cpu`), so the 76 template ids are in fact
28
+ * globally unique right now. That is a convention across eight independently
29
+ * maintained files, not a contract — each module only guarantees uniqueness
30
+ * WITHIN itself. Prefixing here makes the registry correct regardless: without
31
+ * it, the day two modules pick the same id, selecting one card in the UI would
32
+ * silently also select the other. `MonitorRecommendationCatalog.test.ts` keeps
33
+ * a canary on the current global uniqueness so the drift is at least visible.
34
+ */
35
+ export function buildRecommendationId(resourceType, templateId) {
36
+ return `${resourceType}:${templateId}`;
37
+ }
38
+ /*
39
+ * What a created monitor should open when its condition is met.
40
+ *
41
+ * Every shipped template sets BOTH `createIncidents: true` and
42
+ * `createAlerts: true` on its unhealthy criteria, so today one threshold
43
+ * breach opens an incident AND an alert describing the same thing — two
44
+ * records, two notification fan-outs, two things to resolve. That is almost
45
+ * never what anyone wants, and there is no way to say so from the
46
+ * recommendations page. This is that choice.
47
+ *
48
+ * The distinction the product draws (see the monitor criteria form's own
49
+ * tooltips): an alert notifies the team; an incident notifies the team AND
50
+ * shows on the status page.
51
+ */
52
+ export var MonitorRecommendationNotificationMode;
53
+ (function (MonitorRecommendationNotificationMode) {
54
+ MonitorRecommendationNotificationMode["Alert"] = "Alert";
55
+ MonitorRecommendationNotificationMode["Incident"] = "Incident";
56
+ MonitorRecommendationNotificationMode["Both"] = "Both";
57
+ })(MonitorRecommendationNotificationMode || (MonitorRecommendationNotificationMode = {}));
58
+ //# sourceMappingURL=MonitorRecommendationTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonitorRecommendationTypes.js","sourceRoot":"","sources":["../../../../../Types/Monitor/Recommendation/MonitorRecommendationTypes.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;GAUG;AACH,MAAM,CAAN,IAAY,iCASX;AATD,WAAY,iCAAiC;IAC3C,8DAAyB,CAAA;IACzB,kDAAa,CAAA;IACb,sDAAiB,CAAA;IACjB,gEAA2B,CAAA;IAC3B,sDAAiB,CAAA;IACjB,wDAAmB,CAAA;IACnB,kDAAa,CAAA;IACb,4DAAuB,CAAA;AACzB,CAAC,EATW,iCAAiC,KAAjC,iCAAiC,QAS5C;AA4DD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAA+C,EAC/C,UAAkB;IAElB,OAAO,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAN,IAAY,qCAIX;AAJD,WAAY,qCAAqC;IAC/C,wDAAe,CAAA;IACf,8DAAqB,CAAA;IACrB,sDAAa,CAAA;AACf,CAAC,EAJW,qCAAqC,KAArC,qCAAqC,QAIhD"}