@oneuptime/common 12.0.34 → 13.0.1

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 (952) hide show
  1. package/Models/DatabaseModels/Alert.ts +55 -0
  2. package/Models/DatabaseModels/CloudResource.ts +45 -7
  3. package/Models/DatabaseModels/CodeRepository.ts +85 -0
  4. package/Models/DatabaseModels/GlobalConfig.ts +12 -12
  5. package/Models/DatabaseModels/GoogleSecOpsConnection.ts +57 -7
  6. package/Models/DatabaseModels/GoogleSecOpsConnectionRun.ts +263 -0
  7. package/Models/DatabaseModels/Incident.ts +55 -0
  8. package/Models/DatabaseModels/Index.ts +16 -0
  9. package/Models/DatabaseModels/InventoryItem.ts +44 -1
  10. package/Models/DatabaseModels/NetworkDevice.ts +126 -0
  11. package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
  12. package/Models/DatabaseModels/User.ts +51 -2
  13. package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +43 -2
  14. package/Models/DatabaseModels/UserWebAuthn.ts +17 -0
  15. package/Models/DatabaseModels/VMwareResource.ts +1149 -0
  16. package/Models/DatabaseModels/VMwareVCenter.ts +1122 -0
  17. package/Models/DatabaseModels/VMwareVCenterFeed.ts +625 -0
  18. package/Models/DatabaseModels/VMwareVCenterLabelRule.ts +514 -0
  19. package/Models/DatabaseModels/VMwareVCenterOwnerRule.ts +596 -0
  20. package/Models/DatabaseModels/VMwareVCenterOwnerTeam.ts +485 -0
  21. package/Models/DatabaseModels/VMwareVCenterOwnerUser.ts +484 -0
  22. package/Models/DatabaseModels/WorkflowVariable.ts +22 -1
  23. package/Server/API/AIAgentDataAPI.ts +79 -4
  24. package/Server/API/AIAgentGitHubAPI.ts +523 -0
  25. package/Server/API/AIChatAPI.ts +20 -1
  26. package/Server/API/BillingAPI.ts +33 -0
  27. package/Server/API/DashboardAPI.ts +10 -0
  28. package/Server/API/GitHubAPI.ts +47 -5
  29. package/Server/API/GoogleSecOpsConnectionAPI.ts +79 -0
  30. package/Server/API/UserWebAuthnAPI.ts +21 -1
  31. package/Server/API/VMwareResourceAPI.ts +143 -0
  32. package/Server/EnvironmentConfig.ts +47 -16
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.ts +25 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.ts +68 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.ts +26 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.ts +636 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.ts +47 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.ts +17 -0
  39. package/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.ts +83 -0
  40. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +14 -0
  41. package/Server/Infrastructure/Redis.ts +8 -8
  42. package/Server/Infrastructure/Status.ts +10 -4
  43. package/Server/Middleware/IdentityRateLimit.ts +101 -0
  44. package/Server/Services/AIRunService.ts +13 -0
  45. package/Server/Services/BillingPaymentMethodService.ts +99 -28
  46. package/Server/Services/BillingService.ts +287 -20
  47. package/Server/Services/CloudResourceInstanceService.ts +70 -0
  48. package/Server/Services/DatabaseService.ts +65 -13
  49. package/Server/Services/ExceptionAggregationService.ts +1 -0
  50. package/Server/Services/GoogleSecOpsConnectionRunService.ts +10 -0
  51. package/Server/Services/GoogleSecOpsConnectionService.ts +12 -0
  52. package/Server/Services/Index.ts +16 -0
  53. package/Server/Services/InventoryItemService.ts +31 -1
  54. package/Server/Services/LogAggregationService.ts +1 -0
  55. package/Server/Services/MetricAggregationService.ts +1 -0
  56. package/Server/Services/MobilePasskeyLoginService.ts +216 -0
  57. package/Server/Services/MonitorService.ts +51 -1
  58. package/Server/Services/MonitorTemplateService.ts +218 -35
  59. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +481 -42
  60. package/Server/Services/NetworkDeviceAutoImportRuleService.ts +176 -2
  61. package/Server/Services/NetworkDeviceDiscoveryScanService.ts +87 -2
  62. package/Server/Services/NetworkDeviceService.ts +69 -0
  63. package/Server/Services/OpenTelemetryIngestService.ts +17 -0
  64. package/Server/Services/PayAsYouGoBillingService.ts +446 -0
  65. package/Server/Services/ProjectService.ts +46 -2
  66. package/Server/Services/ServerlessFunctionInstanceService.ts +71 -0
  67. package/Server/Services/TeamMemberService.ts +96 -36
  68. package/Server/Services/TelemetryIngestionKeyService.ts +80 -10
  69. package/Server/Services/TelemetryUsageBillingService.ts +95 -5
  70. package/Server/Services/TraceAggregationService.ts +5 -4
  71. package/Server/Services/UserNotificationRuleService.ts +76 -25
  72. package/Server/Services/UserWebAuthnService.ts +592 -133
  73. package/Server/Services/VMwareResourceService.ts +648 -0
  74. package/Server/Services/VMwareVCenterFeedService.ts +99 -0
  75. package/Server/Services/VMwareVCenterLabelRuleEngineService.ts +240 -0
  76. package/Server/Services/VMwareVCenterLabelRuleService.ts +14 -0
  77. package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +252 -0
  78. package/Server/Services/VMwareVCenterOwnerRuleService.ts +14 -0
  79. package/Server/Services/VMwareVCenterOwnerTeamService.ts +139 -0
  80. package/Server/Services/VMwareVCenterOwnerUserService.ts +133 -0
  81. package/Server/Services/VMwareVCenterService.ts +629 -0
  82. package/Server/Services/WorkflowVariableService.ts +203 -0
  83. package/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.ts +17 -0
  84. package/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.ts +31 -1
  85. package/Server/Types/Database/Permissions/ReadPermission.ts +45 -5
  86. package/Server/Types/Database/QueryUtil.ts +56 -0
  87. package/Server/Types/Markdown.ts +93 -1
  88. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +7 -0
  89. package/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.ts +341 -0
  90. package/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.ts +274 -0
  91. package/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.ts +375 -0
  92. package/Server/Utils/CodeRepository/GitHub/GitHubConversation.ts +846 -0
  93. package/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.ts +360 -0
  94. package/Server/Utils/CodeRepository/GitHub/GitHubRunReply.ts +421 -0
  95. package/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.ts +140 -0
  96. package/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.ts +906 -0
  97. package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +225 -17
  98. package/Server/Utils/DataSource/EgressGuard.ts +160 -15
  99. package/Server/Utils/Database/TruncateColumnValue.ts +1 -1
  100. package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +12 -1
  101. package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +35 -2
  102. package/Server/Utils/EmailRollup/EmailRollupWriter.ts +44 -0
  103. package/Server/Utils/LogRedaction.ts +2 -1
  104. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +82 -35
  105. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +31 -5
  106. package/Server/Utils/Monitor/MonitorAlert.ts +1 -1
  107. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +502 -38
  108. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +82 -9
  109. package/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.ts +16 -7
  110. package/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.ts +29 -17
  111. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +107 -48
  112. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +26 -4
  113. package/Server/Utils/Monitor/MonitorResourceContext.ts +5 -3
  114. package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +14 -0
  115. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
  116. package/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.ts +158 -0
  117. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +27 -0
  118. package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
  119. package/Server/Utils/Monitor/SeriesResourceLinker.ts +28 -5
  120. package/Server/Utils/ResourceFeed/ResourceFeedUtil.ts +3 -3
  121. package/Server/Utils/SecurityEvent/ConnectorErrorMessage.ts +14 -9
  122. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +116 -84
  123. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +594 -195
  124. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.ts +466 -0
  125. package/Server/Utils/Telemetry/EntityRegistry.ts +16 -1
  126. package/Server/Utils/Telemetry/ResourceHeartbeat.ts +2 -1
  127. package/Server/Utils/Telemetry/TelemetryEntity.ts +264 -10
  128. package/Server/Utils/Telemetry/VMwareSnapshotScan.ts +1352 -0
  129. package/Tests/App/Accounts/LoginPasskey.test.tsx +529 -0
  130. package/Tests/App/Accounts/MobilePasskey.test.tsx +620 -0
  131. package/Tests/App/Accounts/PasswordRequirements.test.tsx +254 -0
  132. package/Tests/App/Accounts/RegisterPassword.test.tsx +553 -0
  133. package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +32 -0
  134. package/Tests/App/Dashboard/AdoptedDeviceDrawer.test.tsx +374 -0
  135. package/Tests/App/Dashboard/AskAiAvailability.test.ts +224 -0
  136. package/Tests/App/Dashboard/AskAiDisabled.test.tsx +432 -0
  137. package/Tests/App/Dashboard/BackupCodes.test.tsx +414 -0
  138. package/Tests/App/Dashboard/BillingPaidUsageFlow.test.tsx +530 -0
  139. package/Tests/App/Dashboard/BillingPaymentMethodForm.test.tsx +195 -0
  140. package/Tests/App/Dashboard/BreadcrumbCoverage.test.tsx +199 -0
  141. package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +198 -0
  142. package/Tests/App/Dashboard/CloudDocumentationMarkdown.test.ts +215 -0
  143. package/Tests/App/Dashboard/CloudFleetSummary.test.ts +183 -0
  144. package/Tests/App/Dashboard/CloudFleetSummaryComponent.test.tsx +248 -0
  145. package/Tests/App/Dashboard/CloudResourceTelemetryScope.test.ts +215 -0
  146. package/Tests/App/Dashboard/CriteriaFilterDefaults.test.ts +3 -0
  147. package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +441 -0
  148. package/Tests/App/Dashboard/DashboardLabelVariables.test.tsx +580 -0
  149. package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +458 -0
  150. package/Tests/App/Dashboard/DashboardMonitorLabelVariable.test.tsx +438 -0
  151. package/Tests/App/Dashboard/DashboardToolbarPopupLayering.test.tsx +566 -0
  152. package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +5 -2
  153. package/Tests/App/Dashboard/DeviceAttachmentCard.test.tsx +273 -0
  154. package/Tests/App/Dashboard/DiscoveryReviewInventoryRefresh.test.tsx +505 -0
  155. package/Tests/App/Dashboard/DiscoveryScanLivePage.test.tsx +376 -0
  156. package/Tests/App/Dashboard/DiscoveryScanLiveUpdates.test.tsx +642 -0
  157. package/Tests/App/Dashboard/DiscoveryScanProgress.test.tsx +267 -0
  158. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +69 -231
  159. package/Tests/App/Dashboard/EntityDetailPanel.test.tsx +163 -0
  160. package/Tests/App/Dashboard/GoogleSecOpsConnectionsErrors.test.tsx +244 -0
  161. package/Tests/App/Dashboard/GoogleSecOpsDiagnostics.test.tsx +724 -0
  162. package/Tests/App/Dashboard/InfrastructureExplorer.test.tsx +401 -0
  163. package/Tests/App/Dashboard/InfrastructureGraph.test.tsx +232 -0
  164. package/Tests/App/Dashboard/InventoryItems.test.tsx +201 -0
  165. package/Tests/App/Dashboard/InventoryTypeAndStatusFacets.test.tsx +798 -0
  166. package/Tests/App/Dashboard/MonitorTemplateSyncFields.test.tsx +539 -0
  167. package/Tests/App/Dashboard/NetworkTopologyLiveView.test.tsx +320 -0
  168. package/Tests/App/Dashboard/NetworkTopologyToolbar.test.tsx +275 -0
  169. package/Tests/App/Dashboard/OnCallCalendarFeedEmptyState.test.tsx +975 -0
  170. package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +63 -0
  171. package/Tests/App/Dashboard/OnCallLayerCardOverrides.test.tsx +24 -7
  172. package/Tests/App/Dashboard/OnCallOverridePresentation.test.ts +496 -0
  173. package/Tests/App/Dashboard/OnCallScheduleOverrideClarity.test.tsx +677 -0
  174. package/Tests/App/Dashboard/OnCallSchedulePreviewOverrides.test.tsx +31 -3
  175. package/Tests/App/Dashboard/PaidUsageConsent.test.tsx +180 -0
  176. package/Tests/App/Dashboard/PasskeySettings.test.tsx +1220 -0
  177. package/Tests/App/Dashboard/PayAsYouGoConsentGate.test.tsx +176 -275
  178. package/Tests/App/Dashboard/PayAsYouGoNotices.test.tsx +380 -233
  179. package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +3 -23
  180. package/Tests/App/Dashboard/ResourceFeed.test.tsx +1 -0
  181. package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +8 -1
  182. package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +626 -0
  183. package/Tests/App/Dashboard/TopologyDataLoading.test.tsx +348 -0
  184. package/Tests/App/Dashboard/TopologyPageNavigation.test.tsx +331 -0
  185. package/Tests/App/Dashboard/TwoFactorStatus.test.tsx +260 -0
  186. package/Tests/App/Dashboard/UserSettingsEmailPreferences.test.tsx +603 -0
  187. package/Tests/App/Dashboard/UserSettingsNotificationSettings.test.tsx +324 -0
  188. package/Tests/App/Dashboard/VMwareDashboardWidgets.test.ts +573 -0
  189. package/Tests/App/Dashboard/WidgetCatalog.test.ts +2 -0
  190. package/Tests/App/Dashboard/WorkflowVariablesTable.test.tsx +768 -0
  191. package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +13 -4
  192. package/Tests/App/StatusPage/StatusPageOidcOrigin.test.tsx +223 -0
  193. package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +532 -40
  194. package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +19 -2
  195. package/Tests/Fixtures/MobilePasskeyUser.json +8 -0
  196. package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +25 -6
  197. package/Tests/Models/DatabaseModels/VMwareModels.test.ts +1134 -0
  198. package/Tests/Models/InventoryItemStatus.test.ts +147 -0
  199. package/Tests/Models/NetworkDeviceMacAddressColumn.test.ts +294 -0
  200. package/Tests/Models/RunnerVersionLabel.test.ts +4 -2
  201. package/Tests/Server/API/AIChatProvidersAIEnabled.test.ts +259 -0
  202. package/Tests/Server/API/AIChatRouteAuthorization.test.ts +31 -2
  203. package/Tests/Server/API/BillingPayAsYouGoStatus.test.ts +116 -0
  204. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +158 -1
  205. package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +13 -2
  206. package/Tests/Server/API/GitHubWebhookSignature.test.ts +368 -0
  207. package/Tests/Server/API/GoogleSecOpsConnectionAPI.test.ts +248 -0
  208. package/Tests/Server/API/UserWebAuthnAuthenticationOptionsRoute.test.ts +330 -0
  209. package/Tests/Server/API/UserWebAuthnPasskeyAPI.test.ts +172 -0
  210. package/Tests/Server/API/VMwareResourceAPI.test.ts +546 -0
  211. package/Tests/Server/EnvironmentConfigValkey.test.ts +227 -0
  212. package/Tests/Server/Infrastructure/Postgres/AddMacAddressToNetworkDeviceMigration.test.ts +365 -0
  213. package/Tests/Server/Infrastructure/Postgres/CustomFieldValueMappingMigration.test.ts +62 -23
  214. package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupMetadataMigration.test.ts +85 -0
  215. package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +34 -3
  216. package/Tests/Server/Infrastructure/ValkeyDeploymentConfig.test.ts +265 -0
  217. package/Tests/Server/Middleware/HttpMetricsMiddleware.test.ts +382 -0
  218. package/Tests/Server/Middleware/PasskeyRateLimit.test.ts +141 -0
  219. package/Tests/Server/Middleware/SCIMAuthorization.test.ts +525 -0
  220. package/Tests/Server/Services/AutoImportRuleRearmRecentScans.test.ts +343 -0
  221. package/Tests/Server/Services/AutoImportRuleWriteRearmsScans.test.ts +381 -0
  222. package/Tests/Server/Services/BillingPaymentMethodServiceSync.test.ts +175 -0
  223. package/Tests/Server/Services/BillingService.test.ts +26 -11
  224. package/Tests/Server/Services/BillingServiceMeteredPaymentAuthorization.test.ts +245 -0
  225. package/Tests/Server/Services/BillingServicePaymentMethodReads.test.ts +362 -0
  226. package/Tests/Server/Services/CloudResourceInstanceStalePrune.test.ts +188 -0
  227. package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +291 -56
  228. package/Tests/Server/Services/DatabaseServiceSortTiebreaker.test.ts +151 -0
  229. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +16 -2
  230. package/Tests/Server/Services/GoogleSecOpsDiagnosticsModel.test.ts +153 -0
  231. package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +13 -0
  232. package/Tests/Server/Services/InventoryItemManualCreate.test.ts +105 -0
  233. package/Tests/Server/Services/InventoryItemPromotionGate.test.ts +183 -0
  234. package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +36 -0
  235. package/Tests/Server/Services/InventoryUpsertTruncationGuard.test.ts +151 -0
  236. package/Tests/Server/Services/MobilePasskeyLoginIntegration.test.ts +231 -0
  237. package/Tests/Server/Services/MobilePasskeyLoginService.test.ts +315 -0
  238. package/Tests/Server/Services/MonitorPayAsYouGoBilling.test.ts +302 -0
  239. package/Tests/Server/Services/MonitorTemplateServiceCustomFieldSync.test.ts +502 -0
  240. package/Tests/Server/Services/MonitorTemplateServiceFieldSync.test.ts +994 -0
  241. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +1133 -81
  242. package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +22 -0
  243. package/Tests/Server/Services/NetworkDeviceDiscoveryScanRegistration.test.ts +520 -0
  244. package/Tests/Server/Services/NetworkDeviceMacAddressNormalization.test.ts +572 -0
  245. package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +7 -1
  246. package/Tests/Server/Services/PayAsYouGoBillingService.test.ts +857 -0
  247. package/Tests/Server/Services/PayAsYouGoStripeRateLimitBudget.test.ts +379 -0
  248. package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +99 -1
  249. package/Tests/Server/Services/ProjectServiceSubscriptionSeats.test.ts +134 -0
  250. package/Tests/Server/Services/ResourceFeedServices.test.ts +3 -2
  251. package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +32 -6
  252. package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +363 -175
  253. package/Tests/Server/Services/ServerlessFunctionInstanceStalePrune.test.ts +200 -0
  254. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +3 -0
  255. package/Tests/Server/Services/TeamMemberBillingSeatSync.test.ts +762 -0
  256. package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +3 -0
  257. package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +72 -0
  258. package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +17 -4
  259. package/Tests/Server/Services/TelemetryPayAsYouGoBilling.test.ts +355 -0
  260. package/Tests/Server/Services/TraceAnalyticsResourceDisplayNames.test.ts +41 -4
  261. package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +37 -0
  262. package/Tests/Server/Services/UserWebAuthnPasskeyIntegration.test.ts +401 -0
  263. package/Tests/Server/Services/UserWebAuthnPasskeyService.test.ts +769 -0
  264. package/Tests/Server/Services/UserWebAuthnUserVerification.test.ts +649 -0
  265. package/Tests/Server/Services/VMwareResourceService.test.ts +945 -0
  266. package/Tests/Server/Services/VMwareVCenterService.test.ts +722 -0
  267. package/Tests/Server/Services/WorkflowVariableRenameUniqueness.test.ts +842 -0
  268. package/Tests/Server/TestingUtils/PasskeyHttpIntegration.ts +102 -0
  269. package/Tests/Server/TestingUtils/SecurityKey.ts +464 -0
  270. package/Tests/Server/TestingUtils/WebAuthnServiceMocks.ts +60 -0
  271. package/Tests/Server/Types/Billing/PayAsYouGoMeteredAuthorization.test.ts +573 -0
  272. package/Tests/Server/Types/Database/InventoryStatusPostgres.test.ts +368 -0
  273. package/Tests/Server/Types/Database/Permissions/ProjectCustomerSupportAccessColumn.test.ts +261 -0
  274. package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +261 -14
  275. package/Tests/Server/Types/Database/Permissions/WorkflowVariableColumnPermission.test.ts +95 -0
  276. package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroups.test.ts +169 -0
  277. package/Tests/Server/Types/Database/QueryUtilIncludesAnyOfGroupsPostgres.test.ts +297 -0
  278. package/Tests/Server/Types/Markdown.test.ts +194 -1
  279. package/Tests/Server/Types/Workflow/Components/IncomingWebhookUtils.test.ts +279 -0
  280. package/Tests/Server/Types/Workflow/Components/TextToJson.test.ts +212 -0
  281. package/Tests/Server/Utils/CodeRepository/GitHubAgentTaskTrigger.test.ts +2101 -0
  282. package/Tests/Server/Utils/CodeRepository/GitHubCommandAuthorizer.test.ts +883 -0
  283. package/Tests/Server/Utils/CodeRepository/GitHubCommandParser.test.ts +1474 -0
  284. package/Tests/Server/Utils/CodeRepository/GitHubConversation.test.ts +1526 -0
  285. package/Tests/Server/Utils/CodeRepository/GitHubReplyComposer.test.ts +1389 -0
  286. package/Tests/Server/Utils/CodeRepository/GitHubRunReply.test.ts +1707 -0
  287. package/Tests/Server/Utils/CodeRepository/GitHubWebhookHandler.test.ts +2202 -0
  288. package/Tests/Server/Utils/CustomField/CustomFieldMappingRegistry.test.ts +436 -0
  289. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +559 -0
  290. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +896 -0
  291. package/Tests/Server/Utils/EmailRollup/EmailRollupFlushRunnerBehaviour.test.ts +1 -1
  292. package/Tests/Server/Utils/EmailRollup/EmailRollupMetadataIntegration.test.ts +246 -0
  293. package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +309 -4
  294. package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +6 -0
  295. package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +185 -0
  296. package/Tests/Server/Utils/EventLoop.test.ts +359 -0
  297. package/Tests/Server/Utils/JsonWebToken.test.ts +30 -0
  298. package/Tests/Server/Utils/LogRedaction.test.ts +33 -0
  299. package/Tests/Server/Utils/Monitor/CapturedMetricAttributeUtil.test.ts +2 -1
  300. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +242 -0
  301. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +13 -7
  302. package/Tests/Server/Utils/Monitor/Criteria/DatabaseMonitorCriteria.test.ts +29 -0
  303. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +30 -6
  304. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteriaAnomalyUnits.test.ts +246 -0
  305. package/Tests/Server/Utils/Monitor/Criteria/TelemetryStepMetricAlias.test.ts +10 -0
  306. package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +66 -1
  307. package/Tests/Server/Utils/Monitor/MonitorCriteriaEmailEvalLogAgreement.test.ts +280 -0
  308. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +586 -10
  309. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +570 -0
  310. package/Tests/Server/Utils/Monitor/MonitorCriteriaExpectationBuilderUnits.test.ts +30 -5
  311. package/Tests/Server/Utils/Monitor/MonitorCriteriaMessageBuilderUnits.test.ts +68 -21
  312. package/Tests/Server/Utils/Monitor/MonitorCriteriaObservationBuilderUnits.test.ts +36 -19
  313. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +1 -0
  314. package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +60 -1
  315. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +60 -0
  316. package/Tests/Server/Utils/Monitor/MonitorRootCauseTargetResolution.test.ts +423 -0
  317. package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +6 -0
  318. package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +1 -0
  319. package/Tests/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.test.ts +573 -0
  320. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +317 -0
  321. package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1 -0
  322. package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +46 -2
  323. package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +81 -45
  324. package/Tests/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.test.ts +711 -0
  325. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClickhouseIntegration.test.ts +223 -0
  326. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +69 -1
  327. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsDiagnostics.test.ts +838 -0
  328. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsErrorHandling.test.ts +241 -28
  329. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsHttpIntegration.test.ts +651 -0
  330. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +11 -0
  331. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +13 -12
  332. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerHardening.test.ts +112 -127
  333. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsRequestContract.test.ts +12 -18
  334. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsResponseParsing.test.ts +43 -0
  335. package/Tests/Server/Utils/Telemetry/ContextSpanProcessor.test.ts +281 -0
  336. package/Tests/Server/Utils/Telemetry/InventoryDuplicateIdentity.test.ts +316 -0
  337. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +691 -8
  338. package/Tests/Server/Utils/Telemetry/VMwareSnapshotScan.test.ts +1748 -0
  339. package/Tests/Types/Cloud/CloudPlatform.test.ts +574 -0
  340. package/Tests/Types/Database/IncludesAnyOfGroups.test.ts +106 -0
  341. package/Tests/Types/JSONFunctions.test.ts +40 -0
  342. package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +2 -0
  343. package/Tests/Types/Monitor/MonitorCriteriaMetricVariables.test.ts +9 -0
  344. package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
  345. package/Tests/Types/Monitor/MonitorStepInfraMonitorUtils.test.ts +53 -8
  346. package/Tests/Types/Monitor/MonitorStepInfrastructureMonitors.test.ts +97 -0
  347. package/Tests/Types/Monitor/MonitorStepMetricViewConfigUtil.test.ts +1 -0
  348. package/Tests/Types/Monitor/MonitorStepTemplateSyncFields.test.ts +107 -0
  349. package/Tests/Types/Monitor/MonitorTemplateSyncField.test.ts +172 -0
  350. package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
  351. package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +2 -0
  352. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +1 -0
  353. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +9 -0
  354. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
  355. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
  356. package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +131 -0
  357. package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +10 -0
  358. package/Tests/Types/Monitor/VMwareAlertTemplates.test.ts +1608 -0
  359. package/Tests/Types/Monitor/VMwareMetricCatalog.test.ts +488 -0
  360. package/Tests/Types/NetworkAutomation/AutoImportRunMerge.test.ts +235 -0
  361. package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +66 -0
  362. package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +309 -1
  363. package/Tests/Types/OnCallDutyPolicy/OverrideProvenance.test.ts +295 -0
  364. package/Tests/Types/Runner/RunnerLiveStatus.test.ts +2 -2
  365. package/Tests/Types/SignupPassword.test.ts +205 -0
  366. package/Tests/Types/StatusPage/StatusPageLanguage.test.ts +44 -0
  367. package/Tests/Types/SupportedLanguages.test.ts +119 -0
  368. package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +19 -0
  369. package/Tests/Types/Telemetry/InventoryLiveness.test.ts +99 -0
  370. package/Tests/UI/ColorPickerBuild.test.ts +86 -0
  371. package/Tests/UI/Components/Breadcrumbs.test.tsx +32 -0
  372. package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +160 -0
  373. package/Tests/UI/Components/Forms/ModelFormPreservesUserInput.test.tsx +937 -0
  374. package/Tests/UI/Components/Forms/ModelFormWriteOnlyColumnSelect.test.tsx +230 -0
  375. package/Tests/UI/Components/Forms/ValidationFormSteps.test.ts +3 -4
  376. package/Tests/UI/Components/LabelRuleImportExport.test.tsx +907 -0
  377. package/Tests/UI/Components/ModelTable/ModelTableCreateAfterEdit.test.tsx +514 -0
  378. package/Tests/UI/Components/MonitorGraphs/Uptime.test.tsx +301 -0
  379. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +2 -1
  380. package/Tests/UI/Components/TooltipLazyContent.test.tsx +373 -0
  381. package/Tests/UI/MicrosoftTeams/MicrosoftTeamsMessagingEndpointGuidance.test.tsx +43 -12
  382. package/Tests/UI/ReactDomBuild.test.ts +104 -0
  383. package/Tests/UI/ReactRouterSingletonBuild.test.ts +143 -0
  384. package/Tests/UI/Rum/ReplayHeader.test.tsx +10 -2
  385. package/Tests/UI/Rum/ReplayPlayerChrome.test.tsx +514 -0
  386. package/Tests/UI/Rum/ReplayTimeFormat.test.ts +94 -0
  387. package/Tests/UI/Rum/ReplayUi.test.tsx +559 -0
  388. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +153 -0
  389. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +30 -0
  390. package/Tests/UI/Utils/DashboardStackingLayers.test.ts +197 -0
  391. package/Tests/UI/Utils/LabelRuleImportExport.test.ts +546 -0
  392. package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +109 -2
  393. package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +7 -2
  394. package/Tests/UI/Utils/UserEmailRegistrationStatus.test.tsx +295 -0
  395. package/Tests/UI/Utils/WebAuthn.test.ts +265 -0
  396. package/Tests/Utils/Dashboard/Components/DashboardComponentDefaults.test.ts +5 -0
  397. package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +11 -1
  398. package/Tests/Utils/Dashboard/Components/DashboardVMwareListComponents.test.ts +548 -0
  399. package/Tests/Utils/Dashboard/DashboardResourceListSharedArgs.test.ts +17 -3
  400. package/Tests/Utils/Dashboard/LabelVariable.test.ts +257 -0
  401. package/Tests/Utils/Dashboard/VariableUrlState.test.ts +144 -14
  402. package/Tests/Utils/LabelRuleImportExport.test.ts +583 -0
  403. package/Tests/Utils/MetricUnitUtil.test.ts +81 -0
  404. package/Tests/Utils/Monitor/DeviceMacLearningUtil.test.ts +497 -0
  405. package/Tests/Utils/Monitor/MetricValueFormatter.test.ts +546 -0
  406. package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
  407. package/Tests/Utils/Monitor/MonitorTemplateCustomFieldUtil.test.ts +218 -0
  408. package/Tests/Utils/Monitor/MonitorTemplateSyncUtil.test.ts +590 -0
  409. package/Tests/Utils/Monitor/NetworkTopologyEndpointAdoption.test.ts +1755 -0
  410. package/Tests/Utils/NetworkAutomation/AutoImportRunChain.test.ts +320 -0
  411. package/Tests/Utils/RequestFailedDetails.test.ts +325 -0
  412. package/Tests/Utils/Telemetry/CloudInstanceIdentity.test.ts +255 -0
  413. package/Tests/Utils/Telemetry/EntityRelationship.test.ts +167 -0
  414. package/Tests/Utils/WebAuthnTestUtil.ts +79 -0
  415. package/Tests/__mocks__/simplewebauthn.js +33 -4
  416. package/Types/AI/CodeFixTaskContext.ts +122 -0
  417. package/Types/AI/CodeFixTaskType.ts +62 -0
  418. package/Types/Accounts/AccountsLanguage.ts +1 -0
  419. package/Types/AdminDashboard/AdminDashboardLanguage.ts +1 -0
  420. package/Types/BaseDatabase/IncludesAnyOfGroups.ts +77 -0
  421. package/Types/Calendar/CalendarEvent.ts +16 -0
  422. package/Types/Cloud/CloudPlatform.ts +372 -0
  423. package/Types/CodeRepository/GitHubCommand.ts +69 -0
  424. package/Types/Dashboard/DashboardComponentType.ts +2 -0
  425. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +2 -0
  426. package/Types/Dashboard/DashboardComponents/DashboardMonitorListComponent.ts +1 -0
  427. package/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.ts +23 -0
  428. package/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.ts +30 -0
  429. package/Types/Dashboard/DashboardLanguage.ts +1 -0
  430. package/Types/Dashboard/DashboardTemplates.ts +314 -0
  431. package/Types/Dashboard/DashboardVariable.ts +8 -0
  432. package/Types/Docs/DocsLanguage.ts +1 -0
  433. package/Types/Exception/EgressGuardException.ts +65 -0
  434. package/Types/Icon/IconProp.ts +1 -0
  435. package/Types/JSON.ts +4 -0
  436. package/Types/JSONFunctions.ts +16 -0
  437. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +36 -0
  438. package/Types/Monitor/MonitorCriteriaInstance.ts +1 -0
  439. package/Types/Monitor/MonitorStep.ts +78 -17
  440. package/Types/Monitor/MonitorStepMetricViewConfigUtil.ts +1 -0
  441. package/Types/Monitor/MonitorStepVMwareMonitor.ts +127 -0
  442. package/Types/Monitor/MonitorTemplateSyncField.ts +291 -0
  443. package/Types/Monitor/MonitorType.ts +24 -0
  444. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +33 -0
  445. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +2 -0
  446. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +3 -0
  447. package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +158 -0
  448. package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +61 -0
  449. package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +13 -0
  450. package/Types/Monitor/VMwareAlertTemplates.ts +1070 -0
  451. package/Types/Monitor/VMwareMetricCatalog.ts +914 -0
  452. package/Types/NetworkAutomation/RuleRunResult.ts +402 -13
  453. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +29 -0
  454. package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +16 -0
  455. package/Types/Password.ts +84 -5
  456. package/Types/Permission.ts +265 -0
  457. package/Types/Probe/RequestFailedDetails.ts +7 -0
  458. package/Types/Runner/RunnerLiveStatus.ts +1 -1
  459. package/Types/SecurityEvent/GoogleSecOpsDiagnostics.ts +56 -0
  460. package/Types/SerializableObjectDictionary.ts +4 -0
  461. package/Types/StatusPage/StatusPageLanguage.ts +1 -0
  462. package/Types/Telemetry/EntityType.ts +21 -0
  463. package/Types/Telemetry/InventoryLiveness.ts +56 -0
  464. package/Types/Telemetry/ServiceType.ts +1 -0
  465. package/Typings/Index.d.ts +63 -0
  466. package/UI/Components/Breadcrumbs/Breadcrumbs.tsx +2 -2
  467. package/UI/Components/CSVFileUpload/CSVFileUpload.tsx +9 -2
  468. package/UI/Components/Calendar/Calendar.css +78 -0
  469. package/UI/Components/Calendar/Calendar.tsx +28 -3
  470. package/UI/Components/CustomFields/CustomFieldsDetail.tsx +46 -21
  471. package/UI/Components/Dashboard/DashboardVariableControl.tsx +285 -0
  472. package/UI/Components/Forms/BasicForm.tsx +44 -2
  473. package/UI/Components/Forms/Fields/ColorPicker.tsx +2 -1
  474. package/UI/Components/Forms/Fields/FormField.tsx +16 -3
  475. package/UI/Components/Forms/ModelForm.tsx +159 -5
  476. package/UI/Components/Forms/Types/Field.ts +8 -1
  477. package/UI/Components/Graphs/DayUptimeGraph.tsx +8 -10
  478. package/UI/Components/Icon/Icon.tsx +16 -0
  479. package/UI/Components/Input/Input.tsx +42 -7
  480. package/UI/Components/LabelRule/ImportLabelRulesModal.tsx +441 -0
  481. package/UI/Components/LabelRule/LabelRuleTable.tsx +142 -0
  482. package/UI/Components/ModelTable/BaseModelTable.tsx +22 -5
  483. package/UI/Components/ModelTable/ModelTable.tsx +14 -6
  484. package/UI/Components/MonitorGraphs/Uptime.tsx +17 -27
  485. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +3 -1
  486. package/UI/Components/Tooltip/Tooltip.tsx +52 -6
  487. package/UI/Utils/DashboardStackingLayers.ts +85 -0
  488. package/UI/Utils/LabelRuleImportExport.ts +310 -0
  489. package/UI/Utils/ModelAPI/ModelAPI.ts +4 -3
  490. package/UI/Utils/TelemetryService.ts +4 -3
  491. package/UI/Utils/UseDashboardGridDnd.ts +4 -1
  492. package/UI/Utils/UserEmailRegistrationStatus.ts +33 -5
  493. package/UI/Utils/WebAuthn.ts +220 -0
  494. package/UI/esbuild-config.js +10 -0
  495. package/Utils/API.ts +34 -0
  496. package/Utils/Dashboard/Components/DashboardMonitorListComponent.ts +12 -1
  497. package/Utils/Dashboard/Components/DashboardVMwareHostListComponent.ts +38 -0
  498. package/Utils/Dashboard/Components/DashboardVMwareResourceListShared.ts +70 -0
  499. package/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.ts +76 -0
  500. package/Utils/Dashboard/Components/Index.ts +16 -0
  501. package/Utils/Dashboard/LabelVariable.ts +152 -0
  502. package/Utils/Dashboard/VariableUrlState.ts +27 -5
  503. package/Utils/LabelRuleImportExport.ts +496 -0
  504. package/Utils/MetricUnitUtil.ts +34 -0
  505. package/Utils/Monitor/DeviceMacLearningUtil.ts +177 -0
  506. package/Utils/Monitor/MetricValueFormatter.ts +342 -0
  507. package/Utils/Monitor/MonitorTemplateCustomFieldUtil.ts +124 -0
  508. package/Utils/Monitor/MonitorTemplateSyncUtil.ts +164 -0
  509. package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +7 -2
  510. package/Utils/Monitor/NetworkTopologyUtil.ts +693 -0
  511. package/Utils/NetworkAutomation/AutoImportRunChain.ts +138 -0
  512. package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +8 -0
  513. package/Utils/Telemetry/CloudInstanceIdentity.ts +94 -0
  514. package/Utils/Telemetry/EntityKey.ts +19 -0
  515. package/Utils/Telemetry/EntityRelationship.ts +19 -0
  516. package/build/dist/Models/DatabaseModels/Alert.js +54 -0
  517. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  518. package/build/dist/Models/DatabaseModels/CloudResource.js +44 -7
  519. package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -1
  520. package/build/dist/Models/DatabaseModels/CodeRepository.js +87 -0
  521. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  522. package/build/dist/Models/DatabaseModels/GlobalConfig.js +12 -12
  523. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  524. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +60 -7
  525. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
  526. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnectionRun.js +287 -0
  527. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnectionRun.js.map +1 -0
  528. package/build/dist/Models/DatabaseModels/Incident.js +54 -0
  529. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  530. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  531. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  532. package/build/dist/Models/DatabaseModels/InventoryItem.js +34 -1
  533. package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -1
  534. package/build/dist/Models/DatabaseModels/NetworkDevice.js +128 -0
  535. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  536. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
  537. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  538. package/build/dist/Models/DatabaseModels/User.js +57 -4
  539. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  540. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +47 -2
  541. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -1
  542. package/build/dist/Models/DatabaseModels/UserWebAuthn.js +18 -0
  543. package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
  544. package/build/dist/Models/DatabaseModels/VMwareResource.js +1201 -0
  545. package/build/dist/Models/DatabaseModels/VMwareResource.js.map +1 -0
  546. package/build/dist/Models/DatabaseModels/VMwareVCenter.js +1149 -0
  547. package/build/dist/Models/DatabaseModels/VMwareVCenter.js.map +1 -0
  548. package/build/dist/Models/DatabaseModels/VMwareVCenterFeed.js +648 -0
  549. package/build/dist/Models/DatabaseModels/VMwareVCenterFeed.js.map +1 -0
  550. package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js +522 -0
  551. package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js.map +1 -0
  552. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js +603 -0
  553. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js.map +1 -0
  554. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js +503 -0
  555. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js.map +1 -0
  556. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js +502 -0
  557. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js.map +1 -0
  558. package/build/dist/Models/DatabaseModels/WorkflowVariable.js +22 -1
  559. package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
  560. package/build/dist/Server/API/AIAgentDataAPI.js +63 -3
  561. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  562. package/build/dist/Server/API/AIAgentGitHubAPI.js +363 -0
  563. package/build/dist/Server/API/AIAgentGitHubAPI.js.map +1 -0
  564. package/build/dist/Server/API/AIChatAPI.js +19 -1
  565. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  566. package/build/dist/Server/API/BillingAPI.js +22 -0
  567. package/build/dist/Server/API/BillingAPI.js.map +1 -1
  568. package/build/dist/Server/API/DashboardAPI.js +10 -0
  569. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  570. package/build/dist/Server/API/GitHubAPI.js +33 -5
  571. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  572. package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js +56 -0
  573. package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js.map +1 -0
  574. package/build/dist/Server/API/UserWebAuthnAPI.js +17 -1
  575. package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
  576. package/build/dist/Server/API/VMwareResourceAPI.js +106 -0
  577. package/build/dist/Server/API/VMwareResourceAPI.js.map +1 -0
  578. package/build/dist/Server/EnvironmentConfig.js +44 -12
  579. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  580. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js +14 -0
  581. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791700000000-AddMacAddressToNetworkDevice.js.map +1 -0
  582. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.js +41 -0
  583. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.js.map +1 -0
  584. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.js +14 -0
  585. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.js.map +1 -0
  586. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.js +241 -0
  587. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.js.map +1 -0
  588. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.js +36 -0
  589. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.js.map +1 -0
  590. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.js +12 -0
  591. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.js.map +1 -0
  592. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.js +34 -0
  593. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.js.map +1 -0
  594. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +14 -0
  595. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  596. package/build/dist/Server/Infrastructure/Redis.js +8 -8
  597. package/build/dist/Server/Infrastructure/Redis.js.map +1 -1
  598. package/build/dist/Server/Infrastructure/Status.js +10 -4
  599. package/build/dist/Server/Infrastructure/Status.js.map +1 -1
  600. package/build/dist/Server/Middleware/IdentityRateLimit.js +80 -0
  601. package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
  602. package/build/dist/Server/Services/AIRunService.js +14 -1
  603. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  604. package/build/dist/Server/Services/BillingPaymentMethodService.js +71 -21
  605. package/build/dist/Server/Services/BillingPaymentMethodService.js.map +1 -1
  606. package/build/dist/Server/Services/BillingService.js +210 -22
  607. package/build/dist/Server/Services/BillingService.js.map +1 -1
  608. package/build/dist/Server/Services/CloudResourceInstanceService.js +66 -0
  609. package/build/dist/Server/Services/CloudResourceInstanceService.js.map +1 -1
  610. package/build/dist/Server/Services/DatabaseService.js +58 -13
  611. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  612. package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
  613. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  614. package/build/dist/Server/Services/GoogleSecOpsConnectionRunService.js +9 -0
  615. package/build/dist/Server/Services/GoogleSecOpsConnectionRunService.js.map +1 -0
  616. package/build/dist/Server/Services/GoogleSecOpsConnectionService.js +7 -0
  617. package/build/dist/Server/Services/GoogleSecOpsConnectionService.js.map +1 -1
  618. package/build/dist/Server/Services/Index.js +16 -0
  619. package/build/dist/Server/Services/Index.js.map +1 -1
  620. package/build/dist/Server/Services/InventoryItemService.js +28 -1
  621. package/build/dist/Server/Services/InventoryItemService.js.map +1 -1
  622. package/build/dist/Server/Services/LogAggregationService.js +1 -0
  623. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  624. package/build/dist/Server/Services/MetricAggregationService.js +1 -0
  625. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  626. package/build/dist/Server/Services/MobilePasskeyLoginService.js +137 -0
  627. package/build/dist/Server/Services/MobilePasskeyLoginService.js.map +1 -0
  628. package/build/dist/Server/Services/MonitorService.js +34 -1
  629. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  630. package/build/dist/Server/Services/MonitorTemplateService.js +167 -30
  631. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  632. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +394 -38
  633. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  634. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +142 -2
  635. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  636. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +65 -0
  637. package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
  638. package/build/dist/Server/Services/NetworkDeviceService.js +54 -0
  639. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  640. package/build/dist/Server/Services/OpenTelemetryIngestService.js +28 -13
  641. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  642. package/build/dist/Server/Services/PayAsYouGoBillingService.js +297 -0
  643. package/build/dist/Server/Services/PayAsYouGoBillingService.js.map +1 -0
  644. package/build/dist/Server/Services/ProjectService.js +38 -2
  645. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  646. package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +66 -0
  647. package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -1
  648. package/build/dist/Server/Services/TeamMemberService.js +85 -28
  649. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  650. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +61 -10
  651. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  652. package/build/dist/Server/Services/TelemetryUsageBillingService.js +62 -5
  653. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  654. package/build/dist/Server/Services/TraceAggregationService.js +5 -4
  655. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  656. package/build/dist/Server/Services/UserNotificationRuleService.js +60 -25
  657. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  658. package/build/dist/Server/Services/UserWebAuthnService.js +345 -113
  659. package/build/dist/Server/Services/UserWebAuthnService.js.map +1 -1
  660. package/build/dist/Server/Services/VMwareResourceService.js +395 -0
  661. package/build/dist/Server/Services/VMwareResourceService.js.map +1 -0
  662. package/build/dist/Server/Services/VMwareVCenterFeedService.js +89 -0
  663. package/build/dist/Server/Services/VMwareVCenterFeedService.js.map +1 -0
  664. package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js +197 -0
  665. package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js.map +1 -0
  666. package/build/dist/Server/Services/VMwareVCenterLabelRuleService.js +13 -0
  667. package/build/dist/Server/Services/VMwareVCenterLabelRuleService.js.map +1 -0
  668. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +214 -0
  669. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -0
  670. package/build/dist/Server/Services/VMwareVCenterOwnerRuleService.js +13 -0
  671. package/build/dist/Server/Services/VMwareVCenterOwnerRuleService.js.map +1 -0
  672. package/build/dist/Server/Services/VMwareVCenterOwnerTeamService.js +129 -0
  673. package/build/dist/Server/Services/VMwareVCenterOwnerTeamService.js.map +1 -0
  674. package/build/dist/Server/Services/VMwareVCenterOwnerUserService.js +122 -0
  675. package/build/dist/Server/Services/VMwareVCenterOwnerUserService.js.map +1 -0
  676. package/build/dist/Server/Services/VMwareVCenterService.js +533 -0
  677. package/build/dist/Server/Services/VMwareVCenterService.js.map +1 -0
  678. package/build/dist/Server/Services/WorkflowVariableService.js +169 -0
  679. package/build/dist/Server/Services/WorkflowVariableService.js.map +1 -1
  680. package/build/dist/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.js +12 -1
  681. package/build/dist/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.js.map +1 -1
  682. package/build/dist/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.js +25 -2
  683. package/build/dist/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.js.map +1 -1
  684. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +29 -4
  685. package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
  686. package/build/dist/Server/Types/Database/QueryUtil.js +36 -0
  687. package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
  688. package/build/dist/Server/Types/Markdown.js +75 -0
  689. package/build/dist/Server/Types/Markdown.js.map +1 -1
  690. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  691. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.js +275 -0
  692. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.js.map +1 -0
  693. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.js +226 -0
  694. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.js.map +1 -0
  695. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.js +297 -0
  696. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.js.map +1 -0
  697. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubConversation.js +582 -0
  698. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubConversation.js.map +1 -0
  699. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.js +275 -0
  700. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.js.map +1 -0
  701. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubRunReply.js +365 -0
  702. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubRunReply.js.map +1 -0
  703. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.js +103 -0
  704. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.js.map +1 -0
  705. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.js +661 -0
  706. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.js.map +1 -0
  707. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +166 -18
  708. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
  709. package/build/dist/Server/Utils/DataSource/EgressGuard.js +99 -15
  710. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  711. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +12 -1
  712. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
  713. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +20 -2
  714. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
  715. package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +31 -2
  716. package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -1
  717. package/build/dist/Server/Utils/LogRedaction.js +2 -1
  718. package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
  719. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +58 -35
  720. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  721. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +29 -5
  722. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  723. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +1 -1
  724. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +382 -36
  725. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  726. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +58 -9
  727. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js.map +1 -1
  728. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js +9 -3
  729. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageBuilder.js.map +1 -1
  730. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js +26 -12
  731. package/build/dist/Server/Utils/Monitor/MonitorCriteriaMessageFormatter.js.map +1 -1
  732. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +74 -33
  733. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  734. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +12 -4
  735. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  736. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +5 -3
  737. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -1
  738. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +22 -9
  739. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
  740. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
  741. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  742. package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js +114 -0
  743. package/build/dist/Server/Utils/Monitor/NetworkDeviceMacLearningUtil.js.map +1 -0
  744. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +25 -0
  745. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  746. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +21 -0
  747. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  748. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +21 -6
  749. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
  750. package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +3 -3
  751. package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +9 -9
  752. package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -1
  753. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +92 -71
  754. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -1
  755. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +428 -143
  756. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
  757. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js +376 -0
  758. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js.map +1 -0
  759. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +14 -1
  760. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  761. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -1
  762. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +206 -14
  763. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  764. package/build/dist/Server/Utils/Telemetry/VMwareSnapshotScan.js +933 -0
  765. package/build/dist/Server/Utils/Telemetry/VMwareSnapshotScan.js.map +1 -0
  766. package/build/dist/Types/AI/CodeFixTaskContext.js +40 -0
  767. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
  768. package/build/dist/Types/AI/CodeFixTaskType.js +57 -0
  769. package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -1
  770. package/build/dist/Types/Accounts/AccountsLanguage.js +1 -0
  771. package/build/dist/Types/Accounts/AccountsLanguage.js.map +1 -1
  772. package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js +1 -0
  773. package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js.map +1 -1
  774. package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js +54 -0
  775. package/build/dist/Types/BaseDatabase/IncludesAnyOfGroups.js.map +1 -0
  776. package/build/dist/Types/Cloud/CloudPlatform.js +277 -0
  777. package/build/dist/Types/Cloud/CloudPlatform.js.map +1 -0
  778. package/build/dist/Types/CodeRepository/GitHubCommand.js +52 -0
  779. package/build/dist/Types/CodeRepository/GitHubCommand.js.map +1 -0
  780. package/build/dist/Types/Dashboard/DashboardComponentType.js +2 -0
  781. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  782. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +2 -0
  783. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  784. package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.js +2 -0
  785. package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.js.map +1 -0
  786. package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.js +2 -0
  787. package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.js.map +1 -0
  788. package/build/dist/Types/Dashboard/DashboardLanguage.js +1 -0
  789. package/build/dist/Types/Dashboard/DashboardLanguage.js.map +1 -1
  790. package/build/dist/Types/Dashboard/DashboardTemplates.js +286 -0
  791. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  792. package/build/dist/Types/Dashboard/DashboardVariable.js +1 -0
  793. package/build/dist/Types/Dashboard/DashboardVariable.js.map +1 -1
  794. package/build/dist/Types/Docs/DocsLanguage.js +1 -0
  795. package/build/dist/Types/Docs/DocsLanguage.js.map +1 -1
  796. package/build/dist/Types/Exception/EgressGuardException.js +59 -0
  797. package/build/dist/Types/Exception/EgressGuardException.js.map +1 -0
  798. package/build/dist/Types/Icon/IconProp.js +1 -0
  799. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  800. package/build/dist/Types/JSON.js +1 -0
  801. package/build/dist/Types/JSON.js.map +1 -1
  802. package/build/dist/Types/JSONFunctions.js +13 -0
  803. package/build/dist/Types/JSONFunctions.js.map +1 -1
  804. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +1 -0
  805. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  806. package/build/dist/Types/Monitor/MonitorStep.js +61 -18
  807. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  808. package/build/dist/Types/Monitor/MonitorStepMetricViewConfigUtil.js +1 -0
  809. package/build/dist/Types/Monitor/MonitorStepMetricViewConfigUtil.js.map +1 -1
  810. package/build/dist/Types/Monitor/MonitorStepVMwareMonitor.js +71 -0
  811. package/build/dist/Types/Monitor/MonitorStepVMwareMonitor.js.map +1 -0
  812. package/build/dist/Types/Monitor/MonitorTemplateSyncField.js +211 -0
  813. package/build/dist/Types/Monitor/MonitorTemplateSyncField.js.map +1 -0
  814. package/build/dist/Types/Monitor/MonitorType.js +23 -0
  815. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  816. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +28 -0
  817. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
  818. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +1 -0
  819. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
  820. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +2 -0
  821. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
  822. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +120 -0
  823. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -1
  824. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +60 -0
  825. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
  826. package/build/dist/Types/Monitor/VMwareAlertTemplates.js +775 -0
  827. package/build/dist/Types/Monitor/VMwareAlertTemplates.js.map +1 -0
  828. package/build/dist/Types/Monitor/VMwareMetricCatalog.js +799 -0
  829. package/build/dist/Types/Monitor/VMwareMetricCatalog.js.map +1 -0
  830. package/build/dist/Types/NetworkAutomation/RuleRunResult.js +291 -6
  831. package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
  832. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +25 -0
  833. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
  834. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +5 -0
  835. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -1
  836. package/build/dist/Types/Password.js +63 -5
  837. package/build/dist/Types/Password.js.map +1 -1
  838. package/build/dist/Types/Permission.js +234 -0
  839. package/build/dist/Types/Permission.js.map +1 -1
  840. package/build/dist/Types/Probe/RequestFailedDetails.js +7 -0
  841. package/build/dist/Types/Probe/RequestFailedDetails.js.map +1 -1
  842. package/build/dist/Types/SecurityEvent/GoogleSecOpsDiagnostics.js +2 -0
  843. package/build/dist/Types/SecurityEvent/GoogleSecOpsDiagnostics.js.map +1 -0
  844. package/build/dist/Types/SerializableObjectDictionary.js +4 -0
  845. package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
  846. package/build/dist/Types/StatusPage/StatusPageLanguage.js +1 -0
  847. package/build/dist/Types/StatusPage/StatusPageLanguage.js.map +1 -1
  848. package/build/dist/Types/Telemetry/EntityType.js +21 -0
  849. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  850. package/build/dist/Types/Telemetry/InventoryLiveness.js +37 -0
  851. package/build/dist/Types/Telemetry/InventoryLiveness.js.map +1 -0
  852. package/build/dist/Types/Telemetry/ServiceType.js +1 -0
  853. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  854. package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js +2 -2
  855. package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  856. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js +7 -0
  857. package/build/dist/UI/Components/CSVFileUpload/CSVFileUpload.js.map +1 -1
  858. package/build/dist/UI/Components/Calendar/Calendar.js +24 -4
  859. package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
  860. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +9 -2
  861. package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
  862. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js +137 -0
  863. package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js.map +1 -0
  864. package/build/dist/UI/Components/Forms/BasicForm.js +28 -3
  865. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  866. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +1 -1
  867. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
  868. package/build/dist/UI/Components/Forms/Fields/FormField.js +10 -3
  869. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  870. package/build/dist/UI/Components/Forms/ModelForm.js +89 -6
  871. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  872. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +5 -6
  873. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
  874. package/build/dist/UI/Components/Icon/Icon.js +14 -0
  875. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  876. package/build/dist/UI/Components/Input/Input.js +37 -8
  877. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  878. package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js +228 -0
  879. package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js.map +1 -0
  880. package/build/dist/UI/Components/LabelRule/LabelRuleTable.js +102 -0
  881. package/build/dist/UI/Components/LabelRule/LabelRuleTable.js.map +1 -0
  882. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +15 -2
  883. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  884. package/build/dist/UI/Components/ModelTable/ModelTable.js +13 -5
  885. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  886. package/build/dist/UI/Components/MonitorGraphs/Uptime.js +14 -15
  887. package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
  888. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +2 -0
  889. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  890. package/build/dist/UI/Components/Tooltip/Tooltip.js +33 -4
  891. package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
  892. package/build/dist/UI/Utils/DashboardStackingLayers.js +44 -0
  893. package/build/dist/UI/Utils/DashboardStackingLayers.js.map +1 -0
  894. package/build/dist/UI/Utils/LabelRuleImportExport.js +195 -0
  895. package/build/dist/UI/Utils/LabelRuleImportExport.js.map +1 -0
  896. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +4 -4
  897. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  898. package/build/dist/UI/Utils/TelemetryService.js +3 -2
  899. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  900. package/build/dist/UI/Utils/UseDashboardGridDnd.js +2 -1
  901. package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -1
  902. package/build/dist/UI/Utils/UserEmailRegistrationStatus.js +21 -4
  903. package/build/dist/UI/Utils/UserEmailRegistrationStatus.js.map +1 -1
  904. package/build/dist/UI/Utils/WebAuthn.js +121 -0
  905. package/build/dist/UI/Utils/WebAuthn.js.map +1 -0
  906. package/build/dist/Utils/API.js +29 -0
  907. package/build/dist/Utils/API.js.map +1 -1
  908. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js +9 -1
  909. package/build/dist/Utils/Dashboard/Components/DashboardMonitorListComponent.js.map +1 -1
  910. package/build/dist/Utils/Dashboard/Components/DashboardVMwareHostListComponent.js +33 -0
  911. package/build/dist/Utils/Dashboard/Components/DashboardVMwareHostListComponent.js.map +1 -0
  912. package/build/dist/Utils/Dashboard/Components/DashboardVMwareResourceListShared.js +54 -0
  913. package/build/dist/Utils/Dashboard/Components/DashboardVMwareResourceListShared.js.map +1 -0
  914. package/build/dist/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.js +60 -0
  915. package/build/dist/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.js.map +1 -0
  916. package/build/dist/Utils/Dashboard/Components/Index.js +8 -0
  917. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  918. package/build/dist/Utils/Dashboard/LabelVariable.js +96 -0
  919. package/build/dist/Utils/Dashboard/LabelVariable.js.map +1 -0
  920. package/build/dist/Utils/Dashboard/VariableUrlState.js +19 -4
  921. package/build/dist/Utils/Dashboard/VariableUrlState.js.map +1 -1
  922. package/build/dist/Utils/LabelRuleImportExport.js +356 -0
  923. package/build/dist/Utils/LabelRuleImportExport.js.map +1 -0
  924. package/build/dist/Utils/MetricUnitUtil.js +26 -0
  925. package/build/dist/Utils/MetricUnitUtil.js.map +1 -1
  926. package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js +112 -0
  927. package/build/dist/Utils/Monitor/DeviceMacLearningUtil.js.map +1 -0
  928. package/build/dist/Utils/Monitor/MetricValueFormatter.js +276 -0
  929. package/build/dist/Utils/Monitor/MetricValueFormatter.js.map +1 -0
  930. package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js +101 -0
  931. package/build/dist/Utils/Monitor/MonitorTemplateCustomFieldUtil.js.map +1 -0
  932. package/build/dist/Utils/Monitor/MonitorTemplateSyncUtil.js +110 -0
  933. package/build/dist/Utils/Monitor/MonitorTemplateSyncUtil.js.map +1 -0
  934. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +7 -2
  935. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -1
  936. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +484 -0
  937. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  938. package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js +59 -0
  939. package/build/dist/Utils/NetworkAutomation/AutoImportRunChain.js.map +1 -0
  940. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +6 -0
  941. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -1
  942. package/build/dist/Utils/Telemetry/CloudInstanceIdentity.js +88 -0
  943. package/build/dist/Utils/Telemetry/CloudInstanceIdentity.js.map +1 -0
  944. package/build/dist/Utils/Telemetry/EntityKey.js +15 -0
  945. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  946. package/build/dist/Utils/Telemetry/EntityRelationship.js +13 -0
  947. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
  948. package/jest.config.json +2 -0
  949. package/package.json +1 -1
  950. package/test-setup.sh +9 -9
  951. package/tsconfig.json +51 -11
  952. package/Tests/App/Dashboard/NotificationEmailPreferences.test.tsx +0 -399
