@oneuptime/common 13.0.0 → 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 (734) 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/GoogleSecOpsConnection.ts +57 -7
  5. package/Models/DatabaseModels/GoogleSecOpsConnectionRun.ts +263 -0
  6. package/Models/DatabaseModels/Incident.ts +55 -0
  7. package/Models/DatabaseModels/Index.ts +16 -0
  8. package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -0
  9. package/Models/DatabaseModels/User.ts +51 -2
  10. package/Models/DatabaseModels/UserNotificationEmailRollupItem.ts +43 -2
  11. package/Models/DatabaseModels/UserWebAuthn.ts +17 -0
  12. package/Models/DatabaseModels/VMwareResource.ts +1149 -0
  13. package/Models/DatabaseModels/VMwareVCenter.ts +1122 -0
  14. package/Models/DatabaseModels/VMwareVCenterFeed.ts +625 -0
  15. package/Models/DatabaseModels/VMwareVCenterLabelRule.ts +514 -0
  16. package/Models/DatabaseModels/VMwareVCenterOwnerRule.ts +596 -0
  17. package/Models/DatabaseModels/VMwareVCenterOwnerTeam.ts +485 -0
  18. package/Models/DatabaseModels/VMwareVCenterOwnerUser.ts +484 -0
  19. package/Models/DatabaseModels/WorkflowVariable.ts +22 -1
  20. package/Server/API/AIAgentDataAPI.ts +79 -4
  21. package/Server/API/AIAgentGitHubAPI.ts +523 -0
  22. package/Server/API/AIChatAPI.ts +20 -1
  23. package/Server/API/BillingAPI.ts +33 -0
  24. package/Server/API/DashboardAPI.ts +10 -0
  25. package/Server/API/GitHubAPI.ts +47 -5
  26. package/Server/API/GoogleSecOpsConnectionAPI.ts +79 -0
  27. package/Server/API/UserWebAuthnAPI.ts +21 -1
  28. package/Server/API/VMwareResourceAPI.ts +143 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.ts +68 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.ts +26 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.ts +636 -0
  32. package/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.ts +47 -0
  33. package/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.ts +17 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.ts +83 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
  36. package/Server/Middleware/IdentityRateLimit.ts +101 -0
  37. package/Server/Services/AIRunService.ts +13 -0
  38. package/Server/Services/BillingPaymentMethodService.ts +99 -28
  39. package/Server/Services/BillingService.ts +287 -20
  40. package/Server/Services/CloudResourceInstanceService.ts +70 -0
  41. package/Server/Services/ExceptionAggregationService.ts +1 -0
  42. package/Server/Services/GoogleSecOpsConnectionRunService.ts +10 -0
  43. package/Server/Services/GoogleSecOpsConnectionService.ts +12 -0
  44. package/Server/Services/Index.ts +16 -0
  45. package/Server/Services/LogAggregationService.ts +1 -0
  46. package/Server/Services/MetricAggregationService.ts +1 -0
  47. package/Server/Services/MobilePasskeyLoginService.ts +216 -0
  48. package/Server/Services/MonitorService.ts +51 -1
  49. package/Server/Services/MonitorTemplateService.ts +91 -29
  50. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +132 -1
  51. package/Server/Services/NetworkDeviceAutoImportRuleService.ts +176 -2
  52. package/Server/Services/OpenTelemetryIngestService.ts +17 -0
  53. package/Server/Services/PayAsYouGoBillingService.ts +446 -0
  54. package/Server/Services/ProjectService.ts +46 -2
  55. package/Server/Services/ServerlessFunctionInstanceService.ts +71 -0
  56. package/Server/Services/TeamMemberService.ts +96 -36
  57. package/Server/Services/TelemetryIngestionKeyService.ts +80 -10
  58. package/Server/Services/TelemetryUsageBillingService.ts +95 -5
  59. package/Server/Services/TraceAggregationService.ts +5 -4
  60. package/Server/Services/UserWebAuthnService.ts +592 -133
  61. package/Server/Services/VMwareResourceService.ts +648 -0
  62. package/Server/Services/VMwareVCenterFeedService.ts +99 -0
  63. package/Server/Services/VMwareVCenterLabelRuleEngineService.ts +240 -0
  64. package/Server/Services/VMwareVCenterLabelRuleService.ts +14 -0
  65. package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +252 -0
  66. package/Server/Services/VMwareVCenterOwnerRuleService.ts +14 -0
  67. package/Server/Services/VMwareVCenterOwnerTeamService.ts +139 -0
  68. package/Server/Services/VMwareVCenterOwnerUserService.ts +133 -0
  69. package/Server/Services/VMwareVCenterService.ts +629 -0
  70. package/Server/Services/WorkflowVariableService.ts +203 -0
  71. package/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.ts +17 -0
  72. package/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.ts +31 -1
  73. package/Server/Utils/CodeRepository/GitHub/GitHub.ts +7 -0
  74. package/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.ts +341 -0
  75. package/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.ts +274 -0
  76. package/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.ts +375 -0
  77. package/Server/Utils/CodeRepository/GitHub/GitHubConversation.ts +846 -0
  78. package/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.ts +360 -0
  79. package/Server/Utils/CodeRepository/GitHub/GitHubRunReply.ts +421 -0
  80. package/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.ts +140 -0
  81. package/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.ts +906 -0
  82. package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +143 -0
  83. package/Server/Utils/DataSource/EgressGuard.ts +160 -15
  84. package/Server/Utils/Database/TruncateColumnValue.ts +1 -1
  85. package/Server/Utils/EmailRollup/EmailRollupFlushRunner.ts +2 -0
  86. package/Server/Utils/EmailRollup/EmailRollupRenderer.ts +33 -0
  87. package/Server/Utils/EmailRollup/EmailRollupWriter.ts +44 -0
  88. package/Server/Utils/LogRedaction.ts +2 -1
  89. package/Server/Utils/Monitor/MonitorAlert.ts +1 -1
  90. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +302 -3
  91. package/Server/Utils/Monitor/MonitorMaintenanceSuppression.ts +26 -4
  92. package/Server/Utils/Monitor/MonitorResourceContext.ts +5 -3
  93. package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +14 -0
  94. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +1 -0
  95. package/Server/Utils/Monitor/SeriesResourceLabels.ts +26 -0
  96. package/Server/Utils/Monitor/SeriesResourceLinker.ts +28 -5
  97. package/Server/Utils/ResourceFeed/ResourceFeedUtil.ts +3 -3
  98. package/Server/Utils/SecurityEvent/ConnectorErrorMessage.ts +14 -9
  99. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +116 -84
  100. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +594 -195
  101. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.ts +466 -0
  102. package/Server/Utils/Telemetry/EntityRegistry.ts +5 -0
  103. package/Server/Utils/Telemetry/ResourceHeartbeat.ts +2 -1
  104. package/Server/Utils/Telemetry/TelemetryEntity.ts +181 -1
  105. package/Server/Utils/Telemetry/VMwareSnapshotScan.ts +1352 -0
  106. package/Tests/App/Accounts/LoginPasskey.test.tsx +529 -0
  107. package/Tests/App/Accounts/MobilePasskey.test.tsx +620 -0
  108. package/Tests/App/Accounts/PasswordRequirements.test.tsx +254 -0
  109. package/Tests/App/Accounts/RegisterPassword.test.tsx +553 -0
  110. package/Tests/App/Dashboard/AskAiAvailability.test.ts +224 -0
  111. package/Tests/App/Dashboard/AskAiDisabled.test.tsx +432 -0
  112. package/Tests/App/Dashboard/BackupCodes.test.tsx +414 -0
  113. package/Tests/App/Dashboard/BillingPaidUsageFlow.test.tsx +530 -0
  114. package/Tests/App/Dashboard/BillingPaymentMethodForm.test.tsx +195 -0
  115. package/Tests/App/Dashboard/BreadcrumbCoverage.test.tsx +199 -0
  116. package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +198 -0
  117. package/Tests/App/Dashboard/CloudDocumentationMarkdown.test.ts +215 -0
  118. package/Tests/App/Dashboard/CloudFleetSummary.test.ts +183 -0
  119. package/Tests/App/Dashboard/CloudFleetSummaryComponent.test.tsx +248 -0
  120. package/Tests/App/Dashboard/CloudResourceTelemetryScope.test.ts +215 -0
  121. package/Tests/App/Dashboard/CriteriaFilterDefaults.test.ts +3 -0
  122. package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +441 -0
  123. package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +458 -0
  124. package/Tests/App/Dashboard/DashboardToolbarPopupLayering.test.tsx +566 -0
  125. package/Tests/App/Dashboard/DiscoveryScanLivePage.test.tsx +376 -0
  126. package/Tests/App/Dashboard/DiscoveryScanLiveUpdates.test.tsx +642 -0
  127. package/Tests/App/Dashboard/DiscoveryScanProgress.test.tsx +267 -0
  128. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +69 -231
  129. package/Tests/App/Dashboard/GoogleSecOpsConnectionsErrors.test.tsx +244 -0
  130. package/Tests/App/Dashboard/GoogleSecOpsDiagnostics.test.tsx +724 -0
  131. package/Tests/App/Dashboard/MonitorTemplateSyncFields.test.tsx +539 -0
  132. package/Tests/App/Dashboard/OnCallLayerCardOverrides.test.tsx +24 -7
  133. package/Tests/App/Dashboard/OnCallOverridePresentation.test.ts +496 -0
  134. package/Tests/App/Dashboard/OnCallScheduleOverrideClarity.test.tsx +677 -0
  135. package/Tests/App/Dashboard/OnCallSchedulePreviewOverrides.test.tsx +31 -3
  136. package/Tests/App/Dashboard/PaidUsageConsent.test.tsx +180 -0
  137. package/Tests/App/Dashboard/PasskeySettings.test.tsx +1220 -0
  138. package/Tests/App/Dashboard/PayAsYouGoConsentGate.test.tsx +176 -275
  139. package/Tests/App/Dashboard/PayAsYouGoNotices.test.tsx +380 -233
  140. package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +3 -23
  141. package/Tests/App/Dashboard/ResourceFeed.test.tsx +1 -0
  142. package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +8 -1
  143. package/Tests/App/Dashboard/TwoFactorStatus.test.tsx +260 -0
  144. package/Tests/App/Dashboard/VMwareDashboardWidgets.test.ts +573 -0
  145. package/Tests/App/Dashboard/WidgetCatalog.test.ts +2 -0
  146. package/Tests/App/Dashboard/WorkflowVariablesTable.test.tsx +768 -0
  147. package/Tests/App/StatusPage/StatusPageOverviewLiveAndSearch.test.tsx +532 -40
  148. package/Tests/App/StatusPage/StatusPageResourceSearchBox.test.tsx +19 -2
  149. package/Tests/Fixtures/MobilePasskeyUser.json +8 -0
  150. package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +25 -6
  151. package/Tests/Models/DatabaseModels/VMwareModels.test.ts +1134 -0
  152. package/Tests/Models/RunnerVersionLabel.test.ts +4 -2
  153. package/Tests/Server/API/AIChatProvidersAIEnabled.test.ts +259 -0
  154. package/Tests/Server/API/AIChatRouteAuthorization.test.ts +31 -2
  155. package/Tests/Server/API/BillingPayAsYouGoStatus.test.ts +116 -0
  156. package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +29 -1
  157. package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +13 -2
  158. package/Tests/Server/API/GitHubWebhookSignature.test.ts +368 -0
  159. package/Tests/Server/API/GoogleSecOpsConnectionAPI.test.ts +248 -0
  160. package/Tests/Server/API/UserWebAuthnAuthenticationOptionsRoute.test.ts +330 -0
  161. package/Tests/Server/API/UserWebAuthnPasskeyAPI.test.ts +172 -0
  162. package/Tests/Server/API/VMwareResourceAPI.test.ts +546 -0
  163. package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupMetadataMigration.test.ts +85 -0
  164. package/Tests/Server/Infrastructure/Postgres/UserNotificationEmailRollupTableMigration.test.ts +34 -3
  165. package/Tests/Server/Middleware/PasskeyRateLimit.test.ts +141 -0
  166. package/Tests/Server/Services/AutoImportRuleRearmRecentScans.test.ts +343 -0
  167. package/Tests/Server/Services/AutoImportRuleWriteRearmsScans.test.ts +381 -0
  168. package/Tests/Server/Services/BillingPaymentMethodServiceSync.test.ts +175 -0
  169. package/Tests/Server/Services/BillingService.test.ts +26 -11
  170. package/Tests/Server/Services/BillingServiceMeteredPaymentAuthorization.test.ts +245 -0
  171. package/Tests/Server/Services/BillingServicePaymentMethodReads.test.ts +362 -0
  172. package/Tests/Server/Services/CloudResourceInstanceStalePrune.test.ts +188 -0
  173. package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +16 -2
  174. package/Tests/Server/Services/GoogleSecOpsDiagnosticsModel.test.ts +153 -0
  175. package/Tests/Server/Services/HookFreeWriteLengthClamp.test.ts +13 -0
  176. package/Tests/Server/Services/InventoryItemPromotionGate.test.ts +5 -0
  177. package/Tests/Server/Services/InventoryUpsertSchemaParity.test.ts +36 -0
  178. package/Tests/Server/Services/InventoryUpsertTruncationGuard.test.ts +151 -0
  179. package/Tests/Server/Services/MobilePasskeyLoginIntegration.test.ts +231 -0
  180. package/Tests/Server/Services/MobilePasskeyLoginService.test.ts +315 -0
  181. package/Tests/Server/Services/MonitorPayAsYouGoBilling.test.ts +302 -0
  182. package/Tests/Server/Services/MonitorTemplateServiceFieldSync.test.ts +994 -0
  183. package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +22 -0
  184. package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +7 -1
  185. package/Tests/Server/Services/PayAsYouGoBillingService.test.ts +857 -0
  186. package/Tests/Server/Services/PayAsYouGoStripeRateLimitBudget.test.ts +379 -0
  187. package/Tests/Server/Services/ProjectServiceExtendTrial.test.ts +99 -1
  188. package/Tests/Server/Services/ProjectServiceSubscriptionSeats.test.ts +134 -0
  189. package/Tests/Server/Services/ResourceFeedServices.test.ts +3 -2
  190. package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +32 -6
  191. package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +363 -175
  192. package/Tests/Server/Services/ServerlessFunctionInstanceStalePrune.test.ts +200 -0
  193. package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +3 -0
  194. package/Tests/Server/Services/TeamMemberBillingSeatSync.test.ts +762 -0
  195. package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +3 -0
  196. package/Tests/Server/Services/TelemetryIngestionKeyPolicyResolution.test.ts +72 -0
  197. package/Tests/Server/Services/TelemetryIngestionKeyValidation.test.ts +17 -4
  198. package/Tests/Server/Services/TelemetryPayAsYouGoBilling.test.ts +355 -0
  199. package/Tests/Server/Services/TraceAnalyticsResourceDisplayNames.test.ts +41 -4
  200. package/Tests/Server/Services/UserNotificationEmailRollupModels.test.ts +37 -0
  201. package/Tests/Server/Services/UserWebAuthnPasskeyIntegration.test.ts +401 -0
  202. package/Tests/Server/Services/UserWebAuthnPasskeyService.test.ts +769 -0
  203. package/Tests/Server/Services/UserWebAuthnUserVerification.test.ts +649 -0
  204. package/Tests/Server/Services/VMwareResourceService.test.ts +945 -0
  205. package/Tests/Server/Services/VMwareVCenterService.test.ts +722 -0
  206. package/Tests/Server/Services/WorkflowVariableRenameUniqueness.test.ts +842 -0
  207. package/Tests/Server/TestingUtils/PasskeyHttpIntegration.ts +102 -0
  208. package/Tests/Server/TestingUtils/SecurityKey.ts +464 -0
  209. package/Tests/Server/TestingUtils/WebAuthnServiceMocks.ts +60 -0
  210. package/Tests/Server/Types/Billing/PayAsYouGoMeteredAuthorization.test.ts +573 -0
  211. package/Tests/Server/Types/Database/Permissions/ProjectCustomerSupportAccessColumn.test.ts +261 -0
  212. package/Tests/Server/Types/Database/Permissions/WorkflowVariableColumnPermission.test.ts +95 -0
  213. package/Tests/Server/Utils/CodeRepository/GitHubAgentTaskTrigger.test.ts +2101 -0
  214. package/Tests/Server/Utils/CodeRepository/GitHubCommandAuthorizer.test.ts +883 -0
  215. package/Tests/Server/Utils/CodeRepository/GitHubCommandParser.test.ts +1474 -0
  216. package/Tests/Server/Utils/CodeRepository/GitHubConversation.test.ts +1526 -0
  217. package/Tests/Server/Utils/CodeRepository/GitHubReplyComposer.test.ts +1389 -0
  218. package/Tests/Server/Utils/CodeRepository/GitHubRunReply.test.ts +1707 -0
  219. package/Tests/Server/Utils/CodeRepository/GitHubWebhookHandler.test.ts +2202 -0
  220. package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +345 -0
  221. package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +896 -0
  222. package/Tests/Server/Utils/EmailRollup/EmailRollupMetadataIntegration.test.ts +246 -0
  223. package/Tests/Server/Utils/EmailRollup/EmailRollupRenderer.test.ts +299 -1
  224. package/Tests/Server/Utils/EmailRollup/EmailRollupTestHarness.ts +6 -0
  225. package/Tests/Server/Utils/EmailRollup/EmailRollupWriter.test.ts +185 -0
  226. package/Tests/Server/Utils/LogRedaction.test.ts +33 -0
  227. package/Tests/Server/Utils/Monitor/CapturedMetricAttributeUtil.test.ts +2 -1
  228. package/Tests/Server/Utils/Monitor/Criteria/TelemetryStepMetricAlias.test.ts +10 -0
  229. package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +66 -1
  230. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +362 -0
  231. package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +1 -0
  232. package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +60 -1
  233. package/Tests/Server/Utils/Monitor/MonitorMaintenanceSuppression.test.ts +60 -0
  234. package/Tests/Server/Utils/Monitor/MonitorRootCauseTargetResolution.test.ts +423 -0
  235. package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +6 -0
  236. package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +1 -0
  237. package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1 -0
  238. package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +46 -2
  239. package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +81 -45
  240. package/Tests/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.test.ts +711 -0
  241. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClickhouseIntegration.test.ts +223 -0
  242. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +69 -1
  243. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsDiagnostics.test.ts +838 -0
  244. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsErrorHandling.test.ts +241 -28
  245. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsHttpIntegration.test.ts +651 -0
  246. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +11 -0
  247. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +13 -12
  248. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerHardening.test.ts +112 -127
  249. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsRequestContract.test.ts +12 -18
  250. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsResponseParsing.test.ts +43 -0
  251. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +580 -0
  252. package/Tests/Server/Utils/Telemetry/VMwareSnapshotScan.test.ts +1748 -0
  253. package/Tests/Types/Cloud/CloudPlatform.test.ts +574 -0
  254. package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +2 -0
  255. package/Tests/Types/Monitor/MonitorCriteriaMetricVariables.test.ts +9 -0
  256. package/Tests/Types/Monitor/MonitorStepDefaultTelemetryConfig.test.ts +1 -0
  257. package/Tests/Types/Monitor/MonitorStepInfraMonitorUtils.test.ts +53 -8
  258. package/Tests/Types/Monitor/MonitorStepInfrastructureMonitors.test.ts +97 -0
  259. package/Tests/Types/Monitor/MonitorStepMetricViewConfigUtil.test.ts +1 -0
  260. package/Tests/Types/Monitor/MonitorStepTemplateSyncFields.test.ts +107 -0
  261. package/Tests/Types/Monitor/MonitorTemplateSyncField.test.ts +172 -0
  262. package/Tests/Types/Monitor/MonitorType.test.ts +1 -0
  263. package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +2 -0
  264. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationAlertDebuggability.test.ts +1 -0
  265. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +9 -0
  266. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
  267. package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
  268. package/Tests/Types/Monitor/SeriesContext/SeriesDebugHints.test.ts +131 -0
  269. package/Tests/Types/Monitor/SeriesContext/SeriesLabelDisplay.test.ts +10 -0
  270. package/Tests/Types/Monitor/VMwareAlertTemplates.test.ts +1608 -0
  271. package/Tests/Types/Monitor/VMwareMetricCatalog.test.ts +488 -0
  272. package/Tests/Types/OnCallDutyPolicy/OverrideProvenance.test.ts +295 -0
  273. package/Tests/Types/Runner/RunnerLiveStatus.test.ts +2 -2
  274. package/Tests/Types/SignupPassword.test.ts +205 -0
  275. package/Tests/Types/StatusPage/StatusPageLanguage.test.ts +44 -0
  276. package/Tests/Types/SupportedLanguages.test.ts +119 -0
  277. package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +19 -0
  278. package/Tests/UI/ColorPickerBuild.test.ts +86 -0
  279. package/Tests/UI/Components/Breadcrumbs.test.tsx +32 -0
  280. package/Tests/UI/Components/Forms/ModelFormPreservesUserInput.test.tsx +937 -0
  281. package/Tests/UI/Components/Forms/ModelFormWriteOnlyColumnSelect.test.tsx +230 -0
  282. package/Tests/UI/Components/Forms/ValidationFormSteps.test.ts +3 -4
  283. package/Tests/UI/Components/LabelRuleImportExport.test.tsx +907 -0
  284. package/Tests/UI/Components/ModelTable/ModelTableCreateAfterEdit.test.tsx +514 -0
  285. package/Tests/UI/Components/MonitorGraphs/Uptime.test.tsx +301 -0
  286. package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +2 -1
  287. package/Tests/UI/Components/TooltipLazyContent.test.tsx +373 -0
  288. package/Tests/UI/MicrosoftTeams/MicrosoftTeamsMessagingEndpointGuidance.test.tsx +43 -12
  289. package/Tests/UI/ReactDomBuild.test.ts +104 -0
  290. package/Tests/UI/ReactRouterSingletonBuild.test.ts +11 -1
  291. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +148 -0
  292. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +29 -0
  293. package/Tests/UI/Utils/DashboardStackingLayers.test.ts +197 -0
  294. package/Tests/UI/Utils/LabelRuleImportExport.test.ts +546 -0
  295. package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +109 -2
  296. package/Tests/UI/Utils/UseDashboardGridDnd.test.tsx +7 -2
  297. package/Tests/UI/Utils/UserEmailRegistrationStatus.test.tsx +295 -0
  298. package/Tests/UI/Utils/WebAuthn.test.ts +265 -0
  299. package/Tests/Utils/Dashboard/Components/DashboardComponentDefaults.test.ts +5 -0
  300. package/Tests/Utils/Dashboard/Components/DashboardVMwareListComponents.test.ts +548 -0
  301. package/Tests/Utils/Dashboard/DashboardResourceListSharedArgs.test.ts +17 -3
  302. package/Tests/Utils/LabelRuleImportExport.test.ts +583 -0
  303. package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
  304. package/Tests/Utils/Monitor/MonitorTemplateSyncUtil.test.ts +590 -0
  305. package/Tests/Utils/RequestFailedDetails.test.ts +325 -0
  306. package/Tests/Utils/Telemetry/CloudInstanceIdentity.test.ts +255 -0
  307. package/Tests/Utils/Telemetry/EntityRelationship.test.ts +167 -0
  308. package/Tests/Utils/WebAuthnTestUtil.ts +79 -0
  309. package/Tests/__mocks__/simplewebauthn.js +33 -4
  310. package/Types/AI/CodeFixTaskContext.ts +122 -0
  311. package/Types/AI/CodeFixTaskType.ts +62 -0
  312. package/Types/Accounts/AccountsLanguage.ts +1 -0
  313. package/Types/AdminDashboard/AdminDashboardLanguage.ts +1 -0
  314. package/Types/Calendar/CalendarEvent.ts +16 -0
  315. package/Types/Cloud/CloudPlatform.ts +372 -0
  316. package/Types/CodeRepository/GitHubCommand.ts +69 -0
  317. package/Types/Dashboard/DashboardComponentType.ts +2 -0
  318. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -0
  319. package/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.ts +23 -0
  320. package/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.ts +30 -0
  321. package/Types/Dashboard/DashboardLanguage.ts +1 -0
  322. package/Types/Dashboard/DashboardTemplates.ts +314 -0
  323. package/Types/Docs/DocsLanguage.ts +1 -0
  324. package/Types/Exception/EgressGuardException.ts +65 -0
  325. package/Types/Icon/IconProp.ts +1 -0
  326. package/Types/Monitor/MetricMonitor/MetricMonitorResponse.ts +36 -0
  327. package/Types/Monitor/MonitorCriteriaInstance.ts +1 -0
  328. package/Types/Monitor/MonitorStep.ts +78 -17
  329. package/Types/Monitor/MonitorStepMetricViewConfigUtil.ts +1 -0
  330. package/Types/Monitor/MonitorStepVMwareMonitor.ts +127 -0
  331. package/Types/Monitor/MonitorTemplateSyncField.ts +291 -0
  332. package/Types/Monitor/MonitorType.ts +24 -0
  333. package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +33 -0
  334. package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +2 -0
  335. package/Types/Monitor/Recommendation/MonitorRecommendationUtil.ts +3 -0
  336. package/Types/Monitor/SeriesContext/SeriesDebugHints.ts +158 -0
  337. package/Types/Monitor/SeriesContext/SeriesLabelDisplay.ts +61 -0
  338. package/Types/Monitor/VMwareAlertTemplates.ts +1070 -0
  339. package/Types/Monitor/VMwareMetricCatalog.ts +914 -0
  340. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +29 -0
  341. package/Types/OnCallDutyPolicy/UserOverrideUtil.ts +16 -0
  342. package/Types/Password.ts +84 -5
  343. package/Types/Permission.ts +265 -0
  344. package/Types/Probe/RequestFailedDetails.ts +7 -0
  345. package/Types/Runner/RunnerLiveStatus.ts +1 -1
  346. package/Types/SecurityEvent/GoogleSecOpsDiagnostics.ts +56 -0
  347. package/Types/StatusPage/StatusPageLanguage.ts +1 -0
  348. package/Types/Telemetry/EntityType.ts +21 -0
  349. package/Types/Telemetry/ServiceType.ts +1 -0
  350. package/Typings/Index.d.ts +63 -0
  351. package/UI/Components/Breadcrumbs/Breadcrumbs.tsx +2 -2
  352. package/UI/Components/Calendar/Calendar.css +78 -0
  353. package/UI/Components/Calendar/Calendar.tsx +28 -3
  354. package/UI/Components/Forms/BasicForm.tsx +44 -2
  355. package/UI/Components/Forms/Fields/ColorPicker.tsx +2 -1
  356. package/UI/Components/Forms/Fields/FormField.tsx +16 -3
  357. package/UI/Components/Forms/ModelForm.tsx +159 -5
  358. package/UI/Components/Forms/Types/Field.ts +8 -1
  359. package/UI/Components/Graphs/DayUptimeGraph.tsx +8 -10
  360. package/UI/Components/Icon/Icon.tsx +16 -0
  361. package/UI/Components/Input/Input.tsx +42 -7
  362. package/UI/Components/LabelRule/ImportLabelRulesModal.tsx +441 -0
  363. package/UI/Components/LabelRule/LabelRuleTable.tsx +142 -0
  364. package/UI/Components/ModelTable/BaseModelTable.tsx +22 -5
  365. package/UI/Components/ModelTable/ModelTable.tsx +14 -6
  366. package/UI/Components/MonitorGraphs/Uptime.tsx +17 -27
  367. package/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.ts +3 -1
  368. package/UI/Components/Tooltip/Tooltip.tsx +52 -6
  369. package/UI/Utils/DashboardStackingLayers.ts +85 -0
  370. package/UI/Utils/LabelRuleImportExport.ts +310 -0
  371. package/UI/Utils/ModelAPI/ModelAPI.ts +4 -3
  372. package/UI/Utils/TelemetryService.ts +4 -3
  373. package/UI/Utils/UseDashboardGridDnd.ts +4 -1
  374. package/UI/Utils/UserEmailRegistrationStatus.ts +33 -5
  375. package/UI/Utils/WebAuthn.ts +220 -0
  376. package/UI/esbuild-config.js +4 -0
  377. package/Utils/API.ts +34 -0
  378. package/Utils/Dashboard/Components/DashboardVMwareHostListComponent.ts +38 -0
  379. package/Utils/Dashboard/Components/DashboardVMwareResourceListShared.ts +70 -0
  380. package/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.ts +76 -0
  381. package/Utils/Dashboard/Components/Index.ts +16 -0
  382. package/Utils/LabelRuleImportExport.ts +496 -0
  383. package/Utils/Monitor/MonitorTemplateSyncUtil.ts +164 -0
  384. package/Utils/NetworkDiscovery/DiscoveryScanStatus.ts +8 -0
  385. package/Utils/Telemetry/CloudInstanceIdentity.ts +94 -0
  386. package/Utils/Telemetry/EntityKey.ts +19 -0
  387. package/Utils/Telemetry/EntityRelationship.ts +19 -0
  388. package/build/dist/Models/DatabaseModels/Alert.js +54 -0
  389. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  390. package/build/dist/Models/DatabaseModels/CloudResource.js +44 -7
  391. package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -1
  392. package/build/dist/Models/DatabaseModels/CodeRepository.js +87 -0
  393. package/build/dist/Models/DatabaseModels/CodeRepository.js.map +1 -1
  394. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +60 -7
  395. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
  396. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnectionRun.js +287 -0
  397. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnectionRun.js.map +1 -0
  398. package/build/dist/Models/DatabaseModels/Incident.js +54 -0
  399. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  400. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  401. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  402. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +54 -0
  403. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  404. package/build/dist/Models/DatabaseModels/User.js +57 -4
  405. package/build/dist/Models/DatabaseModels/User.js.map +1 -1
  406. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js +47 -2
  407. package/build/dist/Models/DatabaseModels/UserNotificationEmailRollupItem.js.map +1 -1
  408. package/build/dist/Models/DatabaseModels/UserWebAuthn.js +18 -0
  409. package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
  410. package/build/dist/Models/DatabaseModels/VMwareResource.js +1201 -0
  411. package/build/dist/Models/DatabaseModels/VMwareResource.js.map +1 -0
  412. package/build/dist/Models/DatabaseModels/VMwareVCenter.js +1149 -0
  413. package/build/dist/Models/DatabaseModels/VMwareVCenter.js.map +1 -0
  414. package/build/dist/Models/DatabaseModels/VMwareVCenterFeed.js +648 -0
  415. package/build/dist/Models/DatabaseModels/VMwareVCenterFeed.js.map +1 -0
  416. package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js +522 -0
  417. package/build/dist/Models/DatabaseModels/VMwareVCenterLabelRule.js.map +1 -0
  418. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js +603 -0
  419. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerRule.js.map +1 -0
  420. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js +503 -0
  421. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js.map +1 -0
  422. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js +502 -0
  423. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js.map +1 -0
  424. package/build/dist/Models/DatabaseModels/WorkflowVariable.js +22 -1
  425. package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
  426. package/build/dist/Server/API/AIAgentDataAPI.js +63 -3
  427. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -1
  428. package/build/dist/Server/API/AIAgentGitHubAPI.js +363 -0
  429. package/build/dist/Server/API/AIAgentGitHubAPI.js.map +1 -0
  430. package/build/dist/Server/API/AIChatAPI.js +19 -1
  431. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  432. package/build/dist/Server/API/BillingAPI.js +22 -0
  433. package/build/dist/Server/API/BillingAPI.js.map +1 -1
  434. package/build/dist/Server/API/DashboardAPI.js +10 -0
  435. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  436. package/build/dist/Server/API/GitHubAPI.js +33 -5
  437. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  438. package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js +56 -0
  439. package/build/dist/Server/API/GoogleSecOpsConnectionAPI.js.map +1 -0
  440. package/build/dist/Server/API/UserWebAuthnAPI.js +17 -1
  441. package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
  442. package/build/dist/Server/API/VMwareResourceAPI.js +106 -0
  443. package/build/dist/Server/API/VMwareResourceAPI.js.map +1 -0
  444. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.js +41 -0
  445. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791800000000-SplitWebAuthnChallengeByPurpose.js.map +1 -0
  446. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.js +14 -0
  447. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1791900000000-AddSeverityAndStateToNotificationEmailRollup.js.map +1 -0
  448. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.js +241 -0
  449. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792000000000-AddVMwareTables.js.map +1 -0
  450. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.js +36 -0
  451. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792100000000-AddGitHubCommandSettingsToCodeRepository.js.map +1 -0
  452. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.js +12 -0
  453. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792200000000-AddUserWebAuthnPurpose.js.map +1 -0
  454. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.js +34 -0
  455. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1792300000000-AddGoogleSecOpsDiagnostics.js.map +1 -0
  456. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
  457. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  458. package/build/dist/Server/Middleware/IdentityRateLimit.js +80 -0
  459. package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
  460. package/build/dist/Server/Services/AIRunService.js +14 -1
  461. package/build/dist/Server/Services/AIRunService.js.map +1 -1
  462. package/build/dist/Server/Services/BillingPaymentMethodService.js +71 -21
  463. package/build/dist/Server/Services/BillingPaymentMethodService.js.map +1 -1
  464. package/build/dist/Server/Services/BillingService.js +210 -22
  465. package/build/dist/Server/Services/BillingService.js.map +1 -1
  466. package/build/dist/Server/Services/CloudResourceInstanceService.js +66 -0
  467. package/build/dist/Server/Services/CloudResourceInstanceService.js.map +1 -1
  468. package/build/dist/Server/Services/ExceptionAggregationService.js +1 -0
  469. package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
  470. package/build/dist/Server/Services/GoogleSecOpsConnectionRunService.js +9 -0
  471. package/build/dist/Server/Services/GoogleSecOpsConnectionRunService.js.map +1 -0
  472. package/build/dist/Server/Services/GoogleSecOpsConnectionService.js +7 -0
  473. package/build/dist/Server/Services/GoogleSecOpsConnectionService.js.map +1 -1
  474. package/build/dist/Server/Services/Index.js +16 -0
  475. package/build/dist/Server/Services/Index.js.map +1 -1
  476. package/build/dist/Server/Services/LogAggregationService.js +1 -0
  477. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  478. package/build/dist/Server/Services/MetricAggregationService.js +1 -0
  479. package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
  480. package/build/dist/Server/Services/MobilePasskeyLoginService.js +137 -0
  481. package/build/dist/Server/Services/MobilePasskeyLoginService.js.map +1 -0
  482. package/build/dist/Server/Services/MonitorService.js +34 -1
  483. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  484. package/build/dist/Server/Services/MonitorTemplateService.js +64 -26
  485. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  486. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +124 -1
  487. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  488. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +142 -2
  489. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  490. package/build/dist/Server/Services/OpenTelemetryIngestService.js +28 -13
  491. package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
  492. package/build/dist/Server/Services/PayAsYouGoBillingService.js +297 -0
  493. package/build/dist/Server/Services/PayAsYouGoBillingService.js.map +1 -0
  494. package/build/dist/Server/Services/ProjectService.js +38 -2
  495. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  496. package/build/dist/Server/Services/ServerlessFunctionInstanceService.js +66 -0
  497. package/build/dist/Server/Services/ServerlessFunctionInstanceService.js.map +1 -1
  498. package/build/dist/Server/Services/TeamMemberService.js +85 -28
  499. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  500. package/build/dist/Server/Services/TelemetryIngestionKeyService.js +61 -10
  501. package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
  502. package/build/dist/Server/Services/TelemetryUsageBillingService.js +62 -5
  503. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  504. package/build/dist/Server/Services/TraceAggregationService.js +5 -4
  505. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  506. package/build/dist/Server/Services/UserWebAuthnService.js +345 -113
  507. package/build/dist/Server/Services/UserWebAuthnService.js.map +1 -1
  508. package/build/dist/Server/Services/VMwareResourceService.js +395 -0
  509. package/build/dist/Server/Services/VMwareResourceService.js.map +1 -0
  510. package/build/dist/Server/Services/VMwareVCenterFeedService.js +89 -0
  511. package/build/dist/Server/Services/VMwareVCenterFeedService.js.map +1 -0
  512. package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js +197 -0
  513. package/build/dist/Server/Services/VMwareVCenterLabelRuleEngineService.js.map +1 -0
  514. package/build/dist/Server/Services/VMwareVCenterLabelRuleService.js +13 -0
  515. package/build/dist/Server/Services/VMwareVCenterLabelRuleService.js.map +1 -0
  516. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +214 -0
  517. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -0
  518. package/build/dist/Server/Services/VMwareVCenterOwnerRuleService.js +13 -0
  519. package/build/dist/Server/Services/VMwareVCenterOwnerRuleService.js.map +1 -0
  520. package/build/dist/Server/Services/VMwareVCenterOwnerTeamService.js +129 -0
  521. package/build/dist/Server/Services/VMwareVCenterOwnerTeamService.js.map +1 -0
  522. package/build/dist/Server/Services/VMwareVCenterOwnerUserService.js +122 -0
  523. package/build/dist/Server/Services/VMwareVCenterOwnerUserService.js.map +1 -0
  524. package/build/dist/Server/Services/VMwareVCenterService.js +533 -0
  525. package/build/dist/Server/Services/VMwareVCenterService.js.map +1 -0
  526. package/build/dist/Server/Services/WorkflowVariableService.js +169 -0
  527. package/build/dist/Server/Services/WorkflowVariableService.js.map +1 -1
  528. package/build/dist/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.js +12 -1
  529. package/build/dist/Server/Types/Billing/MeteredPlan/ActiveMonitoringMeteredPlan.js.map +1 -1
  530. package/build/dist/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.js +25 -2
  531. package/build/dist/Server/Types/Billing/MeteredPlan/TelemetryMeteredPlan.js.map +1 -1
  532. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
  533. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.js +275 -0
  534. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubAgentTaskTrigger.js.map +1 -0
  535. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.js +226 -0
  536. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandAuthorizer.js.map +1 -0
  537. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.js +297 -0
  538. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubCommandParser.js.map +1 -0
  539. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubConversation.js +582 -0
  540. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubConversation.js.map +1 -0
  541. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.js +275 -0
  542. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubReplyComposer.js.map +1 -0
  543. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubRunReply.js +365 -0
  544. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubRunReply.js.map +1 -0
  545. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.js +103 -0
  546. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookEvents.js.map +1 -0
  547. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.js +661 -0
  548. package/build/dist/Server/Utils/CodeRepository/GitHub/GitHubWebhookHandler.js.map +1 -0
  549. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +113 -0
  550. package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
  551. package/build/dist/Server/Utils/DataSource/EgressGuard.js +99 -15
  552. package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -1
  553. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js +2 -0
  554. package/build/dist/Server/Utils/EmailRollup/EmailRollupFlushRunner.js.map +1 -1
  555. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js +18 -0
  556. package/build/dist/Server/Utils/EmailRollup/EmailRollupRenderer.js.map +1 -1
  557. package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js +31 -2
  558. package/build/dist/Server/Utils/EmailRollup/EmailRollupWriter.js.map +1 -1
  559. package/build/dist/Server/Utils/LogRedaction.js +2 -1
  560. package/build/dist/Server/Utils/LogRedaction.js.map +1 -1
  561. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +1 -1
  562. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +219 -4
  563. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  564. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js +12 -4
  565. package/build/dist/Server/Utils/Monitor/MonitorMaintenanceSuppression.js.map +1 -1
  566. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +5 -3
  567. package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -1
  568. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +22 -9
  569. package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
  570. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +1 -0
  571. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  572. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +21 -0
  573. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  574. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +21 -6
  575. package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
  576. package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +3 -3
  577. package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +9 -9
  578. package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -1
  579. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +92 -71
  580. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -1
  581. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +428 -143
  582. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
  583. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js +376 -0
  584. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsRunExecutor.js.map +1 -0
  585. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +5 -0
  586. package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
  587. package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -1
  588. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +136 -1
  589. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  590. package/build/dist/Server/Utils/Telemetry/VMwareSnapshotScan.js +933 -0
  591. package/build/dist/Server/Utils/Telemetry/VMwareSnapshotScan.js.map +1 -0
  592. package/build/dist/Types/AI/CodeFixTaskContext.js +40 -0
  593. package/build/dist/Types/AI/CodeFixTaskContext.js.map +1 -1
  594. package/build/dist/Types/AI/CodeFixTaskType.js +57 -0
  595. package/build/dist/Types/AI/CodeFixTaskType.js.map +1 -1
  596. package/build/dist/Types/Accounts/AccountsLanguage.js +1 -0
  597. package/build/dist/Types/Accounts/AccountsLanguage.js.map +1 -1
  598. package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js +1 -0
  599. package/build/dist/Types/AdminDashboard/AdminDashboardLanguage.js.map +1 -1
  600. package/build/dist/Types/Cloud/CloudPlatform.js +277 -0
  601. package/build/dist/Types/Cloud/CloudPlatform.js.map +1 -0
  602. package/build/dist/Types/CodeRepository/GitHubCommand.js +52 -0
  603. package/build/dist/Types/CodeRepository/GitHubCommand.js.map +1 -0
  604. package/build/dist/Types/Dashboard/DashboardComponentType.js +2 -0
  605. package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
  606. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -0
  607. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  608. package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.js +2 -0
  609. package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareHostListComponent.js.map +1 -0
  610. package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.js +2 -0
  611. package/build/dist/Types/Dashboard/DashboardComponents/DashboardVMwareVirtualMachineListComponent.js.map +1 -0
  612. package/build/dist/Types/Dashboard/DashboardLanguage.js +1 -0
  613. package/build/dist/Types/Dashboard/DashboardLanguage.js.map +1 -1
  614. package/build/dist/Types/Dashboard/DashboardTemplates.js +286 -0
  615. package/build/dist/Types/Dashboard/DashboardTemplates.js.map +1 -1
  616. package/build/dist/Types/Docs/DocsLanguage.js +1 -0
  617. package/build/dist/Types/Docs/DocsLanguage.js.map +1 -1
  618. package/build/dist/Types/Exception/EgressGuardException.js +59 -0
  619. package/build/dist/Types/Exception/EgressGuardException.js.map +1 -0
  620. package/build/dist/Types/Icon/IconProp.js +1 -0
  621. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  622. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +1 -0
  623. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  624. package/build/dist/Types/Monitor/MonitorStep.js +61 -18
  625. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  626. package/build/dist/Types/Monitor/MonitorStepMetricViewConfigUtil.js +1 -0
  627. package/build/dist/Types/Monitor/MonitorStepMetricViewConfigUtil.js.map +1 -1
  628. package/build/dist/Types/Monitor/MonitorStepVMwareMonitor.js +71 -0
  629. package/build/dist/Types/Monitor/MonitorStepVMwareMonitor.js.map +1 -0
  630. package/build/dist/Types/Monitor/MonitorTemplateSyncField.js +211 -0
  631. package/build/dist/Types/Monitor/MonitorTemplateSyncField.js.map +1 -0
  632. package/build/dist/Types/Monitor/MonitorType.js +23 -0
  633. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  634. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +28 -0
  635. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
  636. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +1 -0
  637. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
  638. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js +2 -0
  639. package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationUtil.js.map +1 -1
  640. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js +120 -0
  641. package/build/dist/Types/Monitor/SeriesContext/SeriesDebugHints.js.map +1 -1
  642. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js +60 -0
  643. package/build/dist/Types/Monitor/SeriesContext/SeriesLabelDisplay.js.map +1 -1
  644. package/build/dist/Types/Monitor/VMwareAlertTemplates.js +775 -0
  645. package/build/dist/Types/Monitor/VMwareAlertTemplates.js.map +1 -0
  646. package/build/dist/Types/Monitor/VMwareMetricCatalog.js +799 -0
  647. package/build/dist/Types/Monitor/VMwareMetricCatalog.js.map +1 -0
  648. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +25 -0
  649. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
  650. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js +5 -0
  651. package/build/dist/Types/OnCallDutyPolicy/UserOverrideUtil.js.map +1 -1
  652. package/build/dist/Types/Password.js +63 -5
  653. package/build/dist/Types/Password.js.map +1 -1
  654. package/build/dist/Types/Permission.js +234 -0
  655. package/build/dist/Types/Permission.js.map +1 -1
  656. package/build/dist/Types/Probe/RequestFailedDetails.js +7 -0
  657. package/build/dist/Types/Probe/RequestFailedDetails.js.map +1 -1
  658. package/build/dist/Types/SecurityEvent/GoogleSecOpsDiagnostics.js +2 -0
  659. package/build/dist/Types/SecurityEvent/GoogleSecOpsDiagnostics.js.map +1 -0
  660. package/build/dist/Types/StatusPage/StatusPageLanguage.js +1 -0
  661. package/build/dist/Types/StatusPage/StatusPageLanguage.js.map +1 -1
  662. package/build/dist/Types/Telemetry/EntityType.js +21 -0
  663. package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
  664. package/build/dist/Types/Telemetry/ServiceType.js +1 -0
  665. package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
  666. package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js +2 -2
  667. package/build/dist/UI/Components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  668. package/build/dist/UI/Components/Calendar/Calendar.js +24 -4
  669. package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
  670. package/build/dist/UI/Components/Forms/BasicForm.js +28 -3
  671. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  672. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js +1 -1
  673. package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
  674. package/build/dist/UI/Components/Forms/Fields/FormField.js +10 -3
  675. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  676. package/build/dist/UI/Components/Forms/ModelForm.js +89 -6
  677. package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
  678. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +5 -6
  679. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
  680. package/build/dist/UI/Components/Icon/Icon.js +14 -0
  681. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  682. package/build/dist/UI/Components/Input/Input.js +37 -8
  683. package/build/dist/UI/Components/Input/Input.js.map +1 -1
  684. package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js +228 -0
  685. package/build/dist/UI/Components/LabelRule/ImportLabelRulesModal.js.map +1 -0
  686. package/build/dist/UI/Components/LabelRule/LabelRuleTable.js +102 -0
  687. package/build/dist/UI/Components/LabelRule/LabelRuleTable.js.map +1 -0
  688. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +15 -2
  689. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  690. package/build/dist/UI/Components/ModelTable/ModelTable.js +13 -5
  691. package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
  692. package/build/dist/UI/Components/MonitorGraphs/Uptime.js +14 -15
  693. package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
  694. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js +2 -0
  695. package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.js.map +1 -1
  696. package/build/dist/UI/Components/Tooltip/Tooltip.js +33 -4
  697. package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
  698. package/build/dist/UI/Utils/DashboardStackingLayers.js +44 -0
  699. package/build/dist/UI/Utils/DashboardStackingLayers.js.map +1 -0
  700. package/build/dist/UI/Utils/LabelRuleImportExport.js +195 -0
  701. package/build/dist/UI/Utils/LabelRuleImportExport.js.map +1 -0
  702. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +4 -4
  703. package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
  704. package/build/dist/UI/Utils/TelemetryService.js +3 -2
  705. package/build/dist/UI/Utils/TelemetryService.js.map +1 -1
  706. package/build/dist/UI/Utils/UseDashboardGridDnd.js +2 -1
  707. package/build/dist/UI/Utils/UseDashboardGridDnd.js.map +1 -1
  708. package/build/dist/UI/Utils/UserEmailRegistrationStatus.js +21 -4
  709. package/build/dist/UI/Utils/UserEmailRegistrationStatus.js.map +1 -1
  710. package/build/dist/UI/Utils/WebAuthn.js +121 -0
  711. package/build/dist/UI/Utils/WebAuthn.js.map +1 -0
  712. package/build/dist/Utils/API.js +29 -0
  713. package/build/dist/Utils/API.js.map +1 -1
  714. package/build/dist/Utils/Dashboard/Components/DashboardVMwareHostListComponent.js +33 -0
  715. package/build/dist/Utils/Dashboard/Components/DashboardVMwareHostListComponent.js.map +1 -0
  716. package/build/dist/Utils/Dashboard/Components/DashboardVMwareResourceListShared.js +54 -0
  717. package/build/dist/Utils/Dashboard/Components/DashboardVMwareResourceListShared.js.map +1 -0
  718. package/build/dist/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.js +60 -0
  719. package/build/dist/Utils/Dashboard/Components/DashboardVMwareVirtualMachineListComponent.js.map +1 -0
  720. package/build/dist/Utils/Dashboard/Components/Index.js +8 -0
  721. package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
  722. package/build/dist/Utils/LabelRuleImportExport.js +356 -0
  723. package/build/dist/Utils/LabelRuleImportExport.js.map +1 -0
  724. package/build/dist/Utils/Monitor/MonitorTemplateSyncUtil.js +110 -0
  725. package/build/dist/Utils/Monitor/MonitorTemplateSyncUtil.js.map +1 -0
  726. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js +6 -0
  727. package/build/dist/Utils/NetworkDiscovery/DiscoveryScanStatus.js.map +1 -1
  728. package/build/dist/Utils/Telemetry/CloudInstanceIdentity.js +88 -0
  729. package/build/dist/Utils/Telemetry/CloudInstanceIdentity.js.map +1 -0
  730. package/build/dist/Utils/Telemetry/EntityKey.js +15 -0
  731. package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
  732. package/build/dist/Utils/Telemetry/EntityRelationship.js +13 -0
  733. package/build/dist/Utils/Telemetry/EntityRelationship.js.map +1 -1
  734. package/package.json +1 -1
