@oneuptime/common 13.0.6 → 13.0.7

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 (589) hide show
  1. package/Models/DatabaseModels/AIAgentOwnerTeam.ts +6 -0
  2. package/Models/DatabaseModels/AIAgentOwnerUser.ts +6 -0
  3. package/Models/DatabaseModels/Alert.ts +12 -0
  4. package/Models/DatabaseModels/AlertEpisodeOwnerTeam.ts +6 -1
  5. package/Models/DatabaseModels/AlertEpisodeOwnerUser.ts +6 -1
  6. package/Models/DatabaseModels/AlertOwnerTeam.ts +6 -1
  7. package/Models/DatabaseModels/AlertOwnerUser.ts +6 -1
  8. package/Models/DatabaseModels/CephClusterOwnerTeam.ts +6 -0
  9. package/Models/DatabaseModels/CephClusterOwnerUser.ts +6 -0
  10. package/Models/DatabaseModels/CloudResourceOwnerTeam.ts +6 -0
  11. package/Models/DatabaseModels/CloudResourceOwnerUser.ts +6 -0
  12. package/Models/DatabaseModels/DashboardOwnerTeam.ts +6 -1
  13. package/Models/DatabaseModels/DashboardOwnerUser.ts +6 -1
  14. package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +8 -0
  15. package/Models/DatabaseModels/DockerHostOwnerTeam.ts +6 -0
  16. package/Models/DatabaseModels/DockerHostOwnerUser.ts +6 -0
  17. package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +6 -0
  18. package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +6 -0
  19. package/Models/DatabaseModels/HostOwnerTeam.ts +6 -0
  20. package/Models/DatabaseModels/HostOwnerUser.ts +6 -0
  21. package/Models/DatabaseModels/Incident.ts +12 -0
  22. package/Models/DatabaseModels/IncidentEpisodeOwnerTeam.ts +6 -1
  23. package/Models/DatabaseModels/IncidentEpisodeOwnerUser.ts +6 -1
  24. package/Models/DatabaseModels/IncidentOwnerTeam.ts +6 -1
  25. package/Models/DatabaseModels/IncidentOwnerUser.ts +6 -1
  26. package/Models/DatabaseModels/IncidentTemplateOwnerTeam.ts +6 -0
  27. package/Models/DatabaseModels/IncidentTemplateOwnerUser.ts +6 -0
  28. package/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.ts +6 -1
  29. package/Models/DatabaseModels/IncomingCallPolicyOwnerUser.ts +6 -1
  30. package/Models/DatabaseModels/IoTFleetOwnerTeam.ts +6 -0
  31. package/Models/DatabaseModels/IoTFleetOwnerUser.ts +6 -0
  32. package/Models/DatabaseModels/KubernetesClusterOwnerTeam.ts +6 -0
  33. package/Models/DatabaseModels/KubernetesClusterOwnerUser.ts +6 -0
  34. package/Models/DatabaseModels/Monitor.ts +2 -3
  35. package/Models/DatabaseModels/MonitorGroupOwnerTeam.ts +6 -0
  36. package/Models/DatabaseModels/MonitorGroupOwnerUser.ts +6 -0
  37. package/Models/DatabaseModels/MonitorOwnerTeam.ts +6 -1
  38. package/Models/DatabaseModels/MonitorOwnerUser.ts +6 -1
  39. package/Models/DatabaseModels/MonitorTemplate.ts +2 -3
  40. package/Models/DatabaseModels/NetworkDeviceOwnerTeam.ts +6 -0
  41. package/Models/DatabaseModels/NetworkDeviceOwnerUser.ts +6 -0
  42. package/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.ts +6 -1
  43. package/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.ts +6 -1
  44. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.ts +6 -1
  45. package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.ts +6 -1
  46. package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +6 -0
  47. package/Models/DatabaseModels/PodmanHostOwnerUser.ts +6 -0
  48. package/Models/DatabaseModels/ProbeOwnerTeam.ts +6 -0
  49. package/Models/DatabaseModels/ProbeOwnerUser.ts +6 -0
  50. package/Models/DatabaseModels/ProxmoxClusterOwnerTeam.ts +6 -0
  51. package/Models/DatabaseModels/ProxmoxClusterOwnerUser.ts +6 -0
  52. package/Models/DatabaseModels/RumApplicationOwnerTeam.ts +6 -0
  53. package/Models/DatabaseModels/RumApplicationOwnerUser.ts +6 -0
  54. package/Models/DatabaseModels/RunbookOwnerTeam.ts +6 -1
  55. package/Models/DatabaseModels/RunbookOwnerUser.ts +6 -1
  56. package/Models/DatabaseModels/RunnerOwnerTeam.ts +6 -1
  57. package/Models/DatabaseModels/RunnerOwnerUser.ts +6 -1
  58. package/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.ts +6 -1
  59. package/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.ts +6 -1
  60. package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.ts +8 -0
  61. package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +8 -0
  62. package/Models/DatabaseModels/ServerlessFunctionOwnerTeam.ts +6 -0
  63. package/Models/DatabaseModels/ServerlessFunctionOwnerUser.ts +6 -0
  64. package/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.ts +6 -1
  65. package/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.ts +6 -1
  66. package/Models/DatabaseModels/ServiceOwnerTeam.ts +6 -0
  67. package/Models/DatabaseModels/ServiceOwnerUser.ts +6 -0
  68. package/Models/DatabaseModels/StatusPageOwnerTeam.ts +6 -1
  69. package/Models/DatabaseModels/StatusPageOwnerUser.ts +6 -1
  70. package/Models/DatabaseModels/VMwareVCenterOwnerTeam.ts +6 -0
  71. package/Models/DatabaseModels/VMwareVCenterOwnerUser.ts +6 -0
  72. package/Models/DatabaseModels/WorkflowOwnerTeam.ts +6 -1
  73. package/Models/DatabaseModels/WorkflowOwnerUser.ts +6 -1
  74. package/Scripts/benchmark-fanin-capacity.js +2 -2
  75. package/Server/API/AIAgentDataAPI.ts +1 -1
  76. package/Server/API/AIChatAPI.ts +6 -4
  77. package/Server/API/AIInvestigationAPI.ts +7 -0
  78. package/Server/API/StatusPageAPI.ts +13 -0
  79. package/Server/Infrastructure/Postgres/LocalMigrationGenerationDataSource.ts +1 -1
  80. package/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.ts +1057 -0
  81. package/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.ts +25 -0
  82. package/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.ts +31 -0
  83. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  84. package/Server/Infrastructure/Postgres/SchemaMigrations/Readme.md +6 -4
  85. package/Server/Middleware/IdentityRateLimit.ts +34 -1
  86. package/Server/Middleware/PublicDashboardRateLimit.ts +169 -39
  87. package/Server/Services/AlertEpisodeService.ts +13 -34
  88. package/Server/Services/AlertGroupingEngineService.ts +7 -4
  89. package/Server/Services/AlertService.ts +13 -32
  90. package/Server/Services/CephClusterOwnerRuleEngineService.ts +18 -10
  91. package/Server/Services/CloudResourceOwnerRuleEngineService.ts +18 -10
  92. package/Server/Services/DashboardOwnerRuleEngineService.ts +18 -10
  93. package/Server/Services/DatabaseService.ts +101 -1
  94. package/Server/Services/DockerHostOwnerRuleEngineService.ts +18 -10
  95. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +18 -10
  96. package/Server/Services/HostOwnerRuleEngineService.ts +18 -10
  97. package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +6 -4
  98. package/Server/Services/IncidentEpisodeService.ts +15 -75
  99. package/Server/Services/IncidentGroupingEngineService.ts +7 -4
  100. package/Server/Services/IncidentService.ts +13 -32
  101. package/Server/Services/IncidentTemplateService.ts +13 -36
  102. package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +18 -10
  103. package/Server/Services/IoTFleetOwnerRuleEngineService.ts +18 -10
  104. package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +18 -10
  105. package/Server/Services/MonitorService.ts +13 -32
  106. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +18 -10
  107. package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +18 -10
  108. package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +18 -10
  109. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +18 -10
  110. package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +18 -10
  111. package/Server/Services/RumApplicationOwnerRuleEngineService.ts +18 -10
  112. package/Server/Services/RunbookOwnerRuleEngineService.ts +18 -10
  113. package/Server/Services/ScheduledMaintenanceService.ts +13 -34
  114. package/Server/Services/ScheduledMaintenanceTemplateService.ts +12 -34
  115. package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +18 -10
  116. package/Server/Services/ServiceOwnerRuleEngineService.ts +18 -10
  117. package/Server/Services/StatusPagePrivateUserService.ts +38 -29
  118. package/Server/Services/StatusPagePrivateUserSessionService.ts +49 -1
  119. package/Server/Services/StatusPageService.ts +59 -36
  120. package/Server/Services/UserSessionService.ts +6 -0
  121. package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +18 -10
  122. package/Server/Services/WorkflowOwnerRuleEngineService.ts +18 -10
  123. package/Server/Static/Brand/README.md +7 -7
  124. package/Server/Static/Vendor/README.md +7 -7
  125. package/Server/Types/Database/Permissions/OwnedScopePermission.ts +18 -9
  126. package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +82 -0
  127. package/Server/Utils/AI/Chat/ChatAgentRunner.ts +21 -8
  128. package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +41 -4
  129. package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +1 -1
  130. package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +1 -1
  131. package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +13 -5
  132. package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +53 -13
  133. package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +51 -14
  134. package/Server/Utils/AI/SRE/InvestigationEligibility.ts +292 -0
  135. package/Server/Utils/AI/SRE/InvestigationQueue.ts +25 -0
  136. package/Server/Utils/AI/Toolbox/Index.ts +43 -13
  137. package/Server/Utils/AI/Toolbox/ResourceTools.ts +952 -0
  138. package/Server/Utils/AI/Toolbox/RumTools.ts +424 -0
  139. package/Server/Utils/AI/Toolbox/ToolTypes.ts +10 -0
  140. package/Server/Utils/AI/Toolbox/TraceTools.ts +2 -1
  141. package/Server/Utils/Database/PostgresErrorTranslator.ts +14 -0
  142. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +137 -126
  143. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +4 -1
  144. package/Server/Utils/Rules/OwnerRuleAssignment.ts +157 -6
  145. package/Server/Utils/Telemetry/TelemetryEntity.ts +205 -6
  146. package/SslCertificates/GlobalSign.crt +26 -0
  147. package/SslCertificates/Readme.md +3 -0
  148. package/Tests/App/AdminDashboard/EnterpriseLicenseInstanceActivity.test.tsx +451 -0
  149. package/Tests/App/Dashboard/AIInsightsChatPanel.test.tsx +881 -0
  150. package/Tests/App/Dashboard/AIInsightsPageContext.test.ts +458 -0
  151. package/Tests/App/Dashboard/AIInsightsResourceCitations.test.ts +124 -0
  152. package/Tests/App/Dashboard/AIInsightsResourcePageContext.test.ts +798 -0
  153. package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +7 -0
  154. package/Tests/App/Dashboard/DashboardChartWidgetZoom.test.tsx +104 -0
  155. package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +156 -64
  156. package/Tests/App/Dashboard/DiscoveryScanStatusMessage.test.tsx +970 -0
  157. package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +406 -12
  158. package/Tests/App/Dashboard/EmbeddedMetricEventScope.test.tsx +358 -0
  159. package/Tests/App/Dashboard/ErrorPatternEventScope.test.tsx +148 -0
  160. package/Tests/App/Dashboard/EventOverlayAdditionalResourceScope.test.ts +255 -0
  161. package/Tests/App/Dashboard/EventOverlayScope.test.ts +845 -0
  162. package/Tests/App/Dashboard/EventOverlayScopeHook.test.tsx +903 -0
  163. package/Tests/App/Dashboard/ExternalStatusPageCriteriaFilter.test.ts +3 -3
  164. package/Tests/App/Dashboard/InvestigationDrawer.test.tsx +21 -0
  165. package/Tests/App/Dashboard/InvestigationNotStarted.test.tsx +761 -0
  166. package/Tests/App/Dashboard/InvestigationPanel.test.tsx +7 -4
  167. package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +15 -7
  168. package/Tests/App/Dashboard/MetricsViewerEventScopeNavigation.test.tsx +264 -0
  169. package/Tests/App/Dashboard/MonitorSummaryTestMonitorButton.test.tsx +342 -0
  170. package/Tests/App/Dashboard/MonitorTestForm.test.tsx +612 -0
  171. package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +301 -0
  172. package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +74 -2
  173. package/Tests/App/Dashboard/TextClampLayoutHarness.ts +224 -0
  174. package/Tests/Models/InventoryItemNaming.test.ts +54 -0
  175. package/Tests/Server/API/AIChatRouteAuthorization.test.ts +161 -0
  176. package/Tests/Server/API/AIInvestigationAPI.test.ts +14 -0
  177. package/Tests/Server/API/AIInvestigationAvailabilityAuthorization.test.ts +260 -0
  178. package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +133 -0
  179. package/Tests/Server/API/StatusPageMasterPasswordRateLimit.test.ts +482 -0
  180. package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +1 -1
  181. package/Tests/Server/Infrastructure/ClickhouseKeepAliveOptions.test.ts +1 -1
  182. package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +38 -16
  183. package/Tests/Server/Infrastructure/E2EClickHouseFixtureAccess.test.ts +106 -31
  184. package/Tests/Server/Infrastructure/ExampleDockerfiles.test.ts +46 -12
  185. package/Tests/Server/Infrastructure/Postgres/MonitorDescriptionMigration.test.ts +422 -0
  186. package/Tests/Server/Infrastructure/TelemetryExporterDeploymentConfig.test.ts +1 -1
  187. package/Tests/Server/Infrastructure/ValkeyDeploymentConfig.test.ts +25 -4
  188. package/Tests/Server/Middleware/IdentityRateLimit.test.ts +72 -0
  189. package/Tests/Server/Middleware/PublicDashboardRateLimit.test.ts +12 -12
  190. package/Tests/Server/Middleware/PublicDashboardRateLimitStatusPage.test.ts +800 -0
  191. package/Tests/Server/Services/AIInvestigationDecisionPostgres.test.ts +346 -0
  192. package/Tests/Server/Services/AddOwnersIdempotency.test.ts +471 -0
  193. package/Tests/Server/Services/DatabaseServiceAutoOwnerOnCreate.test.ts +250 -0
  194. package/Tests/Server/Services/DatabaseServiceUniqueColumnsTogether.test.ts +622 -0
  195. package/Tests/Server/Services/MonitorDescriptionValidation.test.ts +211 -0
  196. package/Tests/Server/Services/MonitorTemplateDescriptionPropagation.test.ts +269 -0
  197. package/Tests/Server/Services/OwnerRowUniqueness.test.ts +504 -0
  198. package/Tests/Server/Services/RuleRun/OwnerRuleEnginesGroupARun.test.ts +43 -0
  199. package/Tests/Server/Services/SessionRetention.test.ts +334 -0
  200. package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +172 -0
  201. package/Tests/Server/Services/StatusPagePrivateUserReadAccess.test.ts +178 -0
  202. package/Tests/Server/Services/StatusPagePrivateUserReadAccessPostgres.test.ts +311 -0
  203. package/Tests/Server/Services/StatusPagePrivateUserSessionService.test.ts +216 -1
  204. package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +1 -1
  205. package/Tests/Server/Services/UserOnCallLogNoNotificationRules.test.ts +1 -1
  206. package/Tests/Server/Types/Database/EventOverlayScopePostgres.test.ts +626 -0
  207. package/Tests/Server/Types/Database/Permissions/InfrastructureOwnershipScope.test.ts +668 -0
  208. package/Tests/Server/Types/Database/Permissions/SelectRejectionMessageContract.test.ts +1 -0
  209. package/Tests/Server/Types/Database/Permissions/UserNotificationRuleScoping.test.ts +1 -1
  210. package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +16 -9
  211. package/Tests/Server/Utils/AI/ChatAgentRunner.test.ts +137 -1
  212. package/Tests/Server/Utils/AI/InvestigationEligibility.test.ts +697 -0
  213. package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +105 -0
  214. package/Tests/Server/Utils/AI/RemediationHandoff.test.ts +16 -5
  215. package/Tests/Server/Utils/AI/ResourceTools.test.ts +1304 -0
  216. package/Tests/Server/Utils/AI/RumTools.test.ts +769 -0
  217. package/Tests/Server/Utils/Database/PostgresErrorTranslator.test.ts +63 -0
  218. package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaEvaluateOverTime.test.ts +11 -9
  219. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +62 -45
  220. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +25 -24
  221. package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaHumanMessages.test.ts +513 -0
  222. package/Tests/Server/Utils/Monitor/Criteria/CustomCodeMonitorCriteria.test.ts +2 -2
  223. package/Tests/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.test.ts +1 -1
  224. package/Tests/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.test.ts +9 -9
  225. package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +7 -5
  226. package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +2 -2
  227. package/Tests/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.test.ts +4 -3
  228. package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +2 -2
  229. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +3 -2
  230. package/Tests/Server/Utils/Monitor/MonitorCriteriaHumanMessages.test.ts +529 -0
  231. package/Tests/Server/Utils/Rules/OwnerRuleAssignment.test.ts +412 -4
  232. package/Tests/Server/Utils/SecurityEvent/Connectors/GoogleSecOps/GoogleSecOpsPollingClickhouseIntegration.test.ts +1 -1
  233. package/Tests/Server/Utils/TailwindBuildCopy.test.ts +14 -2
  234. package/Tests/Server/Utils/Telemetry/HostAssetAttributesFromOtlp.test.ts +235 -0
  235. package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +385 -2
  236. package/Tests/Server/Utils/VendorAssets.test.ts +17 -3
  237. package/Tests/Types/AI/AIChatPageContext.test.ts +0 -0
  238. package/Tests/Types/AI/AIResourceContext.test.ts +312 -0
  239. package/Tests/Types/Database/UniqueColumnsTogether.test.ts +100 -0
  240. package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +4 -4
  241. package/Tests/Types/Monitor/MonitorStepRetryPersistence.test.ts +125 -0
  242. package/Tests/Types/WebsiteRequest.test.ts +44 -0
  243. package/Tests/UI/Components/Forms/MonitorDescriptionForm.test.tsx +410 -0
  244. package/Tests/UI/Components/ModelTable/BaseModelTableReadPermissions.test.tsx +439 -0
  245. package/Tests/UI/Components/NavBarMenuSearch.test.tsx +372 -0
  246. package/Tests/UI/EsbuildConfig.test.ts +1 -1
  247. package/Tests/UI/Monitor/MonitorStepRetrySettings.test.tsx +616 -0
  248. package/Tests/UI/ReactRouterSingletonBuild.test.ts +4 -2
  249. package/Tests/UI/Rum/ReplayEngine.test.ts +179 -0
  250. package/Tests/UI/Rum/ReplayHeader.test.tsx +23 -0
  251. package/Tests/UI/Rum/ReplayScrubber.test.tsx +88 -0
  252. package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +83 -0
  253. package/Tests/UI/Rum/ReplayTabSwitcher.test.tsx +33 -0
  254. package/Tests/Utils/API.test.ts +96 -0
  255. package/Tests/Utils/HTTPResponseBodyReader.test.ts +188 -1
  256. package/Tests/Utils/Metrics/MetricEventScopeUrl.test.ts +101 -0
  257. package/Tests/Utils/Monitor/MonitorTestAvailabilityUtil.test.ts +256 -0
  258. package/Tests/Utils/Telemetry/HostIpAddresses.test.ts +105 -0
  259. package/Types/AI/AIChatPageContext.ts +87 -2
  260. package/Types/AI/AIChatTypes.ts +4 -0
  261. package/Types/AI/AIResourceContext.ts +198 -0
  262. package/Types/AI/InvestigationNotStartedReason.ts +30 -0
  263. package/Types/Database/UniqueColumnsTogether.ts +55 -0
  264. package/Types/Metrics/MetricQueryConfigData.ts +8 -0
  265. package/Types/Rum/WebVitals.ts +71 -0
  266. package/Types/WebsiteRequest.ts +2 -0
  267. package/UI/Components/EditionLabel/EditionLabel.tsx +7 -5
  268. package/UI/Components/KeyboardShortcut/Screenshots/README.md +1 -1
  269. package/UI/Components/ModelTable/BaseModelTable.tsx +8 -0
  270. package/UI/Components/Navbar/NavBar.tsx +2 -0
  271. package/UI/Components/Navbar/NavBarMenuModal.tsx +6 -2
  272. package/UI/esbuild-config.js +4 -4
  273. package/Utils/API.ts +10 -1
  274. package/Utils/Dashboard/HtmlWidgetDocument.ts +1 -1
  275. package/Utils/HTTPResponseBodyReader.ts +64 -8
  276. package/Utils/Metrics/MetricExplorerUrl.ts +19 -0
  277. package/Utils/Monitor/MonitorTestAvailabilityUtil.ts +92 -0
  278. package/Utils/Telemetry/HostIpAddresses.ts +46 -2
  279. package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js +4 -1
  280. package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js.map +1 -1
  281. package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js +4 -1
  282. package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js.map +1 -1
  283. package/build/dist/Models/DatabaseModels/Alert.js +12 -0
  284. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  285. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerTeam.js +3 -1
  286. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerTeam.js.map +1 -1
  287. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerUser.js +3 -1
  288. package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerUser.js.map +1 -1
  289. package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js +3 -1
  290. package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js.map +1 -1
  291. package/build/dist/Models/DatabaseModels/AlertOwnerUser.js +3 -1
  292. package/build/dist/Models/DatabaseModels/AlertOwnerUser.js.map +1 -1
  293. package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js +4 -1
  294. package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js.map +1 -1
  295. package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js +4 -1
  296. package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js.map +1 -1
  297. package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js +4 -1
  298. package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js.map +1 -1
  299. package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js +4 -1
  300. package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js.map +1 -1
  301. package/build/dist/Models/DatabaseModels/DashboardOwnerTeam.js +3 -1
  302. package/build/dist/Models/DatabaseModels/DashboardOwnerTeam.js.map +1 -1
  303. package/build/dist/Models/DatabaseModels/DashboardOwnerUser.js +3 -1
  304. package/build/dist/Models/DatabaseModels/DashboardOwnerUser.js.map +1 -1
  305. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +3 -0
  306. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  307. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js +4 -1
  308. package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js.map +1 -1
  309. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js +4 -1
  310. package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js.map +1 -1
  311. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +4 -1
  312. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -1
  313. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +4 -1
  314. package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -1
  315. package/build/dist/Models/DatabaseModels/HostOwnerTeam.js +4 -1
  316. package/build/dist/Models/DatabaseModels/HostOwnerTeam.js.map +1 -1
  317. package/build/dist/Models/DatabaseModels/HostOwnerUser.js +4 -1
  318. package/build/dist/Models/DatabaseModels/HostOwnerUser.js.map +1 -1
  319. package/build/dist/Models/DatabaseModels/Incident.js +12 -0
  320. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  321. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js +3 -1
  322. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js.map +1 -1
  323. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js +3 -1
  324. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js.map +1 -1
  325. package/build/dist/Models/DatabaseModels/IncidentOwnerTeam.js +3 -1
  326. package/build/dist/Models/DatabaseModels/IncidentOwnerTeam.js.map +1 -1
  327. package/build/dist/Models/DatabaseModels/IncidentOwnerUser.js +3 -1
  328. package/build/dist/Models/DatabaseModels/IncidentOwnerUser.js.map +1 -1
  329. package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerTeam.js +4 -1
  330. package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerTeam.js.map +1 -1
  331. package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerUser.js +4 -1
  332. package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerUser.js.map +1 -1
  333. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js +3 -1
  334. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js.map +1 -1
  335. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js +3 -1
  336. package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js.map +1 -1
  337. package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js +4 -1
  338. package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js.map +1 -1
  339. package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js +4 -1
  340. package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js.map +1 -1
  341. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js +4 -1
  342. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js.map +1 -1
  343. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js +4 -1
  344. package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js.map +1 -1
  345. package/build/dist/Models/DatabaseModels/Monitor.js +2 -3
  346. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  347. package/build/dist/Models/DatabaseModels/MonitorGroupOwnerTeam.js +4 -1
  348. package/build/dist/Models/DatabaseModels/MonitorGroupOwnerTeam.js.map +1 -1
  349. package/build/dist/Models/DatabaseModels/MonitorGroupOwnerUser.js +4 -1
  350. package/build/dist/Models/DatabaseModels/MonitorGroupOwnerUser.js.map +1 -1
  351. package/build/dist/Models/DatabaseModels/MonitorOwnerTeam.js +3 -1
  352. package/build/dist/Models/DatabaseModels/MonitorOwnerTeam.js.map +1 -1
  353. package/build/dist/Models/DatabaseModels/MonitorOwnerUser.js +3 -1
  354. package/build/dist/Models/DatabaseModels/MonitorOwnerUser.js.map +1 -1
  355. package/build/dist/Models/DatabaseModels/MonitorTemplate.js +2 -3
  356. package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
  357. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js +4 -1
  358. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js.map +1 -1
  359. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js +4 -1
  360. package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js.map +1 -1
  361. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.js +3 -1
  362. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.js.map +1 -1
  363. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.js +3 -1
  364. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.js.map +1 -1
  365. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js +3 -1
  366. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js.map +1 -1
  367. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js +3 -1
  368. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js.map +1 -1
  369. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +4 -1
  370. package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -1
  371. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +4 -1
  372. package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -1
  373. package/build/dist/Models/DatabaseModels/ProbeOwnerTeam.js +4 -1
  374. package/build/dist/Models/DatabaseModels/ProbeOwnerTeam.js.map +1 -1
  375. package/build/dist/Models/DatabaseModels/ProbeOwnerUser.js +4 -1
  376. package/build/dist/Models/DatabaseModels/ProbeOwnerUser.js.map +1 -1
  377. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js +4 -1
  378. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js.map +1 -1
  379. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js +4 -1
  380. package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js.map +1 -1
  381. package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js +4 -1
  382. package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js.map +1 -1
  383. package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js +4 -1
  384. package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js.map +1 -1
  385. package/build/dist/Models/DatabaseModels/RunbookOwnerTeam.js +3 -1
  386. package/build/dist/Models/DatabaseModels/RunbookOwnerTeam.js.map +1 -1
  387. package/build/dist/Models/DatabaseModels/RunbookOwnerUser.js +3 -1
  388. package/build/dist/Models/DatabaseModels/RunbookOwnerUser.js.map +1 -1
  389. package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js +3 -1
  390. package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js.map +1 -1
  391. package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js +3 -1
  392. package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js.map +1 -1
  393. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.js +3 -1
  394. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.js.map +1 -1
  395. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.js +3 -1
  396. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.js.map +1 -1
  397. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.js +6 -1
  398. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.js.map +1 -1
  399. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +6 -1
  400. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js.map +1 -1
  401. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js +4 -1
  402. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js.map +1 -1
  403. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js +4 -1
  404. package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js.map +1 -1
  405. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js +3 -1
  406. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js.map +1 -1
  407. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js +3 -1
  408. package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js.map +1 -1
  409. package/build/dist/Models/DatabaseModels/ServiceOwnerTeam.js +4 -1
  410. package/build/dist/Models/DatabaseModels/ServiceOwnerTeam.js.map +1 -1
  411. package/build/dist/Models/DatabaseModels/ServiceOwnerUser.js +4 -1
  412. package/build/dist/Models/DatabaseModels/ServiceOwnerUser.js.map +1 -1
  413. package/build/dist/Models/DatabaseModels/StatusPageOwnerTeam.js +3 -1
  414. package/build/dist/Models/DatabaseModels/StatusPageOwnerTeam.js.map +1 -1
  415. package/build/dist/Models/DatabaseModels/StatusPageOwnerUser.js +3 -1
  416. package/build/dist/Models/DatabaseModels/StatusPageOwnerUser.js.map +1 -1
  417. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js +4 -1
  418. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js.map +1 -1
  419. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js +4 -1
  420. package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js.map +1 -1
  421. package/build/dist/Models/DatabaseModels/WorkflowOwnerTeam.js +3 -1
  422. package/build/dist/Models/DatabaseModels/WorkflowOwnerTeam.js.map +1 -1
  423. package/build/dist/Models/DatabaseModels/WorkflowOwnerUser.js +3 -1
  424. package/build/dist/Models/DatabaseModels/WorkflowOwnerUser.js.map +1 -1
  425. package/build/dist/Server/API/AIAgentDataAPI.js +1 -1
  426. package/build/dist/Server/API/AIChatAPI.js +3 -1
  427. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  428. package/build/dist/Server/API/AIInvestigationAPI.js +3 -0
  429. package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
  430. package/build/dist/Server/API/StatusPageAPI.js +9 -1
  431. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  432. package/build/dist/Server/Infrastructure/Postgres/LocalMigrationGenerationDataSource.js +1 -1
  433. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.js +602 -0
  434. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.js.map +1 -0
  435. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.js +14 -0
  436. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.js.map +1 -0
  437. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.js +20 -0
  438. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.js.map +1 -0
  439. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  440. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  441. package/build/dist/Server/Middleware/IdentityRateLimit.js +22 -1
  442. package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
  443. package/build/dist/Server/Middleware/PublicDashboardRateLimit.js +117 -36
  444. package/build/dist/Server/Middleware/PublicDashboardRateLimit.js.map +1 -1
  445. package/build/dist/Server/Services/AlertEpisodeService.js +13 -31
  446. package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
  447. package/build/dist/Server/Services/AlertGroupingEngineService.js +7 -4
  448. package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
  449. package/build/dist/Server/Services/AlertService.js +13 -31
  450. package/build/dist/Server/Services/AlertService.js.map +1 -1
  451. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +12 -8
  452. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
  453. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +12 -8
  454. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
  455. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +12 -8
  456. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
  457. package/build/dist/Server/Services/DatabaseService.js +71 -1
  458. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  459. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +12 -8
  460. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
  461. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +12 -8
  462. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
  463. package/build/dist/Server/Services/HostOwnerRuleEngineService.js +12 -8
  464. package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
  465. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +6 -4
  466. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
  467. package/build/dist/Server/Services/IncidentEpisodeService.js +15 -68
  468. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  469. package/build/dist/Server/Services/IncidentGroupingEngineService.js +7 -4
  470. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
  471. package/build/dist/Server/Services/IncidentService.js +13 -31
  472. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  473. package/build/dist/Server/Services/IncidentTemplateService.js +13 -31
  474. package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
  475. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +12 -8
  476. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
  477. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +12 -8
  478. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
  479. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +12 -8
  480. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
  481. package/build/dist/Server/Services/MonitorService.js +13 -31
  482. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  483. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +12 -8
  484. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
  485. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +12 -8
  486. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
  487. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +12 -8
  488. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
  489. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +12 -8
  490. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
  491. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +12 -8
  492. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
  493. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +12 -8
  494. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
  495. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +12 -8
  496. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
  497. package/build/dist/Server/Services/ScheduledMaintenanceService.js +13 -31
  498. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  499. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js +12 -29
  500. package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js.map +1 -1
  501. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +12 -8
  502. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
  503. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +12 -8
  504. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
  505. package/build/dist/Server/Services/StatusPagePrivateUserService.js +33 -25
  506. package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
  507. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +36 -1
  508. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -1
  509. package/build/dist/Server/Services/StatusPageService.js +50 -35
  510. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  511. package/build/dist/Server/Services/UserSessionService.js +5 -0
  512. package/build/dist/Server/Services/UserSessionService.js.map +1 -1
  513. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +12 -8
  514. package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -1
  515. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +12 -8
  516. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
  517. package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js +15 -10
  518. package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js.map +1 -1
  519. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +82 -0
  520. package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
  521. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +12 -3
  522. package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
  523. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +32 -4
  524. package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
  525. package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +1 -1
  526. package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +1 -1
  527. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +8 -5
  528. package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
  529. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +33 -13
  530. package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
  531. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +31 -10
  532. package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
  533. package/build/dist/Server/Utils/AI/SRE/InvestigationEligibility.js +205 -0
  534. package/build/dist/Server/Utils/AI/SRE/InvestigationEligibility.js.map +1 -0
  535. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +13 -0
  536. package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
  537. package/build/dist/Server/Utils/AI/Toolbox/Index.js +30 -6
  538. package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
  539. package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js +721 -0
  540. package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js.map +1 -0
  541. package/build/dist/Server/Utils/AI/Toolbox/RumTools.js +330 -0
  542. package/build/dist/Server/Utils/AI/Toolbox/RumTools.js.map +1 -0
  543. package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js.map +1 -1
  544. package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js +1 -1
  545. package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js.map +1 -1
  546. package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js +11 -0
  547. package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js.map +1 -1
  548. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +106 -101
  549. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
  550. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +4 -2
  551. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  552. package/build/dist/Server/Utils/Rules/OwnerRuleAssignment.js +94 -0
  553. package/build/dist/Server/Utils/Rules/OwnerRuleAssignment.js.map +1 -1
  554. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +171 -6
  555. package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
  556. package/build/dist/Types/AI/AIChatPageContext.js +68 -2
  557. package/build/dist/Types/AI/AIChatPageContext.js.map +1 -1
  558. package/build/dist/Types/AI/AIChatTypes.js +4 -0
  559. package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
  560. package/build/dist/Types/AI/AIResourceContext.js +162 -0
  561. package/build/dist/Types/AI/AIResourceContext.js.map +1 -0
  562. package/build/dist/Types/AI/InvestigationNotStartedReason.js +2 -0
  563. package/build/dist/Types/AI/InvestigationNotStartedReason.js.map +1 -0
  564. package/build/dist/Types/Database/UniqueColumnsTogether.js +19 -0
  565. package/build/dist/Types/Database/UniqueColumnsTogether.js.map +1 -0
  566. package/build/dist/Types/Metrics/MetricQueryConfigData.js.map +1 -1
  567. package/build/dist/Types/Rum/WebVitals.js +64 -0
  568. package/build/dist/Types/Rum/WebVitals.js.map +1 -0
  569. package/build/dist/Types/WebsiteRequest.js +2 -0
  570. package/build/dist/Types/WebsiteRequest.js.map +1 -1
  571. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +7 -5
  572. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  573. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +7 -0
  574. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  575. package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
  576. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +4 -2
  577. package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
  578. package/build/dist/Utils/API.js +8 -4
  579. package/build/dist/Utils/API.js.map +1 -1
  580. package/build/dist/Utils/HTTPResponseBodyReader.js +50 -6
  581. package/build/dist/Utils/HTTPResponseBodyReader.js.map +1 -1
  582. package/build/dist/Utils/Metrics/MetricExplorerUrl.js +14 -3
  583. package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -1
  584. package/build/dist/Utils/Monitor/MonitorTestAvailabilityUtil.js +68 -0
  585. package/build/dist/Utils/Monitor/MonitorTestAvailabilityUtil.js.map +1 -0
  586. package/build/dist/Utils/Telemetry/HostIpAddresses.js +42 -3
  587. package/build/dist/Utils/Telemetry/HostIpAddresses.js.map +1 -1
  588. package/package.json +5 -5
  589. package/test-setup.sh +2 -2