@@ -41,6 +41,12 @@ import IP from "../../../Types/IP/IP";
41
41
  import Hostname from "../../../Types/API/Hostname";
42
42
  import Port from "../../../Types/Port";
43
43
  import { DashboardClientUrl } from "../../EnvironmentConfig";
44
+ import MetricValueFormatter from "../../../Utils/Monitor/MetricValueFormatter";
45
+ import { getKubernetesMetricByMetricName } from "../../../Types/Monitor/KubernetesMetricCatalog";
46
+ import { getProxmoxMetricByMetricName } from "../../../Types/Monitor/ProxmoxMetricCatalog";
47
+ import { getVMwareMetricByMetricName } from "../../../Types/Monitor/VMwareMetricCatalog";
48
+ import { getCephMetricByMetricName } from "../../../Types/Monitor/CephMetricCatalog";
49
+ import { getDockerSwarmMetricByMetricName } from "../../../Types/Monitor/DockerSwarmMetricCatalog";
44
50
  export default class MonitorCriteriaEvaluator {
45
51
  static async processMonitorStep(input) {
46
52
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
@@ -330,7 +336,7 @@ ${contextBlock}
330
336
  });
331
337
  }
332
338
  /**
333
- * For metric-backed monitors (Metrics/Kubernetes/Docker/Proxmox/Ceph)
339
+ * For metric-backed monitors (Metrics/Kubernetes/Docker/Proxmox/VMware/Ceph)
334
340
  * with per-series aggregated results, re-evaluate the matched criteria
335
341
  * once per series and return one entry per series that breached.
336
342
  * Returns an empty array when the monitor is not series-aware or
@@ -790,6 +796,7 @@ ${contextBlock}
790
796
  input.monitor.monitorType === MonitorType.Podman ||
791
797
  input.monitor.monitorType === MonitorType.DockerSwarm ||
792
798
  input.monitor.monitorType === MonitorType.Proxmox ||
799
+ input.monitor.monitorType === MonitorType.VMware ||
793
800
  input.monitor.monitorType === MonitorType.Ceph ||
794
801
  input.monitor.monitorType === MonitorType.IoTDevice) {
795
802
  const metricMonitorResult = await MetricMonitorCriteria.isMonitorInstanceCriteriaFilterMet({
@@ -920,6 +927,10 @@ ${contextBlock}
920
927
  if (input.monitor.monitorType === MonitorType.Proxmox) {
921
928
  return MonitorCriteriaEvaluator.buildProxmoxRootCauseContext(input);
922
929
  }
930
+ // Handle VMware monitors with vCenter resource context
931
+ if (input.monitor.monitorType === MonitorType.VMware) {
932
+ return MonitorCriteriaEvaluator.buildVMwareRootCauseContext(input);
933
+ }
923
934
  // Handle Docker Swarm monitors with resource context
924
935
  if (input.monitor.monitorType === MonitorType.DockerSwarm) {
925
936
  return MonitorCriteriaEvaluator.buildDockerSwarmRootCauseContext(input);
@@ -972,6 +983,14 @@ ${contextBlock}
972
983
  if ((probeResponse === null || probeResponse === void 0 ? void 0 : probeResponse.isTimeout) !== undefined) {
973
984
  responseDetails.push(`- Timed Out: ${probeResponse.isTimeout ? "Yes" : "No"}`);
974
985
  }
986
+ /*
987
+ * How many times the probe actually tried matters when reading a failure:
988
+ * "tried once" and "tried three times" describe very different levels of
989
+ * confidence, and the count was already collected but never shown.
990
+ */
991
+ if ((probeResponse === null || probeResponse === void 0 ? void 0 : probeResponse.totalAttempts) !== undefined) {
992
+ responseDetails.push(`- Attempts: ${probeResponse.totalAttempts}`);
993
+ }
975
994
  // Add Request Failed Details if available