@@ -72,6 +72,9 @@ import MonitorStepPodmanMonitor, {
72
72
  import MonitorStepProxmoxMonitor, {
73
73
  MonitorStepProxmoxMonitorUtil,
74
74
  } from "./MonitorStepProxmoxMonitor";
75
+ import MonitorStepVMwareMonitor, {
76
+ MonitorStepVMwareMonitorUtil,
77
+ } from "./MonitorStepVMwareMonitor";
75
78
  import MonitorStepDockerSwarmMonitor, {
76
79
  MonitorStepDockerSwarmMonitorUtil,
77
80
  } from "./MonitorStepDockerSwarmMonitor";
@@ -84,6 +87,7 @@ import MonitorStepIoTMonitor, {
84
87
  import MetricsViewConfig from "../Metrics/MetricsViewConfig";
85
88
  import MetricQueryConfigData from "../Metrics/MetricQueryConfigData";
86
89
  import Zod, { ZodSchema } from "../../Utils/Schema/Zod";
90
+ import MonitorTemplateSyncFieldUtil from "./MonitorTemplateSyncField";
87
91
 
88
92
  /*
89
93
  * Caps and defaults for per-step request timeout and retry settings.
@@ -120,6 +124,8 @@ export const clampMonitorRetryCount: (value: number) => number = (
120
124
 
121
125
  export interface MonitorStepType {
122
126
  id: string;
127
+ // Template policy: keep these fields from each linked monitor during sync.
128
+ doNotSyncFields?: Array<string> | undefined;
123
129
  monitorDestination?: URL | IP | Hostname | undefined;
124
130
 
125
131
  monitorCriteria: MonitorCriteria;
@@ -228,6 +234,9 @@ export interface MonitorStepType {
228
234
  // Proxmox monitor
229
235
  proxmoxMonitor?: MonitorStepProxmoxMonitor | undefined;
230
236
 
237
+ // VMware monitor
238
+ vmwareMonitor?: MonitorStepVMwareMonitor | undefined;
239
+
231
240
  // Docker Swarm monitor
232
241
  dockerSwarmMonitor?: MonitorStepDockerSwarmMonitor | undefined;
233
242
 
@@ -282,6 +291,7 @@ export default class MonitorStep extends DatabaseProperty {
282
291
  hostMonitor: undefined,
283
292
  podmanMonitor: undefined,
284
293
  proxmoxMonitor: undefined,
294
+ vmwareMonitor: undefined,
285
295
  dockerSwarmMonitor: undefined,
286
296
  cephMonitor: undefined,
287
297
  iotMonitor: undefined,
@@ -368,6 +378,7 @@ export default class MonitorStep extends DatabaseProperty {
368
378
  hostMonitor: undefined,
369
379
  podmanMonitor: undefined,
370
380
  proxmoxMonitor: undefined,
381
+ vmwareMonitor: undefined,
371
382
  dockerSwarmMonitor: undefined,
372
383
  cephMonitor: undefined,
373
384
  iotMonitor: undefined,
@@ -403,6 +414,7 @@ export default class MonitorStep extends DatabaseProperty {
403
414
  data.hostMonitor?.metricViewConfig ||
404
415
  data.podmanMonitor?.metricViewConfig ||
405
416
  data.proxmoxMonitor?.metricViewConfig ||
417
+ data.vmwareMonitor?.metricViewConfig ||
406
418
  data.cephMonitor?.metricViewConfig
407
419
  );
408
420
  }
@@ -684,6 +696,13 @@ export default class MonitorStep extends DatabaseProperty {
684
696
  return this;
685
697
  }
686
698
 
699
+ public setVMwareMonitor(
700
+ vmwareMonitor: MonitorStepVMwareMonitor,
701
+ ): MonitorStep {
702
+ this.data!.vmwareMonitor = vmwareMonitor;
703
+ return this;
704
+ }
705
+
687
706
  public setDockerSwarmMonitor(
688
707
  dockerSwarmMonitor: MonitorStepDockerSwarmMonitor,
689
708
  ): MonitorStep {
@@ -741,6 +760,7 @@ export default class MonitorStep extends DatabaseProperty {
741
760
  hostMonitor: undefined,
742
761
  podmanMonitor: undefined,
743
762
  proxmoxMonitor: undefined,
763
+ vmwareMonitor: undefined,
744
764
  dockerSwarmMonitor: undefined,
745
765
  cephMonitor: undefined,
746
766
  iotMonitor: undefined,
@@ -756,6 +776,15 @@ export default class MonitorStep extends DatabaseProperty {
756
776
  return "Monitor Step is required.";
757
777
  }
758
778
 
779
+ try {
780
+ MonitorTemplateSyncFieldUtil.parse(
781
+ value.data.doNotSyncFields,
782
+ monitorType,
783
+ );
784
+ } catch (error) {
785
+ return (error as Error).message;
786
+ }
787
+
759
788
  // If the monitor type is incoming request, then the monitor destination is not required
760
789
  if (
761
790
  !value.data.monitorDestination &&
@@ -996,6 +1025,16 @@ export default class MonitorStep extends DatabaseProperty {
996
1025
  }
997
1026
  }
998
1027
 
1028
+ if (monitorType === MonitorType.VMware) {
1029
+ if (!value.data.vmwareMonitor) {
1030
+ return "VMware monitor configuration is required";
1031
+ }
1032
+
1033
+ if (!value.data.vmwareMonitor.vcenterIdentifier) {
1034
+ return "vCenter is required";
1035
+ }
1036
+ }
1037
+
999
1038
  if (monitorType === MonitorType.DockerSwarm) {
1000
1039
  if (!value.data.dockerSwarmMonitor) {
1001
1040
  return "Docker Swarm monitor configuration is required";
@@ -1035,24 +1074,26 @@ export default class MonitorStep extends DatabaseProperty {
1035
1074
  _type: ObjectType.MonitorStep,
1036
1075
  value: {
1037
1076
  id: this.data.id,
1077
+ doNotSyncFields: MonitorTemplateSyncFieldUtil.parse(
1078
+ this.data.doNotSyncFields,
1079
+ ),
1038
1080
  monitorDestination:
1039
1081
  this.data?.monitorDestination?.toJSON() || undefined,
1040
- doNotFollowRedirects: this.data.doNotFollowRedirects || undefined,
1041
- allowSelfSignedCertificates:
1042
- this.data.allowSelfSignedCertificates || undefined,
1043
- tlsClientCertificate: this.data.tlsClientCertificate || undefined,
1044
- tlsClientKey: this.data.tlsClientKey || undefined,
1045
- tlsClientKeyPassphrase: this.data.tlsClientKeyPassphrase || undefined,
1082
+ doNotFollowRedirects: this.data.doNotFollowRedirects,
1083
+ allowSelfSignedCertificates: this.data.allowSelfSignedCertificates,
1084
+ tlsClientCertificate: this.data.tlsClientCertificate,
1085
+ tlsClientKey: this.data.tlsClientKey,
1086
+ tlsClientKeyPassphrase: this.data.tlsClientKeyPassphrase,
1046
1087
  monitorDestinationPort:
1047
1088
  this.data?.monitorDestinationPort?.toJSON() || undefined,
1048
1089
  monitorCriteria: this.data.monitorCriteria.toJSON(),
1049
1090
  requestType: this.data.requestType,
1050
1091
  requestHeaders: this.data.requestHeaders || undefined,
1051
- requestBody: this.data.requestBody || undefined,
1052
- customCode: this.data.customCode || undefined,
1092
+ requestBody: this.data.requestBody,
1093
+ customCode: this.data.customCode,
1053
1094
  screenSizeTypes: this.data.screenSizeTypes || undefined,
1054
1095
  browserTypes: this.data.browserTypes || undefined,
1055
- retryCountOnError: this.data.retryCountOnError || undefined,
1096
+ retryCountOnError: this.data.retryCountOnError,
1056
1097
  requestTimeoutInMs: this.data.requestTimeoutInMs || undefined,
1057
1098
  retryCount:
1058
1099
  this.data.retryCount === undefined
@@ -1134,6 +1175,9 @@ export default class MonitorStep extends DatabaseProperty {
1134
1175
  proxmoxMonitor: this.data.proxmoxMonitor
1135
1176
  ? MonitorStepProxmoxMonitorUtil.toJSON(this.data.proxmoxMonitor)
1136
1177
  : undefined,
1178
+ vmwareMonitor: this.data.vmwareMonitor
1179
+ ? MonitorStepVMwareMonitorUtil.toJSON(this.data.vmwareMonitor)
1180
+ : undefined,
1137
1181
  dockerSwarmMonitor: this.data.dockerSwarmMonitor
1138
1182
  ? MonitorStepDockerSwarmMonitorUtil.toJSON(
1139
1183
  this.data.dockerSwarmMonitor,
@@ -1220,15 +1264,18 @@ export default class MonitorStep extends DatabaseProperty {
1220
1264
 
1221
1265
  monitorStep.data = JSONFunctions.deserialize({
1222
1266
  id: json["id"] as string,
1267
+ doNotSyncFields: MonitorTemplateSyncFieldUtil.parse(
1268
+ json["doNotSyncFields"],
1269
+ ),
1223
1270
  monitorDestination: monitorDestination || undefined,
1224
- doNotFollowRedirects: json["doNotFollowRedirects"] || undefined,
1271
+ doNotFollowRedirects: json["doNotFollowRedirects"] ?? undefined,
1225
1272
  allowSelfSignedCertificates:
1226
- json["allowSelfSignedCertificates"] || undefined,
1273
+ json["allowSelfSignedCertificates"] ?? undefined,
1227
1274
  tlsClientCertificate:
1228
- (json["tlsClientCertificate"] as string) || undefined,
1229
- tlsClientKey: (json["tlsClientKey"] as string) || undefined,
1275
+ (json["tlsClientCertificate"] as string) ?? undefined,
1276
+ tlsClientKey: (json["tlsClientKey"] as string) ?? undefined,
1230
1277
  tlsClientKeyPassphrase:
1231
- (json["tlsClientKeyPassphrase"] as string) || undefined,
1278
+ (json["tlsClientKeyPassphrase"] as string) ?? undefined,
1232
1279
  monitorDestinationPort: monitorDestinationPort || undefined,
1233
1280
  monitorCriteria: MonitorCriteria.fromJSON(
1234
1281
  json["monitorCriteria"] as JSONObject,
@@ -1236,12 +1283,12 @@ export default class MonitorStep extends DatabaseProperty {
1236
1283
  requestType: (json["requestType"] as HTTPMethod) || HTTPMethod.GET,
1237
1284
  requestHeaders:
1238
1285
  (json["requestHeaders"] as Dictionary<string>) || undefined,
1239
- requestBody: (json["requestBody"] as string) || undefined,
1240
- customCode: (json["customCode"] as string) || undefined,
1286
+ requestBody: (json["requestBody"] as string) ?? undefined,
1287
+ customCode: (json["customCode"] as string) ?? undefined,
1241
1288
  screenSizeTypes:
1242
1289
  (json["screenSizeTypes"] as Array<ScreenSizeType>) || undefined,
1243
1290
  browserTypes: (json["browserTypes"] as Array<BrowserType>) || undefined,
1244
- retryCountOnError: (json["retryCountOnError"] as number) || undefined,
1291
+ retryCountOnError: (json["retryCountOnError"] as number) ?? undefined,
1245
1292
  requestTimeoutInMs: (json["requestTimeoutInMs"] as number) || undefined,
1246
1293
  retryCount:
1247
1294
  json["retryCount"] === undefined || json["retryCount"] === null
@@ -1343,6 +1390,9 @@ export default class MonitorStep extends DatabaseProperty {
1343
1390
  proxmoxMonitor: json["proxmoxMonitor"]
1344
1391
  ? (json["proxmoxMonitor"] as JSONObject)
1345
1392
  : undefined,
1393
+ vmwareMonitor: json["vmwareMonitor"]
1394
+ ? (json["vmwareMonitor"] as JSONObject)
1395
+ : undefined,
1346
1396
  dockerSwarmMonitor: json["dockerSwarmMonitor"]
1347
1397
  ? (json["dockerSwarmMonitor"] as JSONObject)
1348
1398
  : undefined,
@@ -1362,6 +1412,16 @@ export default class MonitorStep extends DatabaseProperty {
1362
1412
  _type: Zod.literal(ObjectType.MonitorStep),
1363
1413
  value: Zod.object({
1364
1414
  id: Zod.string(),
1415
+ doNotSyncFields: Zod.array(
1416
+ Zod.string().refine((value: string): boolean => {
1417
+ try {
1418
+ MonitorTemplateSyncFieldUtil.parse([value]);
1419
+ return true;
1420
+ } catch {
1421
+ return false;
1422
+ }
1423
+ }, "Unsupported do not sync field"),
1424
+ ).optional(),
1365
1425
  monitorDestination: Zod.any().optional(),
1366
1426
  monitorCriteria: Zod.any(),
1367
1427
  requestType: Zod.any(),
@@ -1397,6 +1457,7 @@ export default class MonitorStep extends DatabaseProperty {
1397
1457
  hostMonitor: Zod.any().optional(),
1398
1458
  podmanMonitor: Zod.any().optional(),
1399
1459
  proxmoxMonitor: Zod.any().optional(),
1460
+ vmwareMonitor: Zod.any().optional(),
1400
1461
  dockerSwarmMonitor: Zod.any().optional(),
1401
1462
  cephMonitor: Zod.any().optional(),
1402
1463
  iotMonitor: Zod.any().optional(),
@@ -22,6 +22,7 @@ const METRIC_VIEW_CONFIG_KEYS: Array<keyof MonitorStepType> = [
22
22
  "dockerSwarmMonitor",
23
23
  "podmanMonitor",
24
24
  "proxmoxMonitor",
25
+ "vmwareMonitor",
25
26
  "cephMonitor",
26
27
  "iotMonitor",
27
28
  ];
@@ -0,0 +1,127 @@
1
+ import { JSONObject } from "../JSON";
2
+ import MetricsViewConfig from "../Metrics/MetricsViewConfig";
3
+ import RollingTime from "../RollingTime/RollingTime";
4
+
5
+ /**
6
+ * The kind of vSphere object a metric series belongs to.
7
+ *
8
+ * The OpenTelemetry Collector `vcenter` receiver emits one OTLP resource per
9
+ * vSphere object and identifies it through RESOURCE attributes
10
+ * (`vcenter.datacenter.name`, `vcenter.cluster.name`, `vcenter.host.name`,
11
+ * `vcenter.vm.name` / `vcenter.vm.id`, `vcenter.datastore.name`,
12
+ * `vcenter.resource_pool.inventory_path`). There is no agent-stamped scope
13
+ * attribute the way Proxmox has `pve.scope`, so this enum is a catalog /
14
+ * picker hint that says which identity attributes a metric carries — it is
15
+ * never sent to ClickHouse as a filter itself.
16
+ */
17
+ export enum VMwareResourceScope {
18
+ VCenter = "vcenter",
19
+ Datacenter = "datacenter",
20
+ Cluster = "cluster",
21
+ Host = "host",
22
+ VirtualMachine = "vm",
23
+ Datastore = "datastore",
24
+ ResourcePool = "resource_pool",
25
+ }
26
+
27
+ /**
28
+ * The inventory row kinds `VMwareResource.kind` can hold. Kept next to the
29
+ * scope enum so the ingest scan, the inventory model description and the
30
+ * dashboard all reference the same literal strings.
31
+ *
32
+ * VM templates are VirtualMachine rows with `isTemplate = true`; vApps are
33
+ * not an inventory kind (vApp membership is a VM attribute only).
34
+ */
35
+ export enum VMwareResourceKind {
36
+ Datacenter = "Datacenter",
37
+ Cluster = "Cluster",
38
+ Host = "Host",
39
+ VirtualMachine = "VirtualMachine",
40
+ Datastore = "Datastore",
41
+ ResourcePool = "ResourcePool",
42
+ }
43
+
44
+ /*
45
+ * Filter contract: every filter below is an equality on an OTel RESOURCE
46
+ * attribute, which OtelMetricsIngestService stores `resource.`-prefixed in
47
+ * ClickHouse. The monitor worker maps each field to its prefixed attribute
48
+ * (the arrow in each comment) and always adds
49
+ * `resource.vmware.vcenter.name = vcenterIdentifier` on top.
50
+ *
51
+ * Datapoint attributes (`disk_state`, `power_state`, `status`, `effective`,
52
+ * `direction`, `object`, `type`) are NOT filters here — they are per-query
53
+ * attribute filters on the metric query itself, exactly like the Kubernetes
54
+ * templates use them.
55
+ */
56
+ export interface VMwareResourceFilters {
57
+ /** → `resource.vcenter.datacenter.name` equality. */
58
+ datacenterName?: string | undefined;
59
+ /**
60
+ * → `resource.vcenter.cluster.name` equality. Present on cluster, host,
61
+ * VM and resource-pool series when the object sits inside a cluster;
62
+ * absent for standalone ESXi hosts and the objects on them.
63
+ */
64
+ clusterName?: string | undefined;
65
+ /**
66
+ * → `resource.vcenter.host.name` equality. Scopes to the ESXi host's own
67
+ * series AND to the series of every VM it runs (the receiver stamps the
68
+ * parent host on VM resources), so a host filter alone still fans out
69
+ * across the VMs of that host — combine with `vmName` to target one VM.
70
+ */
71
+ hostName?: string | undefined;
72
+ /** → `resource.vcenter.vm.name` equality. */
73
+ vmName?: string | undefined;
74
+ /** → `resource.vcenter.datastore.name` equality. */
75
+ datastoreName?: string | undefined;
76
+ /**
77
+ * → `resource.vcenter.resource_pool.inventory_path` equality. The
78
+ * inventory path (`/DC/host/Cluster/Resources/pool`) is used rather than
79
+ * the pool name because pool names are only unique within a parent.
80
+ */
81
+ resourcePoolPath?: string | undefined;
82
+ }
83
+
84
+ export default interface MonitorStepVMwareMonitor {
85
+ /**
86
+ * The `vmware.vcenter.name` resource attribute the agent stamps on every
87
+ * metric — one value per vCenter Server (or standalone ESXi host) the
88
+ * agent connects to.
89
+ */
90
+ vcenterIdentifier: string;
91
+ resourceFilters: VMwareResourceFilters;
92
+ metricViewConfig: MetricsViewConfig;
93
+ rollingTime: RollingTime;
94
+ }
95
+
96
+ export class MonitorStepVMwareMonitorUtil {
97
+ public static getDefault(): MonitorStepVMwareMonitor {
98
+ return {
99
+ vcenterIdentifier: "",
100
+ resourceFilters: {},
101
+ metricViewConfig: {
102
+ queryConfigs: [],
103
+ formulaConfigs: [],
104
+ },
105
+ /*
106
+ * The VMware Agent polls vCenter every VCENTER_COLLECTION_INTERVAL
107
+ * (2 minutes by default) and the vcenter receiver emits ONE sample per
108
+ * object per collection, so the 1-minute window the 30-second Proxmox
109
+ * and Kubernetes agents default to would hold no sample on roughly
110
+ * every other evaluation — a hand-built monitor would flip between
111
+ * "no criteria met" and firing every tick. Default to 5 minutes (at
112
+ * least two collections) so the step form, the metric picker, the API
113
+ * and Terraform all seed the same safe window; the shipped templates
114
+ * hard-code 5 / 15 minutes for the same reason.
115
+ */
116
+ rollingTime: RollingTime.Past5Minutes,
117
+ };
118
+ }
119
+
120
+ public static fromJSON(json: JSONObject): MonitorStepVMwareMonitor {
121
+ return json as any as MonitorStepVMwareMonitor;
122
+ }
123
+
124
+ public static toJSON(monitor: MonitorStepVMwareMonitor): JSONObject {
125
+ return monitor as any as JSONObject;
126
+ }
127
+ }
@@ -0,0 +1,291 @@
1
+ import BadDataException from "../Exception/BadDataException";
2
+ import MonitorType from "./MonitorType";
3
+
4
+ export interface MonitorTemplateSyncField {
5
+ path: string;
6
+ label: string;
7
+ description?: string;
8
+ }
9
+
10
+ /**
11
+ * The shared catalogue for the template editor and sync service. Only these
12
+ * named fields can be preserved; criteria and step identities always sync.
13
+ * Some options preserve related values together to keep credentials and
14
+ * resource selectors consistent.
15
+ */
16
+ export default class MonitorTemplateSyncFieldUtil {
17
+ public static getFields(
18
+ monitorType: MonitorType,
19
+ ): Array<MonitorTemplateSyncField> {
20
+ const fields: Array<MonitorTemplateSyncField> = [];
21
+ const add: (path: string, label: string, description?: string) => void = (
22
+ path: string,
23
+ label: string,
24
+ description?: string,
25
+ ): void => {
26
+ fields.push({ path, label, ...(description ? { description } : {}) });
27
+ };
28
+
29
+ if (
30
+ [
31
+ MonitorType.Website,
32
+ MonitorType.API,
33
+ MonitorType.Ping,
34
+ MonitorType.IP,
35
+ MonitorType.Port,
36
+ MonitorType.SSLCertificate,
37
+ ].includes(monitorType)
38
+ ) {
39
+ add("monitorDestination", "Monitor destination");
40
+ add("requestTimeoutInMs", "Request timeout");
41
+ add("retryCount", "Retry count");
42
+ }
43
+
44
+ if (monitorType === MonitorType.API) {
45
+ add(
46
+ "requestHeaders",
47
+ "Request headers",
48
+ "Keep the monitor's entire set of request headers.",
49
+ );
50
+ add("requestType", "Request method");
51
+ add("requestBody", "Request body");
52
+ }
53
+
54
+ if ([MonitorType.Website, MonitorType.API].includes(monitorType)) {
55
+ add("doNotFollowRedirects", "Redirect behavior");
56
+ add("allowSelfSignedCertificates", "Allow self-signed certificates");
57
+ add(
58
+ "tlsClientAuthentication",
59
+ "Client certificate authentication",
60
+ "Keep the certificate, private key, and key passphrase together.",
61
+ );
62
+ }
63
+
64
+ if (monitorType === MonitorType.Port) {
65
+ add("monitorDestinationPort", "Port");
66
+ }
67
+
68
+ if (
69
+ [MonitorType.SyntheticMonitor, MonitorType.CustomJavaScriptCode].includes(
70
+ monitorType,
71
+ )
72
+ ) {
73
+ add("customCode", "Check code");
74
+ }
75
+
76
+ if (monitorType === MonitorType.SyntheticMonitor) {
77
+ add("browserTypes", "Browsers");
78
+ add("screenSizeTypes", "Screen sizes");
79
+ add("retryCountOnError", "Retry count on error");
80
+ }
81
+
82
+ if (monitorType === MonitorType.DNS) {
83
+ add("dnsMonitor.queryName", "DNS query name");
84
+ add("dnsMonitor.recordType", "DNS record type");
85
+ add(
86
+ "dnsMonitor.resolver",
87
+ "DNS resolver",
88
+ "Keep the DNS server and port together.",
89
+ );
90
+ add("dnsMonitor.timeout", "DNS timeout");
91
+ add("dnsMonitor.retries", "DNS retries");
92
+ }
93
+
94
+ if (monitorType === MonitorType.Domain) {
95
+ add("domainMonitor.domainName", "Domain name");
96
+ add("domainMonitor.lookupMethod", "Domain lookup method");
97
+ add("domainMonitor.timeout", "Lookup timeout");
98
+ add("domainMonitor.retries", "Lookup retries");
99
+ }
100
+
101
+ if (monitorType === MonitorType.DNSSEC) {
102
+ add("dnssecMonitor.domainName", "Domain name");
103
+ add("dnssecMonitor.resolvers", "DNS resolvers");
104
+ add(
105
+ "dnssecMonitor.checkNameserverConsistency",
106
+ "Nameserver consistency check",
107
+ );
108
+ add(
109
+ "dnssecMonitor.signatureExpiryWarningDays",
110
+ "Signature expiry warning",
111
+ );
112
+ add("dnssecMonitor.timeout", "DNSSEC timeout");
113
+ add("dnssecMonitor.retries", "DNSSEC retries");
114
+ }
115
+
116
+ if ([MonitorType.SQLQuery, MonitorType.Database].includes(monitorType)) {
117
+ const prefix: string =
118
+ monitorType === MonitorType.SQLQuery ? "sqlMonitor" : "databaseMonitor";
119
+ add(
120
+ `${prefix}.connection`,
121
+ "Database connection",
122
+ "Keep the database engine, host, port, database name, credentials, and TLS settings together.",
123
+ );
124
+ add(`${prefix}.connectionTimeoutInMs`, "Connection timeout");
125
+ add(`${prefix}.statementTimeoutInMs`, "Statement timeout");
126
+ if (monitorType === MonitorType.SQLQuery) {
127
+ add("sqlMonitor.query", "SQL query");
128
+ add("sqlMonitor.maxRows", "Maximum result rows");
129
+ } else {
130
+ add("databaseMonitor.enabledMetricGroups", "Collected metric groups");
131
+ }
132
+ }
133
+
134
+ if (monitorType === MonitorType.ExternalStatusPage) {
135
+ add("externalStatusPageMonitor.statusPageUrl", "Status page URL");
136
+ add("externalStatusPageMonitor.provider", "Status page provider");
137
+ add(
138
+ "externalStatusPageMonitor.components",
139
+ "Status page components",
140
+ "Keep the selected component group and component together.",
141
+ );
142
+ add("externalStatusPageMonitor.timeout", "Status page timeout");
143
+ add("externalStatusPageMonitor.retries", "Status page retries");
144
+ }
145
+
146
+ const infrastructure: Partial<
147
+ Record<MonitorType, [string, string, string]>
148
+ > = {
149
+ [MonitorType.Kubernetes]: [
150
+ "kubernetesMonitor",
151
+ "clusterIdentifier",
152
+ "Kubernetes cluster",
153
+ ],
154
+ [MonitorType.Docker]: ["dockerMonitor", "hostIdentifier", "Docker host"],
155
+ [MonitorType.Host]: ["hostMonitor", "hostIdentifier", "Host"],
156
+ [MonitorType.Podman]: ["podmanMonitor", "hostIdentifier", "Podman host"],
157
+ [MonitorType.Proxmox]: [
158
+ "proxmoxMonitor",
159
+ "clusterIdentifier",
160
+ "Proxmox cluster",
161
+ ],
162
+ [MonitorType.DockerSwarm]: [
163
+ "dockerSwarmMonitor",
164
+ "clusterIdentifier",
165
+ "Docker Swarm cluster",
166
+ ],
167
+ [MonitorType.Ceph]: ["cephMonitor", "clusterIdentifier", "Ceph cluster"],
168
+ [MonitorType.IoTDevice]: ["iotMonitor", "fleetIdentifier", "IoT fleet"],
169
+ };
170
+ const infrastructureConfig: [string, string, string] | undefined =
171
+ infrastructure[monitorType];
172
+ if (infrastructureConfig) {
173
+ const [prefix, identity, label]: [string, string, string] =
174
+ infrastructureConfig;
175
+ add(`${prefix}.${identity}`, label);
176
+ if (monitorType === MonitorType.Kubernetes) {
177
+ add(`${prefix}.resources`, "Resource scope and filters");
178
+ } else if (
179
+ [MonitorType.Docker, MonitorType.Podman].includes(monitorType)
180
+ ) {
181
+ add(`${prefix}.containerFilters`, "Container filters");
182
+ } else if (monitorType !== MonitorType.Host) {
183
+ add(`${prefix}.resourceFilters`, "Resource filters");
184
+ }
185
+ add(`${prefix}.metricViewConfig`, "Metric queries");
186
+ add(`${prefix}.rollingTime`, "Query time window");
187
+ }
188
+
189
+ const telemetry: Partial<Record<MonitorType, [string, string]>> = {
190
+ [MonitorType.Logs]: ["logMonitor", "Log query configuration"],
191
+ [MonitorType.SecurityEvents]: [
192
+ "securityEventsMonitor",
193
+ "Security event query configuration",
194
+ ],
195
+ [MonitorType.Traces]: ["traceMonitor", "Trace query configuration"],
196
+ [MonitorType.Metrics]: ["metricMonitor", "Metric query configuration"],
197
+ [MonitorType.Exceptions]: [
198
+ "exceptionMonitor",
199
+ "Exception query configuration",
200
+ ],
201
+ [MonitorType.Profiles]: ["profileMonitor", "Profile query configuration"],
202
+ };
203
+ const telemetryConfig: [string, string] | undefined =
204
+ telemetry[monitorType];
205
+ if (telemetryConfig) {
206
+ add(...telemetryConfig);
207
+ }
208
+
209
+ return fields;
210
+ }
211
+
212
+ public static parse(
213
+ value: unknown,
214
+ monitorType?: MonitorType,
215
+ ): Array<string> | undefined {
216
+ if (value === undefined) {
217
+ return undefined;
218
+ }
219
+
220
+ if (
221
+ !Array.isArray(value) ||
222
+ value.some((path: unknown): boolean => {
223
+ return typeof path !== "string";
224
+ })
225
+ ) {
226
+ throw new BadDataException(
227
+ "Do not sync fields must be an array of supported field names.",
228
+ );
229
+ }
230
+
231
+ const allowedFields: Set<string> = new Set(
232
+ (monitorType === undefined ? Object.values(MonitorType) : [monitorType])
233
+ .flatMap((type: MonitorType): Array<MonitorTemplateSyncField> => {
234
+ return this.getFields(type);
235
+ })
236
+ .map((field: MonitorTemplateSyncField): string => {
237
+ return field.path;
238
+ }),
239
+ );
240
+
241
+ for (const path of value) {
242
+ if (!allowedFields.has(path)) {
243
+ throw new BadDataException(`Unsupported do not sync field: ${path}.`);
244
+ }
245
+ }
246
+
247
+ return [...new Set(value as Array<string>)];
248
+ }
249
+
250
+ public static getPaths(field: string): Array<string> {
251
+ // Validate even when called independently of parse: never traverse arbitrary paths.
252
+ this.parse([field]);
253
+ if (field === "tlsClientAuthentication") {
254
+ return ["tlsClientCertificate", "tlsClientKey", "tlsClientKeyPassphrase"];
255
+ }
256
+ if (field === "dnsMonitor.resolver") {
257
+ return ["dnsMonitor.hostname", "dnsMonitor.port"];
258
+ }
259
+ if (
260
+ ["sqlMonitor.connection", "databaseMonitor.connection"].includes(field)
261
+ ) {
262
+ const prefix: string = field.split(".")[0]!;
263
+ return [
264
+ "databaseType",
265
+ "host",
266
+ "port",
267
+ "databaseName",
268
+ "username",
269
+ "password",
270
+ "useWindowsIntegratedAuthentication",
271
+ "useSsl",
272
+ "rejectUnauthorizedSsl",
273
+ ].map((key: string): string => {
274
+ return `${prefix}.${key}`;
275
+ });
276
+ }
277
+ if (field === "externalStatusPageMonitor.components") {
278
+ return [
279
+ "externalStatusPageMonitor.componentGroupName",
280
+ "externalStatusPageMonitor.componentName",
281
+ ];
282
+ }
283
+ if (field === "kubernetesMonitor.resources") {
284
+ return [
285
+ "kubernetesMonitor.resourceScope",
286
+ "kubernetesMonitor.resourceFilters",
287
+ ];
288
+ }
289
+ return [field];
290
+ }
291
+ }