@@ -16,6 +16,7 @@ import TableColumn from "../../Types/Database/TableColumn";
16
16
  import TableColumnType from "../../Types/Database/TableColumnType";
17
17
  import TableMetadata from "../../Types/Database/TableMetadata";
18
18
  import TenantColumn from "../../Types/Database/TenantColumn";
19
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
19
20
  import IconProp from "../../Types/Icon/IconProp";
20
21
  import ObjectID from "../../Types/ObjectID";
21
22
  import Permission from "../../Types/Permission";
@@ -82,6 +83,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
82
83
  @Entity({
83
84
  name: "AIAgentOwnerTeam",
84
85
  })
86
+ @Index(["aiAgentId", "teamId", "projectId"], { unique: true })
87
+ @UniqueColumnsTogether(
88
+ ["aiAgentId", "teamId", "projectId"],
89
+ "This team is already an owner of this AI agent.",
90
+ )
85
91
  export default class AIAgentOwnerTeam extends BaseModel {
86
92
  @ColumnAccessControl({
87
93
  create: [
@@ -15,6 +15,7 @@ import TableColumn from "../../Types/Database/TableColumn";
15
15
  import TableColumnType from "../../Types/Database/TableColumnType";
16
16
  import TableMetadata from "../../Types/Database/TableMetadata";
17
17
  import TenantColumn from "../../Types/Database/TenantColumn";
18
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
18
19
  import IconProp from "../../Types/Icon/IconProp";
19
20
  import ObjectID from "../../Types/ObjectID";
20
21
  import Permission from "../../Types/Permission";
@@ -81,6 +82,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
81
82
  @Entity({
82
83
  name: "AIAgentOwnerUser",
83
84
  })
85
+ @Index(["aiAgentId", "userId", "projectId"], { unique: true })
86
+ @UniqueColumnsTogether(
87
+ ["aiAgentId", "userId", "projectId"],
88
+ "This user is already an owner of this AI agent.",
89
+ )
84
90
  export default class AIAgentOwnerUser extends BaseModel {
85
91
  @ColumnAccessControl({
86
92
  create: [
@@ -44,6 +44,7 @@ import TenantColumn from "../../Types/Database/TenantColumn";
44
44
  import IconProp from "../../Types/Icon/IconProp";
45
45
  import { JSONObject } from "../../Types/JSON";
46
46
  import ObjectID from "../../Types/ObjectID";
47
+ import InvestigationNotStartedReason from "../../Types/AI/InvestigationNotStartedReason";
47
48
  import Permission from "../../Types/Permission";
48
49
  import {
49
50
  Column,
@@ -1787,6 +1788,17 @@ export default class Alert extends BaseModel {
1787
1788
  })
1788
1789
  public customFields?: JSONObject = undefined;
1789
1790
 
1791
+ @ColumnAccessControl({ create: [], read: [], update: [] })
1792
+ @TableColumn({
1793
+ required: false,
1794
+ type: TableColumnType.JSON,
1795
+ title: "AI Investigation Decision",
1796
+ description:
1797
+ "Internal: the reason automatic AI investigation did not start when this record was created.",
1798
+ })
1799
+ @Column({ type: ColumnType.JSON, nullable: true })
1800
+ public aiInvestigationDecision?: InvestigationNotStartedReason = undefined;
1801
+
1790
1802
  @ColumnAccessControl({
1791
1803
  create: [],
1792
1804
  read: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,7 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "AlertEpisodeOwnerTeam",
76
77
  })
77
- @Index(["alertEpisodeId", "teamId", "projectId"])
78
+ @Index(["alertEpisodeId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["alertEpisodeId", "teamId", "projectId"],
81
+ "This team is already an owner of this alert episode.",
82
+ )
78
83
  export default class AlertEpisodeOwnerTeam extends BaseModel {
79
84
  @ColumnAccessControl({
80
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,7 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "AlertEpisodeOwnerUser",
75
76
  })
76
- @Index(["alertEpisodeId", "userId", "projectId"])
77
+ @Index(["alertEpisodeId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["alertEpisodeId", "userId", "projectId"],
80
+ "This user is already an owner of this alert episode.",
81
+ )
77
82
  export default class AlertEpisodeOwnerUser extends BaseModel {
78
83
  @ColumnAccessControl({
79
84
  create: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,7 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "AlertOwnerTeam",
76
77
  })
77
- @Index(["alertId", "teamId", "projectId"])
78
+ @Index(["alertId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["alertId", "teamId", "projectId"],
81
+ "This team is already an owner of this alert.",
82
+ )
78
83
  export default class AlertOwnerTeam extends BaseModel {
79
84
  @ColumnAccessControl({
80
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,7 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "AlertOwnerUser",
75
76
  })
76
- @Index(["alertId", "userId", "projectId"])
77
+ @Index(["alertId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["alertId", "userId", "projectId"],
80
+ "This user is already an owner of this alert.",
81
+ )
77
82
  export default class AlertOwnerUser extends BaseModel {
78
83
  @ColumnAccessControl({
79
84
  create: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,6 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "CephClusterOwnerTeam",
76
77
  })
78
+ @Index(["cephClusterId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["cephClusterId", "teamId", "projectId"],
81
+ "This team is already an owner of this Ceph cluster.",
82
+ )
77
83
  export default class CephClusterOwnerTeam extends BaseModel {
78
84
  @ColumnAccessControl({
79
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,6 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "CephClusterOwnerUser",
75
76
  })
77
+ @Index(["cephClusterId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["cephClusterId", "userId", "projectId"],
80
+ "This user is already an owner of this Ceph cluster.",
81
+ )
76
82
  export default class CephClusterOwnerUser extends BaseModel {
77
83
  @ColumnAccessControl({
78
84
  create: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,6 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "CloudResourceOwnerTeam",
76
77
  })
78
+ @Index(["cloudResourceId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["cloudResourceId", "teamId", "projectId"],
81
+ "This team is already an owner of this cloud resource.",
82
+ )
77
83
  export default class CloudResourceOwnerTeam extends BaseModel {
78
84
  @ColumnAccessControl({
79
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,6 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "CloudResourceOwnerUser",
75
76
  })
77
+ @Index(["cloudResourceId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["cloudResourceId", "userId", "projectId"],
80
+ "This user is already an owner of this cloud resource.",
81
+ )
76
82
  export default class CloudResourceOwnerUser extends BaseModel {
77
83
  @ColumnAccessControl({
78
84
  create: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -65,7 +66,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
65
66
  @Entity({
66
67
  name: "DashboardOwnerTeam",
67
68
  })
68
- @Index(["dashboardId", "teamId", "projectId"])
69
+ @Index(["dashboardId", "teamId", "projectId"], { unique: true })
70
+ @UniqueColumnsTogether(
71
+ ["dashboardId", "teamId", "projectId"],
72
+ "This team is already an owner of this dashboard.",
73
+ )
69
74
  export default class DashboardOwnerTeam extends BaseModel {
70
75
  @ColumnAccessControl({
71
76
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -64,7 +65,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
64
65
  @Entity({
65
66
  name: "DashboardOwnerUser",
66
67
  })
67
- @Index(["dashboardId", "userId", "projectId"])
68
+ @Index(["dashboardId", "userId", "projectId"], { unique: true })
69
+ @UniqueColumnsTogether(
70
+ ["dashboardId", "userId", "projectId"],
71
+ "This user is already an owner of this dashboard.",
72
+ )
68
73
  export default class DashboardOwnerUser extends BaseModel {
69
74
  @ColumnAccessControl({
70
75
  create: [
@@ -9,6 +9,7 @@ import { PlanType } from "../../../Types/Billing/SubscriptionPlan";
9
9
  import { getColumnAccessControlForAllColumns } from "../../../Types/Database/AccessControl/ColumnAccessControl";
10
10
  import { getColumnBillingAccessControlForAllColumns } from "../../../Types/Database/AccessControl/ColumnBillingAccessControl";
11
11
  import { OwnedThroughMetadata } from "../../../Types/Database/AccessControl/OwnedThrough";
12
+ import { UniqueColumnsTogetherMetadata } from "../../../Types/Database/UniqueColumnsTogether";
12
13
  import Columns from "../../../Types/Database/Columns";
13
14
  import ColumnType from "../../../Types/Database/ColumnType";
14
15
  import TableColumn, {
@@ -202,6 +203,9 @@ export default class DatabaseBaseModel extends BaseEntity {
202
203
  public totalItemsNumber!: number | null;
203
204
  public totalItemsErrorMessage!: string | null;
204
205
 
206
+ // set by the @UniqueColumnsTogether() decorator.
207
+ public uniqueColumnsTogether!: Array<UniqueColumnsTogetherMetadata> | null;
208
+
205
209
  public isPermissionIf: Dictionary<JSONObject> = {};
206
210
 
207
211
  public isMultiTenantRequestAllowed!: boolean | null;
@@ -379,6 +383,10 @@ export default class DatabaseBaseModel extends BaseEntity {
379
383
  return this.totalItemsNumber;
380
384
  }
381
385
 
386
+ public getUniqueColumnsTogether(): Array<UniqueColumnsTogetherMetadata> {
387
+ return this.uniqueColumnsTogether || [];
388
+ }
389
+
382
390
  public getRequiredColumns(): Columns {
383
391
  const dictionary: Dictionary<TableColumnMetadata> = getTableColumns(this);
384
392
  const columns: Array<string> = [];
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,6 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "DockerHostOwnerTeam",
76
77
  })
78
+ @Index(["dockerHostId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["dockerHostId", "teamId", "projectId"],
81
+ "This team is already an owner of this Docker host.",
82
+ )
77
83
  export default class DockerHostOwnerTeam extends BaseModel {
78
84
  @ColumnAccessControl({
79
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,6 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "DockerHostOwnerUser",
75
76
  })
77
+ @Index(["dockerHostId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["dockerHostId", "userId", "projectId"],
80
+ "This user is already an owner of this Docker host.",
81
+ )
76
82
  export default class DockerHostOwnerUser extends BaseModel {
77
83
  @ColumnAccessControl({
78
84
  create: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,6 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "DockerSwarmClusterOwnerTeam",
76
77
  })
78
+ @Index(["dockerSwarmClusterId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["dockerSwarmClusterId", "teamId", "projectId"],
81
+ "This team is already an owner of this Docker Swarm cluster.",
82
+ )
77
83
  export default class DockerSwarmClusterOwnerTeam extends BaseModel {
78
84
  @ColumnAccessControl({
79
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,6 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "DockerSwarmClusterOwnerUser",
75
76
  })
77
+ @Index(["dockerSwarmClusterId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["dockerSwarmClusterId", "userId", "projectId"],
80
+ "This user is already an owner of this Docker Swarm cluster.",
81
+ )
76
82
  export default class DockerSwarmClusterOwnerUser extends BaseModel {
77
83
  @ColumnAccessControl({
78
84
  create: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,6 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "HostOwnerTeam",
76
77
  })
78
+ @Index(["hostId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["hostId", "teamId", "projectId"],
81
+ "This team is already an owner of this host.",
82
+ )
77
83
  export default class HostOwnerTeam extends BaseModel {
78
84
  @ColumnAccessControl({
79
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,6 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "HostOwnerUser",
75
76
  })
77
+ @Index(["hostId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["hostId", "userId", "projectId"],
80
+ "This user is already an owner of this host.",
81
+ )
76
82
  export default class HostOwnerUser extends BaseModel {
77
83
  @ColumnAccessControl({
78
84
  create: [
@@ -46,6 +46,7 @@ import TenantColumn from "../../Types/Database/TenantColumn";
46
46
  import IconProp from "../../Types/Icon/IconProp";
47
47
  import { JSONObject } from "../../Types/JSON";
48
48
  import ObjectID from "../../Types/ObjectID";
49
+ import InvestigationNotStartedReason from "../../Types/AI/InvestigationNotStartedReason";
49
50
  import Permission from "../../Types/Permission";
50
51
  import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
51
52
  import {
@@ -2056,6 +2057,17 @@ export default class Incident extends BaseModel {
2056
2057
  })
2057
2058
  public customFields?: JSONObject = undefined;
2058
2059
 
2060
+ @ColumnAccessControl({ create: [], read: [], update: [] })
2061
+ @TableColumn({
2062
+ required: false,
2063
+ type: TableColumnType.JSON,
2064
+ title: "AI Investigation Decision",
2065
+ description:
2066
+ "Internal: the reason automatic AI investigation did not start when this record was created.",
2067
+ })
2068
+ @Column({ type: ColumnType.JSON, nullable: true })
2069
+ public aiInvestigationDecision?: InvestigationNotStartedReason = undefined;
2070
+
2059
2071
  @ColumnAccessControl({
2060
2072
  create: [],
2061
2073
  read: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,7 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "IncidentEpisodeOwnerTeam",
76
77
  })
77
- @Index(["incidentEpisodeId", "teamId", "projectId"])
78
+ @Index(["incidentEpisodeId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["incidentEpisodeId", "teamId", "projectId"],
81
+ "This team is already an owner of this incident episode.",
82
+ )
78
83
  export default class IncidentEpisodeOwnerTeam extends BaseModel {
79
84
  @ColumnAccessControl({
80
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,7 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "IncidentEpisodeOwnerUser",
75
76
  })
76
- @Index(["incidentEpisodeId", "userId", "projectId"])
77
+ @Index(["incidentEpisodeId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["incidentEpisodeId", "userId", "projectId"],
80
+ "This user is already an owner of this incident episode.",
81
+ )
77
82
  export default class IncidentEpisodeOwnerUser extends BaseModel {
78
83
  @ColumnAccessControl({
79
84
  create: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,7 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "IncidentOwnerTeam",
76
77
  })
77
- @Index(["incidentId", "teamId", "projectId"])
78
+ @Index(["incidentId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["incidentId", "teamId", "projectId"],
81
+ "This team is already an owner of this incident.",
82
+ )
78
83
  export default class IncidentOwnerTeam extends BaseModel {
79
84
  @ColumnAccessControl({
80
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -73,7 +74,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
73
74
  @Entity({
74
75
  name: "IncidentOwnerUser",
75
76
  })
76
- @Index(["incidentId", "userId", "projectId"])
77
+ @Index(["incidentId", "userId", "projectId"], { unique: true })
78
+ @UniqueColumnsTogether(
79
+ ["incidentId", "userId", "projectId"],
80
+ "This user is already an owner of this incident.",
81
+ )
77
82
  export default class IncidentOwnerUser extends BaseModel {
78
83
  @ColumnAccessControl({
79
84
  create: [
@@ -14,6 +14,7 @@ import TableColumn from "../../Types/Database/TableColumn";
14
14
  import TableColumnType from "../../Types/Database/TableColumnType";
15
15
  import TableMetadata from "../../Types/Database/TableMetadata";
16
16
  import TenantColumn from "../../Types/Database/TenantColumn";
17
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
17
18
  import IconProp from "../../Types/Icon/IconProp";
18
19
  import ObjectID from "../../Types/ObjectID";
19
20
  import Permission from "../../Types/Permission";
@@ -74,6 +75,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
74
75
  @Entity({
75
76
  name: "IncidentTemplateOwnerTeam",
76
77
  })
78
+ @Index(["incidentTemplateId", "teamId", "projectId"], { unique: true })
79
+ @UniqueColumnsTogether(
80
+ ["incidentTemplateId", "teamId", "projectId"],
81
+ "This team is already an owner of this incident template.",
82
+ )
77
83
  export default class IncidentTemplateOwnerTeam extends BaseModel {
78
84
  @ColumnAccessControl({
79
85
  create: [
@@ -13,6 +13,7 @@ import TableColumn from "../../Types/Database/TableColumn";
13
13
  import TableColumnType from "../../Types/Database/TableColumnType";
14
14
  import TableMetadata from "../../Types/Database/TableMetadata";
15
15
  import TenantColumn from "../../Types/Database/TenantColumn";
16
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Permission from "../../Types/Permission";
@@ -78,6 +79,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
78
79
  @Entity({
79
80
  name: "IncidentTemplateOwnerUser",
80
81
  })
82
+ @Index(["incidentTemplateId", "userId", "projectId"], { unique: true })
83
+ @UniqueColumnsTogether(
84
+ ["incidentTemplateId", "userId", "projectId"],
85
+ "This user is already an owner of this incident template.",
86
+ )
81
87
  export default class IncidentTemplateOwnerUser extends BaseModel {
82
88
  @ColumnAccessControl({
83
89
  create: [
@@ -16,6 +16,7 @@ import TableColumn from "../../Types/Database/TableColumn";
16
16
  import TableColumnType from "../../Types/Database/TableColumnType";
17
17
  import TableMetadata from "../../Types/Database/TableMetadata";
18
18
  import TenantColumn from "../../Types/Database/TenantColumn";
19
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
19
20
  import IconProp from "../../Types/Icon/IconProp";
20
21
  import ObjectID from "../../Types/ObjectID";
21
22
  import Permission from "../../Types/Permission";
@@ -82,7 +83,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
82
83
  @Entity({
83
84
  name: "IncomingCallPolicyOwnerTeam",
84
85
  })
85
- @Index(["incomingCallPolicyId", "teamId", "projectId"])
86
+ @Index(["incomingCallPolicyId", "teamId", "projectId"], { unique: true })
87
+ @UniqueColumnsTogether(
88
+ ["incomingCallPolicyId", "teamId", "projectId"],
89
+ "This team is already an owner of this incoming call policy.",
90
+ )
86
91
  export default class IncomingCallPolicyOwnerTeam extends BaseModel {
87
92
  @ColumnAccessControl({
88
93
  create: [
@@ -15,6 +15,7 @@ import TableColumn from "../../Types/Database/TableColumn";
15
15
  import TableColumnType from "../../Types/Database/TableColumnType";
16
16
  import TableMetadata from "../../Types/Database/TableMetadata";
17
17
  import TenantColumn from "../../Types/Database/TenantColumn";
18
+ import UniqueColumnsTogether from "../../Types/Database/UniqueColumnsTogether";
18
19
  import IconProp from "../../Types/Icon/IconProp";
19
20
  import ObjectID from "../../Types/ObjectID";
20
21
  import Permission from "../../Types/Permission";
@@ -81,7 +82,11 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
81
82
  @Entity({
82
83
  name: "IncomingCallPolicyOwnerUser",
83
84
  })
84
- @Index(["incomingCallPolicyId", "userId", "projectId"])
85
+ @Index(["incomingCallPolicyId", "userId", "projectId"], { unique: true })
86
+ @UniqueColumnsTogether(
87
+ ["incomingCallPolicyId", "userId", "projectId"],
88
+ "This user is already an owner of this incoming call policy.",
89
+ )
85
90
  export default class IncomingCallPolicyOwnerUser extends BaseModel {
86
91
  @ColumnAccessControl({
87
92
  create: [