976
995
  if (probeResponse === null || probeResponse === void 0 ? void 0 : probeResponse.requestFailedDetails) {
977
996
  const requestFailedDetails = probeResponse.requestFailedDetails;
@@ -1020,13 +1039,23 @@ ${contextBlock}
1020
1039
  if (!ctx) {
1021
1040
  return null;
1022
1041
  }
1042
+ const unitHeuristicMetricName = MonitorCriteriaEvaluator.metricNameForUnitHeuristics({
1043
+ metricName: ctx.metricName,
1044
+ isFormula: ctx.isFormula,
1045
+ });
1023
1046
  const lines = [];
1024
1047
  lines.push(`- Metric: \`${ctx.metricName}\``);
1025
1048
  if (ctx.alias) {
1026
1049
  lines.push(`- Alias: \`${ctx.alias}\``);
1027
1050
  }
1028
- if (ctx.unit) {
1029
- lines.push(`- Unit: ${ctx.unit}`);
1051
+ /*
1052
+ * Spell the unit out — "Bytes", not the UCUM "By" the exporter wrote —
1053
+ * and drop the line entirely for units that name no dimension, so a
1054
+ * ratio metric no longer reports the bare "Unit: 1".
1055
+ */
1056
+ const readableUnit = MetricValueFormatter.getReadableUnit(ctx.unit, unitHeuristicMetricName);
1057
+ if (readableUnit) {
1058
+ lines.push(`- Unit: ${readableUnit}`);
1030
1059
  }
1031
1060
  if (ctx.aggregationType) {
1032
1061
  lines.push(`- Aggregation: ${ctx.aggregationType}`);
@@ -1044,8 +1073,12 @@ ${contextBlock}
1044
1073
  */
1045
1074
  if (ctx.components && ctx.components.length > 0) {
1046
1075
  const componentLines = ctx.components.map((component) => {
1047
- const unitSuffix = component.unit
1048
- ? ` — unit: ${component.unit}`
1076
+ const componentUnit = MetricValueFormatter.getReadableUnit(component.unit, MonitorCriteriaEvaluator.metricNameForUnitHeuristics({
1077
+ metricName: component.name,
1078
+ isFormula: component.isFormula,
1079
+ }));
1080
+ const unitSuffix = componentUnit
1081
+ ? ` — unit: ${componentUnit}`
1049
1082
  : "";
1050
1083
  const typeSuffix = component.isFormula ? " (formula)" : "";
1051
1084
  return ` - \`${component.alias}\` = \`${component.name}\`${typeSuffix}${unitSuffix}`;
@@ -1079,6 +1112,7 @@ ${contextBlock}
1079
1112
  totalSamples: ctx.totalSamplesInWindow,
1080
1113
  unit: ctx.unit,
1081
1114
  metricName: ctx.metricName,
1115
+ unitHeuristicMetricName: unitHeuristicMetricName,
1082
1116
  alias: ctx.alias,
1083
1117
  components: ctx.components || [],
1084
1118
  })}`);
@@ -1163,14 +1197,18 @@ ${contextBlock}
1163
1197
  "Alias",
1164
1198
  "Value",
1165
1199
  ];
1200
+ /*
1201
+ * The component columns carry no unit in their header any more. Each
1202
+ * cell now names the unit it actually landed on, and auto-scaling
1203
+ * means neighbouring rows can land on different ones — a header that
1204
+ * read "a (By)" over cells reading "900 KB" and "1.2 MB" states a
1205
+ * unit that neither row uses. The configured unit is not lost: the
1206
+ * Components bullet list above the table still records it.
1207
+ */
1166
1208
  for (const component of input.components) {
1167
- const label = component.unit
1168
- ? `${component.alias} (${component.unit})`
1169
- : component.alias;
1170
- headerCells.push(label);
1209
+ headerCells.push(component.alias);
1171
1210
  }
1172
1211
  headerCells.push(...attrKeys);
1173
- const unitSuffix = input.unit ? ` ${input.unit}` : "";
1174
1212
  const headerRow = `| ${headerCells.join(" | ")} |`;
1175
1213
  const dividerRow = `| ${headerCells
1176
1214
  .map(() => {
@@ -1187,17 +1225,33 @@ ${contextBlock}
1187
1225
  `\`${timestampIso}\``,
1188
1226
  metricCell,
1189
1227
  aliasCell,
1190
- `${MonitorCriteriaEvaluator.formatNumberForDisplay(s.value)}${unitSuffix}`,
1228
+ MetricValueFormatter.format({
1229
+ value: s.value,
1230
+ unit: input.unit,
1231
+ metricName: input.unitHeuristicMetricName,
1232
+ }),
1191
1233
  ];
1192
1234
  for (const component of input.components) {
1193
1235
  const match = (s.componentValues || []).find((cv) => {
1194
1236
  return cv.alias === component.alias;
1195
1237
  });
1196
1238
  if (match && typeof match.value === "number") {
1197
- const componentUnitSuffix = component.unit
1198
- ? ` ${component.unit}`
1199
- : "";
1200
- cells.push(`${MonitorCriteriaEvaluator.formatNumberForDisplay(match.value)}${componentUnitSuffix}`);
1239
+ /*
1240
+ * Each component keeps its OWN unit. Component values are
1241
+ * indexed off the per-query series and never go through the
1242
+ * sample→threshold-unit conversion the main Value column
1243
+ * does, so they are in the component's legendUnit — mixing
1244
+ * units across the row is deliberate, and is why every cell
1245
+ * has to say which one it is in.
1246
+ */
1247
+ cells.push(MetricValueFormatter.format({
1248
+ value: match.value,
1249
+ unit: component.unit,
1250
+ metricName: MonitorCriteriaEvaluator.metricNameForUnitHeuristics({
1251
+ metricName: component.name,
1252
+ isFormula: component.isFormula,
1253
+ }),
1254
+ }));
1201
1255
  }
1202
1256
  else {
1203
1257
  cells.push("-");
@@ -1233,15 +1287,6 @@ ${contextBlock}
1233
1287
  }
1234
1288
  return `${input.breachingCount} sample${input.breachingCount === 1 ? "" : "s"} breached the threshold.`;
1235
1289
  }
1236
- static formatNumberForDisplay(value) {
1237
- if (!Number.isFinite(value)) {
1238
- return String(value);
1239
- }
1240
- if (Number.isInteger(value)) {
1241
- return value.toString();
1242
- }
1243
- return Number(value.toFixed(2)).toString();
1244
- }
1245
1290
  static buildMetricExplorerDeepLink(input) {
1246
1291
  var _a;
1247
1292
  const projectId = (_a = input.monitor.projectId) === null || _a === void 0 ? void 0 : _a.toString();
@@ -1365,12 +1410,84 @@ ${contextBlock}
1365
1410
  dropped: queryParams.dropped,
1366
1411
  };
1367
1412
  }
1413
+ /**
1414
+ * The metric name to hand a unit heuristic, or undefined when there
1415
+ * isn't one.
1416
+ *
1417
+ * `MetricCriteriaContext.metricName` and `MetricComponent.name` are the
1418
+ * FORMULA EXPRESSION when the criteria (or the component) targets a
1419
+ * formula — MetricMonitorCriteria.buildContext falls back to
1420
+ * `metricFormula`. The only thing a name is used for downstream is
1421
+ * ValueFormatter.isFractionMetric, which asks whether the name ends in
1422
+ * `.utilization` / `_ratio` / `_percent` and multiplies a "1"-unit value
1423
+ * by 100 when it does. A formula written as `a / b_ratio` ends in
1424
+ * `_ratio` and would silently be reported at 100× its real value, so a
1425
+ * formula gets no name at all.
1426
+ */
1427
+ static metricNameForUnitHeuristics(input) {
1428
+ return input.isFormula ? undefined : input.metricName;
1429
+ }
1368
1430
  static formatScopeDroppedHint(dropped) {
1369
1431
  if (dropped.length === 0) {
1370
1432
  return "";
1371
1433
  }
1372
1434
  return ` _(scope partially carried — not applied: ${dropped.join(", ")})_`;
1373
1435
  }
1436
+ /**
1437
+ * The unit for a value in a per-platform "Affected Resources" table.
1438
+ *
1439
+ * These rows are NOT the same numbers as the criteria's breaching
1440
+ * samples: the worker collects them with a raw `MetricService.findBy`
1441
+ * scan and never runs them through MetricResultUnitConverter, so they
1442
+ * are in the metric's NATIVE unit while the criteria threshold was
1443
+ * compared in the user's chosen display unit. Labelling them with the
1444
+ * query's legendUnit would therefore attach a confidently wrong unit to
1445
+ * a correct number.
1446
+ *
1447
+ * The catalog is the right source precisely because it also declares
1448
+ * the native unit. It is the same lookup, on the same metric name, that
1449
+ * the worker already ran to resolve `metricFriendlyName`, so the unit
1450
+ * shown here can never disagree with the metric name shown beside it.
1451
+ */
1452
+ static getPlatformMetricUnit(input) {
1453
+ var _a, _b, _c, _d, _e;
1454
+ switch (input.platform) {
1455
+ case "kubernetes":
1456
+ return (_a = getKubernetesMetricByMetricName(input.metricName)) === null || _a === void 0 ? void 0 : _a.unit;
1457
+ case "proxmox":
1458
+ return (_b = getProxmoxMetricByMetricName(input.metricName)) === null || _b === void 0 ? void 0 : _b.unit;
1459
+ case "vmware":
1460
+ /*
1461
+ * The vcenter receiver's utilization metrics are already 0–100
1462
+ * percentages (unit "%"), never [0, 1] ratios — the catalog
1463
+ * says "%" and the formatter renders it as-is, so 92.5 reads
1464
+ * "92.50%" and never "9250.00%".
1465
+ */
1466
+ return (_c = getVMwareMetricByMetricName(input.metricName)) === null || _c === void 0 ? void 0 : _c.unit;
1467
+ case "dockerSwarm":
1468
+ return (_d = getDockerSwarmMetricByMetricName(input.metricName)) === null || _d === void 0 ? void 0 : _d.unit;
1469
+ case "ceph":
1470
+ return (_e = getCephMetricByMetricName(input.metricName)) === null || _e === void 0 ? void 0 : _e.unit;
1471
+ default:
1472
+ return undefined;
1473
+ }
1474
+ }
1475
+ /**
1476
+ * Render one cell of a platform breakdown table's Value column.
1477
+ *
1478
+ * Bold, because that is how these tables have always drawn the value —
1479
+ * it is the one number in the row a reader scans for.
1480
+ */
1481
+ static formatPlatformResourceValue(input) {
1482
+ return `**${MetricValueFormatter.format({
1483
+ value: input.value,
1484
+ unit: MonitorCriteriaEvaluator.getPlatformMetricUnit({
1485
+ platform: input.platform,
1486
+ metricName: input.metricName,
1487
+ }),
1488
+ metricName: input.metricName,
1489
+ })}**`;
1490
+ }
1374
1491
  static async buildKubernetesRootCauseContext(input) {
1375
1492
  var _a;
1376
1493
  const metricResponse = input.dataToProcess;
@@ -1466,7 +1583,11 @@ ${contextBlock}
1466
1583
  if (hasNode) {
1467
1584
  cells.push(resource.nodeName ? `\`${resource.nodeName}\`` : "-");
1468
1585
  }
1469
- cells.push(`**${resource.metricValue}**`);
1586
+ cells.push(MonitorCriteriaEvaluator.formatPlatformResourceValue({
1587
+ platform: "kubernetes",
1588
+ metricName: breakdown.metricName,
1589
+ value: resource.metricValue,
1590
+ }));
1470
1591
  resourceLines.push(`| ${cells.join(" | ")} |`);
1471
1592
  }
1472
1593
  if (sortedResources.length > 10) {
@@ -1730,7 +1851,204 @@ ${contextBlock}
1730
1851
  const nodeCell = resource.nodeName
1731
1852
  ? `\`${resource.nodeName}\``
1732
1853
  : "-";
1733
- resourceLines.push(`| ${resourceCell} | ${typeCell} | ${nodeCell} | **${resource.metricValue}** |`);
1854
+ resourceLines.push(`| ${resourceCell} | ${typeCell} | ${nodeCell} | ${MonitorCriteriaEvaluator.formatPlatformResourceValue({
1855
+ platform: "proxmox",
1856
+ metricName: breakdown.metricName,
1857
+ value: resource.metricValue,
1858
+ })} |`);
1859
+ }
1860
+ if (sortedResources.length > 10) {
1861
+ resourceLines.push(`\n*... and ${sortedResources.length - 10} more affected resources*`);
1862
+ }
1863
+ sections.push(`\n\n**Affected Resources** (${sortedResources.length} total)\n\n${resourceLines.join("\n")}`);
1864
+ renderedBreakdownTable = true;
1865
+ }
1866
+ }
1867
+ // Metric results summary (fallback context when no table rendered)
1868
+ if (!renderedBreakdownTable &&
1869
+ metricResponse.metricResult &&
1870
+ metricResponse.metricResult.length > 0) {
1871
+ const resultDetails = [];
1872
+ for (const result of metricResponse.metricResult) {
1873
+ if (result.data && result.data.length > 0) {
1874
+ resultDetails.push(`- ${result.data.length} metric data point(s) returned`);
1875
+ }
1876
+ }
1877
+ if (resultDetails.length > 0) {
1878
+ sections.push(`\n\n**Metric Summary**\n${resultDetails.join("\n")}`);
1879
+ }
1880
+ }
1881
+ return sections.length > 0 ? sections.join("\n") : null;
1882
+ }
1883
+ /*
1884
+ * Which vSphere object one VMware breakdown row describes, resolved
1885
+ * from the identity attributes the vcenter receiver stamped on it —
1886
+ * most specific first, in the same order the ingest inventory scan
1887
+ * uses, so the Kind column here and the inventory's `kind` never
1888
+ * disagree about the same series. A VM row carries its parent host
1889
+ * (and often a resource pool), so the VM check must run before the
1890
+ * host and pool checks.
1891
+ */
1892
+ static getVMwareAffectedResourceKind(resource) {
1893
+ if (resource.vmName || resource.vmId) {
1894
+ return "Virtual Machine";
1895
+ }
1896
+ if (resource.resourcePoolPath || resource.resourcePoolName) {
1897
+ return "Resource Pool";
1898
+ }
1899
+ if (resource.hostName) {
1900
+ return "Host";
1901
+ }
1902
+ if (resource.datastoreName) {
1903
+ return "Datastore";
1904
+ }
1905
+ if (resource.clusterName) {
1906
+ return "Cluster";
1907
+ }
1908
+ if (resource.datacenterName) {
1909
+ return "Datacenter";
1910
+ }
1911
+ return undefined;
1912
+ }
1913
+ static buildVMwareRootCauseContext(input) {
1914
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
1915
+ const metricResponse = input.dataToProcess;
1916
+ const breakdown = metricResponse.vmwareResourceBreakdown;
1917
+ const sections = [];
1918
+ // vCenter context
1919
+ const vmwareMonitor = (_a = input.monitorStep.data) === null || _a === void 0 ? void 0 : _a.vmwareMonitor;
1920
+ if (vmwareMonitor || breakdown) {
1921
+ const vcenterDetails = [];
1922
+ vcenterDetails.push(`- vCenter: ${(breakdown === null || breakdown === void 0 ? void 0 : breakdown.vcenterName) || (vmwareMonitor === null || vmwareMonitor === void 0 ? void 0 : vmwareMonitor.vcenterIdentifier) || "Unknown"}`);
1923
+ if (breakdown) {
1924
+ vcenterDetails.push(`- Metric: ${breakdown.metricFriendlyName} (\`${breakdown.metricName}\`)`);
1925
+ }
1926
+ else if (vmwareMonitor &&
1927
+ ((_c = (_b = vmwareMonitor.metricViewConfig) === null || _b === void 0 ? void 0 : _b.queryConfigs) === null || _c === void 0 ? void 0 : _c.length) > 0 &&
1928
+ vmwareMonitor.metricViewConfig.queryConfigs[0]) {
1929
+ const metricName = (_e = (_d = vmwareMonitor.metricViewConfig
1930
+ .queryConfigs[0].metricQueryData) === null || _d === void 0 ? void 0 : _d.filterData) === null || _e === void 0 ? void 0 : _e.metricName;
1931
+ if (metricName) {
1932
+ vcenterDetails.push(`- Metric: \`${metricName}\``);
1933
+ }
1934
+ }
1935
+ /*
1936
+ * The worker maps each resource filter to an equality on the
1937
+ * matching `resource.vcenter.*` attribute; surface the same
1938
+ * filters so the incident shows WHAT was scoped.
1939
+ */
1940
+ if ((_f = vmwareMonitor === null || vmwareMonitor === void 0 ? void 0 : vmwareMonitor.resourceFilters) === null || _f === void 0 ? void 0 : _f.datacenterName) {
1941
+ vcenterDetails.push(`- Datacenter Filter: ${vmwareMonitor.resourceFilters.datacenterName}`);
1942
+ }
1943
+ if ((_g = vmwareMonitor === null || vmwareMonitor === void 0 ? void 0 : vmwareMonitor.resourceFilters) === null || _g === void 0 ? void 0 : _g.clusterName) {
1944
+ vcenterDetails.push(`- Cluster Filter: ${vmwareMonitor.resourceFilters.clusterName}`);
1945
+ }
1946
+ if ((_h = vmwareMonitor === null || vmwareMonitor === void 0 ? void 0 : vmwareMonitor.resourceFilters) === null || _h === void 0 ? void 0 : _h.hostName) {
1947
+ vcenterDetails.push(`- Host Filter: ${vmwareMonitor.resourceFilters.hostName}`);
1948
+ }
1949
+ if ((_j = vmwareMonitor === null || vmwareMonitor === void 0 ? void 0 : vmwareMonitor.resourceFilters) === null || _j === void 0 ? void 0 : _j.vmName) {
1950
+ vcenterDetails.push(`- Virtual Machine Filter: ${vmwareMonitor.resourceFilters.vmName}`);
1951
+ }
1952
+ if ((_k = vmwareMonitor === null || vmwareMonitor === void 0 ? void 0 : vmwareMonitor.resourceFilters) === null || _k === void 0 ? void 0 : _k.datastoreName) {
1953
+ vcenterDetails.push(`- Datastore Filter: ${vmwareMonitor.resourceFilters.datastoreName}`);
1954
+ }
1955
+ if ((_l = vmwareMonitor === null || vmwareMonitor === void 0 ? void 0 : vmwareMonitor.resourceFilters) === null || _l === void 0 ? void 0 : _l.resourcePoolPath) {
1956
+ vcenterDetails.push(`- Resource Pool Filter: ${vmwareMonitor.resourceFilters.resourcePoolPath}`);
1957
+ }
1958
+ sections.push(`**vCenter Details**\n${vcenterDetails.join("\n")}`);
1959
+ }
1960
+ // Affected resources (Resource / Kind / Host / Cluster / Value)
1961
+ let renderedBreakdownTable = false;
1962
+ if (breakdown && breakdown.affectedResources.length > 0) {
1963
+ /*
1964
+ * K8s/Proxmox-parity render: drop zero-value rows, worst (highest)
1965
+ * first, top 10. For count metrics filtered to an unhealthy state
1966
+ * (`vcenter.datacenter.host.count{status=red}`) the non-zero rows
1967
+ * ARE the objects with a problem, so the table reads correctly;
1968
+ * a zero row means "nothing in that state" and adds nothing. The
1969
+ * per-series criteria evaluation is what actually alerts; this
1970
+ * table is supplementary context only.
1971
+ */
1972
+ const sortedResources = [
1973
+ ...breakdown.affectedResources,
1974
+ ]
1975
+ .filter((r) => {
1976
+ return r.metricValue > 0;
1977
+ })
1978
+ .sort((a, b) => {
1979
+ return b.metricValue - a.metricValue;
1980
+ });
1981
+ /*
1982
+ * Skip the table when no row carries any identity attribute — it
1983
+ * would add nothing. Every vcenter-receiver series carries at
1984
+ * least `vcenter.datacenter.name`, so this only trips on a
1985
+ * breakdown the worker could not attribute at all.
1986
+ */
1987
+ const hasIdentity = sortedResources.some((r) => {
1988
+ return Boolean(MonitorCriteriaEvaluator.getVMwareAffectedResourceKind(r));
1989
+ });
1990
+ if (sortedResources.length > 0 && hasIdentity) {
1991
+ const resourcesToShow = sortedResources.slice(0, 10);
1992
+ const resourceLines = [];
1993
+ resourceLines.push(`| Resource | Kind | Host | Cluster | Value |`);
1994
+ resourceLines.push(`| --- | --- | --- | --- | --- |`);
1995
+ for (const resource of resourcesToShow) {
1996
+ const kind = MonitorCriteriaEvaluator.getVMwareAffectedResourceKind(resource);
1997
+ let resourceCell = "-";
1998
+ let hostCell = "-";
1999
+ switch (kind) {
2000
+ case "Virtual Machine":
2001
+ /*
2002
+ * The VM's display name, falling back to its instance
2003
+ * UUID (`vcenter.vm.id`) when the receiver stamped no
2004
+ * name. The Host column carries the ESXi host the VM is
2005
+ * running on.
2006
+ */
2007
+ resourceCell = resource.vmName
2008
+ ? `\`${resource.vmName}\``
2009
+ : `\`${resource.vmId}\``;
2010
+ hostCell = resource.hostName ? `\`${resource.hostName}\`` : "-";
2011
+ break;
2012
+ case "Resource Pool":
2013
+ /*
2014
+ * Pool names are only unique within a parent, so the
2015
+ * inventory path is shown next to the name. The Host
2016
+ * column is the owner host for a pool on a standalone
2017
+ * ESXi host (pools under a cluster show the cluster).
2018
+ */
2019
+ if (resource.resourcePoolName && resource.resourcePoolPath) {
2020
+ resourceCell = `\`${resource.resourcePoolName}\` (\`${resource.resourcePoolPath}\`)`;
2021
+ }
2022
+ else {
2023
+ resourceCell = `\`${resource.resourcePoolPath || resource.resourcePoolName}\``;
2024
+ }
2025
+ hostCell = resource.hostName ? `\`${resource.hostName}\`` : "-";
2026
+ break;
2027
+ case "Host":
2028
+ // The host IS the resource; repeating it in the Host column adds nothing.
2029
+ resourceCell = `\`${resource.hostName}\``;
2030
+ break;
2031
+ case "Datastore":
2032
+ resourceCell = `\`${resource.datastoreName}\``;
2033
+ break;
2034
+ case "Cluster":
2035
+ resourceCell = `\`${resource.clusterName}\``;
2036
+ break;
2037
+ case "Datacenter":
2038
+ resourceCell = `\`${resource.datacenterName}\``;
2039
+ break;
2040
+ default:
2041
+ break;
2042
+ }
2043
+ const kindCell = kind || "-";
2044
+ const clusterCell = kind !== "Cluster" && resource.clusterName
2045
+ ? `\`${resource.clusterName}\``
2046
+ : "-";
2047
+ resourceLines.push(`| ${resourceCell} | ${kindCell} | ${hostCell} | ${clusterCell} | ${MonitorCriteriaEvaluator.formatPlatformResourceValue({
2048
+ platform: "vmware",
2049
+ metricName: breakdown.metricName,
2050
+ value: resource.metricValue,
2051
+ })} |`);
1734
2052
  }
1735
2053
  if (sortedResources.length > 10) {
1736
2054
  resourceLines.push(`\n*... and ${sortedResources.length - 10} more affected resources*`);
@@ -1832,7 +2150,11 @@ ${contextBlock}
1832
2150
  const nodeCell = resource.nodeName
1833
2151
  ? `\`${resource.nodeName}\``
1834
2152
  : "-";
1835
- resourceLines.push(`| ${taskCell} | ${serviceCell} | ${nodeCell} | **${resource.metricValue}** |`);
2153
+ resourceLines.push(`| ${taskCell} | ${serviceCell} | ${nodeCell} | ${MonitorCriteriaEvaluator.formatPlatformResourceValue({
2154
+ platform: "dockerSwarm",
2155
+ metricName: breakdown.metricName,
2156
+ value: resource.metricValue,
2157
+ })} |`);
1836
2158
  }
1837
2159
  if (sortedResources.length > 10) {
1838
2160
  resourceLines.push(`\n*... and ${sortedResources.length - 10} more affected tasks*`);
@@ -1989,7 +2311,11 @@ ${contextBlock}
1989
2311
  const hostCell = resource.hostname
1990
2312
  ? `\`${resource.hostname}\``
1991
2313
  : "-";
1992
- resourceLines.push(`| ${daemonCell} | ${poolCell} | ${hostCell} | **${resource.metricValue}** |`);
2314
+ resourceLines.push(`| ${daemonCell} | ${poolCell} | ${hostCell} | ${MonitorCriteriaEvaluator.formatPlatformResourceValue({
2315
+ platform: "ceph",
2316
+ metricName: breakdown.metricName,
2317
+ value: resource.metricValue,
2318
+ })} |`);
1993
2319
  }
1994
2320
  if (sortedResources.length > 10) {
1995
2321
  resourceLines.push(`\n*... and ${sortedResources.length - 10} more affected resources*`);
@@ -2018,11 +2344,31 @@ ${contextBlock}
2018
2344
  const { breakdown, topResource } = input;
2019
2345
  const metricName = breakdown.metricName;
2020
2346
  const lines = [];
2347
+ /*
2348
+ * The top resource's value, in the unit the catalog says the metric
2349
+ * is actually reported in.
2350
+ *
2351
+ * The three "is at N%" sentences below used to hardcode that percent
2352
+ * sign. Two of the three metrics they fire for are not percentages at
2353
+ * all — k8s.node.memory.usage and k8s.node.filesystem.usage are
2354
+ * `bytes`, so a node holding 8 GiB reported "memory usage is at
2355
+ * 8589934592.0%" — and the third, k8s.node.cpu.utilization, is the
2356
+ * kubeletstats cores gauge that four other places in this repo warn
2357
+ * is misnamed, so 1.4 cores in use read as "1.4% CPU utilization".
2358
+ */
2359
+ const topResourceValue = MetricValueFormatter.format({
2360
+ value: topResource.metricValue,
2361
+ unit: MonitorCriteriaEvaluator.getPlatformMetricUnit({
2362
+ platform: "kubernetes",
2363
+ metricName: metricName,
2364
+ }),
2365
+ metricName: metricName,
2366
+ });
2021
2367
  if (metricName === "k8s.container.restarts" ||
2022
2368
  metricName.includes("restart")) {
2023
2369
  lines.push(`Container restart count is elevated, indicating a potential CrashLoopBackOff condition.`);
2024
2370
  if (topResource.containerName) {
2025
- lines.push(`The container \`${topResource.containerName}\` in pod \`${topResource.podName || "unknown"}\` has restarted **${topResource.metricValue}** times.`);
2371
+ lines.push(`The container \`${topResource.containerName}\` in pod \`${topResource.podName || "unknown"}\` has restarted **${topResourceValue}** times.`);
2026
2372
  }
2027
2373
  lines.push(`Common causes: application crash on startup, misconfigured environment variables, missing dependencies, OOM (Out of Memory) kills, failed health checks, or missing config maps/secrets.`);
2028
2374
  lines.push(`Recommended actions: Check container logs with \`kubectl logs ${topResource.podName || "<pod-name>"} -c ${topResource.containerName || "<container>"} --previous\` and inspect events with \`kubectl describe pod ${topResource.podName || "<pod-name>"}\`.`);
@@ -2048,7 +2394,7 @@ ${contextBlock}
2048
2394
  (metricName.includes("node") && metricName.includes("condition"))) {
2049
2395
  lines.push(`One or more nodes have transitioned to a NotReady state.`);
2050
2396
  if (topResource.nodeName) {
2051
- lines.push(`Node \`${topResource.nodeName}\` is reporting NotReady (value: ${topResource.metricValue}).`);
2397
+ lines.push(`Node \`${topResource.nodeName}\` is reporting NotReady (value: ${topResourceValue}).`);
2052
2398
  }
2053
2399
  lines.push(`Common causes: kubelet process failure, node resource exhaustion (disk pressure, memory pressure, PID pressure), network connectivity issues, or underlying VM/hardware failure.`);
2054
2400
  lines.push(`Recommended actions: Check node conditions with \`kubectl describe node ${topResource.nodeName || "<node-name>"}\` and verify kubelet status on the node.`);
@@ -2068,7 +2414,7 @@ ${contextBlock}
2068
2414
  metricName.includes("utilization"))) {
2069
2415
  lines.push(`Node CPU utilization has exceeded the configured threshold.`);
2070
2416
  if (topResource.nodeName) {
2071
- lines.push(`Node \`${topResource.nodeName}\` is at **${topResource.metricValue.toFixed(1)}%** CPU utilization.`);
2417
+ lines.push(`Node \`${topResource.nodeName}\` is at **${topResourceValue}** CPU utilization.`);
2072
2418
  }
2073
2419
  lines.push(`Common causes: resource-intensive workloads, insufficient resource limits on pods, noisy neighbor pods consuming excessive CPU, or insufficient cluster capacity.`);
2074
2420
  lines.push(`Recommended actions: Identify top CPU consumers with \`kubectl top pods --all-namespaces --sort-by=cpu\` and consider scaling the cluster or adjusting pod resource limits.`);
@@ -2080,7 +2426,7 @@ ${contextBlock}
2080
2426
  metricName.includes("usage"))) {
2081
2427
  lines.push(`Node memory utilization has exceeded the configured threshold.`);
2082
2428
  if (topResource.nodeName) {
2083
- lines.push(`Node \`${topResource.nodeName}\` memory usage is at **${topResource.metricValue.toFixed(1)}%**.`);
2429
+ lines.push(`Node \`${topResource.nodeName}\` memory usage is at **${topResourceValue}**.`);
2084
2430
  }
2085
2431
  lines.push(`Common causes: memory leaks in applications, insufficient memory limits on pods, too many pods scheduled on the node, or growing dataset sizes.`);
2086
2432
  lines.push(`Recommended actions: Check memory consumers with \`kubectl top pods --all-namespaces --sort-by=memory\` and review pod memory limits. Consider scaling the cluster or adding nodes with more memory.`);
@@ -2089,7 +2435,7 @@ ${contextBlock}
2089
2435
  metricName.includes("unavailable")) {
2090
2436
  lines.push(`Deployment has unavailable replicas, indicating a mismatch between desired and available replicas.`);
2091
2437
  if (topResource.workloadName) {
2092
- lines.push(`${topResource.workloadType || "Deployment"} \`${topResource.workloadName}\` has **${topResource.metricValue}** unavailable replica(s).`);
2438
+ lines.push(`${topResource.workloadType || "Deployment"} \`${topResource.workloadName}\` has **${topResourceValue}** unavailable replica(s).`);
2093
2439
  }
2094
2440
  lines.push(`Common causes: failed rolling update, image pull errors (wrong image tag or missing registry credentials), pod crash loops, insufficient cluster resources to schedule new pods, or PodDisruptionBudget blocking updates.`);
2095
2441
  lines.push(`Recommended actions: Check deployment rollout status with \`kubectl rollout status deployment/${topResource.workloadName || "<deployment>"}\` and inspect pod events.`);
@@ -2098,7 +2444,7 @@ ${contextBlock}
2098
2444
  (metricName.includes("job") && metricName.includes("fail"))) {
2099
2445
  lines.push(`Kubernetes Job has failed pods.`);
2100
2446
  if (topResource.workloadName) {
2101
- lines.push(`Job \`${topResource.workloadName}\` has **${topResource.metricValue}** failed pod(s).`);
2447
+ lines.push(`Job \`${topResource.workloadName}\` has **${topResourceValue}** failed pod(s).`);
2102
2448
  }
2103
2449
  lines.push(`Common causes: application error or non-zero exit code, resource limits exceeded (OOMKilled), misconfigured command or arguments, missing environment variables, or timeout exceeded.`);
2104
2450
  lines.push(`Recommended actions: Check job status with \`kubectl describe job ${topResource.workloadName || "<job-name>"}\` and review pod logs for the failed pod(s).`);
@@ -2108,7 +2454,7 @@ ${contextBlock}
2108
2454
  metricName.includes("filesystem")) {
2109
2455
  lines.push(`Node disk/filesystem usage has exceeded the configured threshold.`);
2110
2456
  if (topResource.nodeName) {
2111
- lines.push(`Node \`${topResource.nodeName}\` filesystem usage is at **${topResource.metricValue.toFixed(1)}%**.`);
2457
+ lines.push(`Node \`${topResource.nodeName}\` filesystem usage is at **${topResourceValue}**.`);
2112
2458
  }
2113
2459
  lines.push(`Common causes: container image layers consuming disk space, excessive logging, large emptyDir volumes, or accumulation of unused container images.`);
2114
2460
  lines.push(`Recommended actions: Clean up unused images with \`docker system prune\` or \`crictl rmi --prune\`, check for large log files, and review PersistentVolumeClaim usage.`);
@@ -2117,7 +2463,7 @@ ${contextBlock}
2117
2463
  metricName.includes("daemonset")) {
2118
2464
  lines.push(`DaemonSet has misscheduled or unavailable nodes.`);
2119
2465
  if (topResource.workloadName) {
2120
- lines.push(`DaemonSet \`${topResource.workloadName}\` has **${topResource.metricValue}** misscheduled node(s).`);
2466
+ lines.push(`DaemonSet \`${topResource.workloadName}\` has **${topResourceValue}** misscheduled node(s).`);
2121
2467
  }
2122
2468
  lines.push(`Common causes: node taints preventing scheduling, incorrect node selectors, or node affinity rules excluding certain nodes.`);
2123
2469
  lines.push(`Recommended actions: Check DaemonSet status with \`kubectl describe daemonset ${topResource.workloadName || "<daemonset>"}\` and verify node labels and taints.`);