@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.
- package/Models/DatabaseModels/AIAgentOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/AIAgentOwnerUser.ts +6 -0
- package/Models/DatabaseModels/Alert.ts +12 -0
- package/Models/DatabaseModels/AlertEpisodeOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/AlertEpisodeOwnerUser.ts +6 -1
- package/Models/DatabaseModels/AlertOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/AlertOwnerUser.ts +6 -1
- package/Models/DatabaseModels/CephClusterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/CephClusterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/CloudResourceOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/CloudResourceOwnerUser.ts +6 -0
- package/Models/DatabaseModels/DashboardOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/DashboardOwnerUser.ts +6 -1
- package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +8 -0
- package/Models/DatabaseModels/DockerHostOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/DockerHostOwnerUser.ts +6 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/DockerSwarmClusterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/HostOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/HostOwnerUser.ts +6 -0
- package/Models/DatabaseModels/Incident.ts +12 -0
- package/Models/DatabaseModels/IncidentEpisodeOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/IncidentEpisodeOwnerUser.ts +6 -1
- package/Models/DatabaseModels/IncidentOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/IncidentOwnerUser.ts +6 -1
- package/Models/DatabaseModels/IncidentTemplateOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/IncidentTemplateOwnerUser.ts +6 -0
- package/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/IncomingCallPolicyOwnerUser.ts +6 -1
- package/Models/DatabaseModels/IoTFleetOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/IoTFleetOwnerUser.ts +6 -0
- package/Models/DatabaseModels/KubernetesClusterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/KubernetesClusterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/Monitor.ts +2 -3
- package/Models/DatabaseModels/MonitorGroupOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/MonitorGroupOwnerUser.ts +6 -0
- package/Models/DatabaseModels/MonitorOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/MonitorOwnerUser.ts +6 -1
- package/Models/DatabaseModels/MonitorTemplate.ts +2 -3
- package/Models/DatabaseModels/NetworkDeviceOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/NetworkDeviceOwnerUser.ts +6 -0
- package/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.ts +6 -1
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.ts +6 -1
- package/Models/DatabaseModels/PodmanHostOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/PodmanHostOwnerUser.ts +6 -0
- package/Models/DatabaseModels/ProbeOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/ProbeOwnerUser.ts +6 -0
- package/Models/DatabaseModels/ProxmoxClusterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/ProxmoxClusterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/RumApplicationOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/RumApplicationOwnerUser.ts +6 -0
- package/Models/DatabaseModels/RunbookOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/RunbookOwnerUser.ts +6 -1
- package/Models/DatabaseModels/RunnerOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/RunnerOwnerUser.ts +6 -1
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.ts +6 -1
- package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.ts +8 -0
- package/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.ts +8 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/ServerlessFunctionOwnerUser.ts +6 -0
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.ts +6 -1
- package/Models/DatabaseModels/ServiceOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/ServiceOwnerUser.ts +6 -0
- package/Models/DatabaseModels/StatusPageOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/StatusPageOwnerUser.ts +6 -1
- package/Models/DatabaseModels/VMwareVCenterOwnerTeam.ts +6 -0
- package/Models/DatabaseModels/VMwareVCenterOwnerUser.ts +6 -0
- package/Models/DatabaseModels/WorkflowOwnerTeam.ts +6 -1
- package/Models/DatabaseModels/WorkflowOwnerUser.ts +6 -1
- package/Scripts/benchmark-fanin-capacity.js +2 -2
- package/Server/API/AIAgentDataAPI.ts +1 -1
- package/Server/API/AIChatAPI.ts +6 -4
- package/Server/API/AIInvestigationAPI.ts +7 -0
- package/Server/API/StatusPageAPI.ts +13 -0
- package/Server/Infrastructure/Postgres/LocalMigrationGenerationDataSource.ts +1 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.ts +1057 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Readme.md +6 -4
- package/Server/Middleware/IdentityRateLimit.ts +34 -1
- package/Server/Middleware/PublicDashboardRateLimit.ts +169 -39
- package/Server/Services/AlertEpisodeService.ts +13 -34
- package/Server/Services/AlertGroupingEngineService.ts +7 -4
- package/Server/Services/AlertService.ts +13 -32
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +18 -10
- package/Server/Services/DashboardOwnerRuleEngineService.ts +18 -10
- package/Server/Services/DatabaseService.ts +101 -1
- package/Server/Services/DockerHostOwnerRuleEngineService.ts +18 -10
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/HostOwnerRuleEngineService.ts +18 -10
- package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +6 -4
- package/Server/Services/IncidentEpisodeService.ts +15 -75
- package/Server/Services/IncidentGroupingEngineService.ts +7 -4
- package/Server/Services/IncidentService.ts +13 -32
- package/Server/Services/IncidentTemplateService.ts +13 -36
- package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +18 -10
- package/Server/Services/IoTFleetOwnerRuleEngineService.ts +18 -10
- package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/MonitorService.ts +13 -32
- package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +18 -10
- package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +18 -10
- package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +18 -10
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +18 -10
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +18 -10
- package/Server/Services/RunbookOwnerRuleEngineService.ts +18 -10
- package/Server/Services/ScheduledMaintenanceService.ts +13 -34
- package/Server/Services/ScheduledMaintenanceTemplateService.ts +12 -34
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +18 -10
- package/Server/Services/ServiceOwnerRuleEngineService.ts +18 -10
- package/Server/Services/StatusPagePrivateUserService.ts +38 -29
- package/Server/Services/StatusPagePrivateUserSessionService.ts +49 -1
- package/Server/Services/StatusPageService.ts +59 -36
- package/Server/Services/UserSessionService.ts +6 -0
- package/Server/Services/VMwareVCenterOwnerRuleEngineService.ts +18 -10
- package/Server/Services/WorkflowOwnerRuleEngineService.ts +18 -10
- package/Server/Static/Brand/README.md +7 -7
- package/Server/Static/Vendor/README.md +7 -7
- package/Server/Types/Database/Permissions/OwnedScopePermission.ts +18 -9
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +82 -0
- package/Server/Utils/AI/Chat/ChatAgentRunner.ts +21 -8
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +41 -4
- package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +1 -1
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +1 -1
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +13 -5
- package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +53 -13
- package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +51 -14
- package/Server/Utils/AI/SRE/InvestigationEligibility.ts +292 -0
- package/Server/Utils/AI/SRE/InvestigationQueue.ts +25 -0
- package/Server/Utils/AI/Toolbox/Index.ts +43 -13
- package/Server/Utils/AI/Toolbox/ResourceTools.ts +952 -0
- package/Server/Utils/AI/Toolbox/RumTools.ts +424 -0
- package/Server/Utils/AI/Toolbox/ToolTypes.ts +10 -0
- package/Server/Utils/AI/Toolbox/TraceTools.ts +2 -1
- package/Server/Utils/Database/PostgresErrorTranslator.ts +14 -0
- package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +137 -126
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +4 -1
- package/Server/Utils/Rules/OwnerRuleAssignment.ts +157 -6
- package/Server/Utils/Telemetry/TelemetryEntity.ts +205 -6
- package/SslCertificates/GlobalSign.crt +26 -0
- package/SslCertificates/Readme.md +3 -0
- package/Tests/App/AdminDashboard/EnterpriseLicenseInstanceActivity.test.tsx +451 -0
- package/Tests/App/Dashboard/AIInsightsChatPanel.test.tsx +881 -0
- package/Tests/App/Dashboard/AIInsightsPageContext.test.ts +458 -0
- package/Tests/App/Dashboard/AIInsightsResourceCitations.test.ts +124 -0
- package/Tests/App/Dashboard/AIInsightsResourcePageContext.test.ts +798 -0
- package/Tests/App/Dashboard/AskAiSuggestedPrompts.test.ts +7 -0
- package/Tests/App/Dashboard/DashboardChartWidgetZoom.test.tsx +104 -0
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +156 -64
- package/Tests/App/Dashboard/DiscoveryScanStatusMessage.test.tsx +970 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +406 -12
- package/Tests/App/Dashboard/EmbeddedMetricEventScope.test.tsx +358 -0
- package/Tests/App/Dashboard/ErrorPatternEventScope.test.tsx +148 -0
- package/Tests/App/Dashboard/EventOverlayAdditionalResourceScope.test.ts +255 -0
- package/Tests/App/Dashboard/EventOverlayScope.test.ts +845 -0
- package/Tests/App/Dashboard/EventOverlayScopeHook.test.tsx +903 -0
- package/Tests/App/Dashboard/ExternalStatusPageCriteriaFilter.test.ts +3 -3
- package/Tests/App/Dashboard/InvestigationDrawer.test.tsx +21 -0
- package/Tests/App/Dashboard/InvestigationNotStarted.test.tsx +761 -0
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +7 -4
- package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +15 -7
- package/Tests/App/Dashboard/MetricsViewerEventScopeNavigation.test.tsx +264 -0
- package/Tests/App/Dashboard/MonitorSummaryTestMonitorButton.test.tsx +342 -0
- package/Tests/App/Dashboard/MonitorTestForm.test.tsx +612 -0
- package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +301 -0
- package/Tests/App/Dashboard/ServiceMapGraph.test.tsx +74 -2
- package/Tests/App/Dashboard/TextClampLayoutHarness.ts +224 -0
- package/Tests/Models/InventoryItemNaming.test.ts +54 -0
- package/Tests/Server/API/AIChatRouteAuthorization.test.ts +161 -0
- package/Tests/Server/API/AIInvestigationAPI.test.ts +14 -0
- package/Tests/Server/API/AIInvestigationAvailabilityAuthorization.test.ts +260 -0
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +133 -0
- package/Tests/Server/API/StatusPageMasterPasswordRateLimit.test.ts +482 -0
- package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +1 -1
- package/Tests/Server/Infrastructure/ClickhouseKeepAliveOptions.test.ts +1 -1
- package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +38 -16
- package/Tests/Server/Infrastructure/E2EClickHouseFixtureAccess.test.ts +106 -31
- package/Tests/Server/Infrastructure/ExampleDockerfiles.test.ts +46 -12
- package/Tests/Server/Infrastructure/Postgres/MonitorDescriptionMigration.test.ts +422 -0
- package/Tests/Server/Infrastructure/TelemetryExporterDeploymentConfig.test.ts +1 -1
- package/Tests/Server/Infrastructure/ValkeyDeploymentConfig.test.ts +25 -4
- package/Tests/Server/Middleware/IdentityRateLimit.test.ts +72 -0
- package/Tests/Server/Middleware/PublicDashboardRateLimit.test.ts +12 -12
- package/Tests/Server/Middleware/PublicDashboardRateLimitStatusPage.test.ts +800 -0
- package/Tests/Server/Services/AIInvestigationDecisionPostgres.test.ts +346 -0
- package/Tests/Server/Services/AddOwnersIdempotency.test.ts +471 -0
- package/Tests/Server/Services/DatabaseServiceAutoOwnerOnCreate.test.ts +250 -0
- package/Tests/Server/Services/DatabaseServiceUniqueColumnsTogether.test.ts +622 -0
- package/Tests/Server/Services/MonitorDescriptionValidation.test.ts +211 -0
- package/Tests/Server/Services/MonitorTemplateDescriptionPropagation.test.ts +269 -0
- package/Tests/Server/Services/OwnerRowUniqueness.test.ts +504 -0
- package/Tests/Server/Services/RuleRun/OwnerRuleEnginesGroupARun.test.ts +43 -0
- package/Tests/Server/Services/SessionRetention.test.ts +334 -0
- package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +172 -0
- package/Tests/Server/Services/StatusPagePrivateUserReadAccess.test.ts +178 -0
- package/Tests/Server/Services/StatusPagePrivateUserReadAccessPostgres.test.ts +311 -0
- package/Tests/Server/Services/StatusPagePrivateUserSessionService.test.ts +216 -1
- package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +1 -1
- package/Tests/Server/Services/UserOnCallLogNoNotificationRules.test.ts +1 -1
- package/Tests/Server/Types/Database/EventOverlayScopePostgres.test.ts +626 -0
- package/Tests/Server/Types/Database/Permissions/InfrastructureOwnershipScope.test.ts +668 -0
- package/Tests/Server/Types/Database/Permissions/SelectRejectionMessageContract.test.ts +1 -0
- package/Tests/Server/Types/Database/Permissions/UserNotificationRuleScoping.test.ts +1 -1
- package/Tests/Server/Utils/AI/AIIncidentGating.test.ts +16 -9
- package/Tests/Server/Utils/AI/ChatAgentRunner.test.ts +137 -1
- package/Tests/Server/Utils/AI/InvestigationEligibility.test.ts +697 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +105 -0
- package/Tests/Server/Utils/AI/RemediationHandoff.test.ts +16 -5
- package/Tests/Server/Utils/AI/ResourceTools.test.ts +1304 -0
- package/Tests/Server/Utils/AI/RumTools.test.ts +769 -0
- package/Tests/Server/Utils/Database/PostgresErrorTranslator.test.ts +63 -0
- package/Tests/Server/Utils/Monitor/Criteria/APIRequestCriteriaEvaluateOverTime.test.ts +11 -9
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteria.test.ts +62 -45
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaAggregation.test.ts +25 -24
- package/Tests/Server/Utils/Monitor/Criteria/CompareCriteriaHumanMessages.test.ts +513 -0
- package/Tests/Server/Utils/Monitor/Criteria/CustomCodeMonitorCriteria.test.ts +2 -2
- package/Tests/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.test.ts +1 -1
- package/Tests/Server/Utils/Monitor/Criteria/ExternalStatusPageMonitorCriteria.test.ts +9 -9
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +7 -5
- package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +2 -2
- package/Tests/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.test.ts +4 -3
- package/Tests/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.test.ts +2 -2
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorMetricUnits.test.ts +3 -2
- package/Tests/Server/Utils/Monitor/MonitorCriteriaHumanMessages.test.ts +529 -0
- package/Tests/Server/Utils/Rules/OwnerRuleAssignment.test.ts +412 -4
- package/Tests/Server/Utils/SecurityEvent/Connectors/GoogleSecOps/GoogleSecOpsPollingClickhouseIntegration.test.ts +1 -1
- package/Tests/Server/Utils/TailwindBuildCopy.test.ts +14 -2
- package/Tests/Server/Utils/Telemetry/HostAssetAttributesFromOtlp.test.ts +235 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +385 -2
- package/Tests/Server/Utils/VendorAssets.test.ts +17 -3
- package/Tests/Types/AI/AIChatPageContext.test.ts +0 -0
- package/Tests/Types/AI/AIResourceContext.test.ts +312 -0
- package/Tests/Types/Database/UniqueColumnsTogether.test.ts +100 -0
- package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +4 -4
- package/Tests/Types/Monitor/MonitorStepRetryPersistence.test.ts +125 -0
- package/Tests/Types/WebsiteRequest.test.ts +44 -0
- package/Tests/UI/Components/Forms/MonitorDescriptionForm.test.tsx +410 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableReadPermissions.test.tsx +439 -0
- package/Tests/UI/Components/NavBarMenuSearch.test.tsx +372 -0
- package/Tests/UI/EsbuildConfig.test.ts +1 -1
- package/Tests/UI/Monitor/MonitorStepRetrySettings.test.tsx +616 -0
- package/Tests/UI/ReactRouterSingletonBuild.test.ts +4 -2
- package/Tests/UI/Rum/ReplayEngine.test.ts +179 -0
- package/Tests/UI/Rum/ReplayHeader.test.tsx +23 -0
- package/Tests/UI/Rum/ReplayScrubber.test.tsx +88 -0
- package/Tests/UI/Rum/ReplayStageOverlays.test.tsx +83 -0
- package/Tests/UI/Rum/ReplayTabSwitcher.test.tsx +33 -0
- package/Tests/Utils/API.test.ts +96 -0
- package/Tests/Utils/HTTPResponseBodyReader.test.ts +188 -1
- package/Tests/Utils/Metrics/MetricEventScopeUrl.test.ts +101 -0
- package/Tests/Utils/Monitor/MonitorTestAvailabilityUtil.test.ts +256 -0
- package/Tests/Utils/Telemetry/HostIpAddresses.test.ts +105 -0
- package/Types/AI/AIChatPageContext.ts +87 -2
- package/Types/AI/AIChatTypes.ts +4 -0
- package/Types/AI/AIResourceContext.ts +198 -0
- package/Types/AI/InvestigationNotStartedReason.ts +30 -0
- package/Types/Database/UniqueColumnsTogether.ts +55 -0
- package/Types/Metrics/MetricQueryConfigData.ts +8 -0
- package/Types/Rum/WebVitals.ts +71 -0
- package/Types/WebsiteRequest.ts +2 -0
- package/UI/Components/EditionLabel/EditionLabel.tsx +7 -5
- package/UI/Components/KeyboardShortcut/Screenshots/README.md +1 -1
- package/UI/Components/ModelTable/BaseModelTable.tsx +8 -0
- package/UI/Components/Navbar/NavBar.tsx +2 -0
- package/UI/Components/Navbar/NavBarMenuModal.tsx +6 -2
- package/UI/esbuild-config.js +4 -4
- package/Utils/API.ts +10 -1
- package/Utils/Dashboard/HtmlWidgetDocument.ts +1 -1
- package/Utils/HTTPResponseBodyReader.ts +64 -8
- package/Utils/Metrics/MetricExplorerUrl.ts +19 -0
- package/Utils/Monitor/MonitorTestAvailabilityUtil.ts +92 -0
- package/Utils/Telemetry/HostIpAddresses.ts +46 -2
- package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Alert.js +12 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/AlertOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/CephClusterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/CloudResourceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/DashboardOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +3 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/HostOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/HostOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +12 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/IncidentOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplateOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/IoTFleetOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +2 -3
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorGroupOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/MonitorGroupOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorGroupOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/MonitorGroupOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/MonitorOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js +2 -3
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/PodmanHostOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProbeOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/ProbeOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProbeOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/ProbeOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/ProxmoxClusterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/RumApplicationOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/RunnerOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/RunnerOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.js +6 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js +6 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunctionOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/ServiceLevelObjectiveOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/ServiceOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js +4 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js +4 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenterOwnerUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerTeam.js +3 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerTeam.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerUser.js +3 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerUser.js.map +1 -1
- package/build/dist/Server/API/AIAgentDataAPI.js +1 -1
- package/build/dist/Server/API/AIChatAPI.js +3 -1
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationAPI.js +3 -0
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +9 -1
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/LocalMigrationGenerationDataSource.js +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.js +602 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793500000000-MakeOwnerRowsUnique.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793700000000-AddAIInvestigationDecision.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793800000000-RemoveMonitorDescriptionLengthLimit.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/IdentityRateLimit.js +22 -1
- package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
- package/build/dist/Server/Middleware/PublicDashboardRateLimit.js +117 -36
- package/build/dist/Server/Middleware/PublicDashboardRateLimit.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeService.js +13 -31
- package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/AlertGroupingEngineService.js +7 -4
- package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +13 -31
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +71 -1
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +6 -4
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeService.js +15 -68
- package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +7 -4
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +13 -31
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentTemplateService.js +13 -31
- package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +13 -31
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +13 -31
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js +12 -29
- package/build/dist/Server/Services/ScheduledMaintenanceTemplateService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +33 -25
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +36 -1
- package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +50 -35
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/UserSessionService.js +5 -0
- package/build/dist/Server/Services/UserSessionService.js.map +1 -1
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/VMwareVCenterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +12 -8
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js +15 -10
- package/build/dist/Server/Types/Database/Permissions/OwnedScopePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +82 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +12 -3
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +32 -4
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +1 -1
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +8 -5
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +33 -13
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +31 -10
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationEligibility.js +205 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationEligibility.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +13 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +30 -6
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js +721 -0
- package/build/dist/Server/Utils/AI/Toolbox/ResourceTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/RumTools.js +330 -0
- package/build/dist/Server/Utils/AI/Toolbox/RumTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/ToolTypes.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/TraceTools.js.map +1 -1
- package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js +11 -0
- package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +106 -101
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +4 -2
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Rules/OwnerRuleAssignment.js +94 -0
- package/build/dist/Server/Utils/Rules/OwnerRuleAssignment.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +171 -6
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Types/AI/AIChatPageContext.js +68 -2
- package/build/dist/Types/AI/AIChatPageContext.js.map +1 -1
- package/build/dist/Types/AI/AIChatTypes.js +4 -0
- package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
- package/build/dist/Types/AI/AIResourceContext.js +162 -0
- package/build/dist/Types/AI/AIResourceContext.js.map +1 -0
- package/build/dist/Types/AI/InvestigationNotStartedReason.js +2 -0
- package/build/dist/Types/AI/InvestigationNotStartedReason.js.map +1 -0
- package/build/dist/Types/Database/UniqueColumnsTogether.js +19 -0
- package/build/dist/Types/Database/UniqueColumnsTogether.js.map +1 -0
- package/build/dist/Types/Metrics/MetricQueryConfigData.js.map +1 -1
- package/build/dist/Types/Rum/WebVitals.js +64 -0
- package/build/dist/Types/Rum/WebVitals.js.map +1 -0
- package/build/dist/Types/WebsiteRequest.js +2 -0
- package/build/dist/Types/WebsiteRequest.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +7 -5
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +7 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +4 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/Utils/API.js +8 -4
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/HTTPResponseBodyReader.js +50 -6
- package/build/dist/Utils/HTTPResponseBodyReader.js.map +1 -1
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js +14 -3
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorTestAvailabilityUtil.js +68 -0
- package/build/dist/Utils/Monitor/MonitorTestAvailabilityUtil.js.map +1 -0
- package/build/dist/Utils/Telemetry/HostIpAddresses.js +42 -3
- package/build/dist/Utils/Telemetry/HostIpAddresses.js.map +1 -1
- package/package.json +5 -5
- package/test-setup.sh +2 -2
|
@@ -23,7 +23,6 @@ import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
|
23
23
|
import LIMIT_MAX, { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
24
24
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
25
25
|
import ObjectID from "../../Types/ObjectID";
|
|
26
|
-
import Typeof from "../../Types/Typeof";
|
|
27
26
|
import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
|
|
28
27
|
import Monitor from "../../Models/DatabaseModels/Monitor";
|
|
29
28
|
import Model from "../../Models/DatabaseModels/ScheduledMaintenance";
|
|
@@ -75,6 +74,7 @@ import NotificationRuleWorkspaceChannel from "../../Types/Workspace/Notification
|
|
|
75
74
|
import { MessageBlocksByWorkspaceType } from "./WorkspaceNotificationRuleService";
|
|
76
75
|
import ScheduledMaintenanceWorkspaceMessages from "../Utils/Workspace/WorkspaceMessages/ScheduledMaintenance";
|
|
77
76
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
77
|
+
import OwnerRuleAssignment from "../Utils/Rules/OwnerRuleAssignment";
|
|
78
78
|
import ProjectService from "./ProjectService";
|
|
79
79
|
import StatusPageSubscriberNotificationTemplateService, {
|
|
80
80
|
Service as StatusPageSubscriberNotificationTemplateServiceClass,
|
|
@@ -1447,39 +1447,18 @@ ${scheduledMaintenance.description || "No description provided."}
|
|
|
1447
1447
|
notifyOwners: boolean,
|
|
1448
1448
|
props: DatabaseCommonInteractionProps,
|
|
1449
1449
|
): Promise<void> {
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
await ScheduledMaintenanceOwnerTeamService.create({
|
|
1463
|
-
data: teamOwner,
|
|
1464
|
-
props: props,
|
|
1465
|
-
});
|
|
1466
|
-
}
|
|
1467
|
-
|
|
1468
|
-
for (let userId of userIds) {
|
|
1469
|
-
if (typeof userId === Typeof.String) {
|
|
1470
|
-
userId = new ObjectID(userId.toString());
|
|
1471
|
-
}
|
|
1472
|
-
const teamOwner: ScheduledMaintenanceOwnerUser =
|
|
1473
|
-
new ScheduledMaintenanceOwnerUser();
|
|
1474
|
-
teamOwner.scheduledMaintenanceId = scheduledMaintenanceId;
|
|
1475
|
-
teamOwner.projectId = projectId;
|
|
1476
|
-
teamOwner.isOwnerNotified = !notifyOwners;
|
|
1477
|
-
teamOwner.userId = userId;
|
|
1478
|
-
await ScheduledMaintenanceOwnerUserService.create({
|
|
1479
|
-
data: teamOwner,
|
|
1480
|
-
props: props,
|
|
1481
|
-
});
|
|
1482
|
-
}
|
|
1450
|
+
// Owners already on the event are skipped, not added a second time.
|
|
1451
|
+
await OwnerRuleAssignment.addOwners({
|
|
1452
|
+
ownerUserService: ScheduledMaintenanceOwnerUserService,
|
|
1453
|
+
ownerTeamService: ScheduledMaintenanceOwnerTeamService,
|
|
1454
|
+
resourceIdColumn: "scheduledMaintenanceId",
|
|
1455
|
+
resourceId: scheduledMaintenanceId,
|
|
1456
|
+
projectId: projectId,
|
|
1457
|
+
userIds: userIds,
|
|
1458
|
+
teamIds: teamIds,
|
|
1459
|
+
isOwnerNotified: !notifyOwners,
|
|
1460
|
+
props: props,
|
|
1461
|
+
});
|
|
1483
1462
|
}
|
|
1484
1463
|
|
|
1485
1464
|
@CaptureSpan()
|
|
@@ -4,7 +4,6 @@ import ScheduledMaintenanceTemplateOwnerTeamService from "./ScheduledMaintenance
|
|
|
4
4
|
import ScheduledMaintenanceTemplateOwnerUserService from "./ScheduledMaintenanceTemplateOwnerUserService";
|
|
5
5
|
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
6
6
|
import ObjectID from "../../Types/ObjectID";
|
|
7
|
-
import Typeof from "../../Types/Typeof";
|
|
8
7
|
import Model from "../../Models/DatabaseModels/ScheduledMaintenanceTemplate";
|
|
9
8
|
import MonitorStatusService from "./MonitorStatusService";
|
|
10
9
|
import Dictionary from "../../Types/Dictionary";
|
|
@@ -12,8 +11,6 @@ import ProjectScopedReferenceValidator, {
|
|
|
12
11
|
ProjectScopedReference,
|
|
13
12
|
resolveReferenceId,
|
|
14
13
|
} from "../Utils/Database/ProjectScopedReferenceValidator";
|
|
15
|
-
import ScheduledMaintenanceTemplateOwnerTeam from "../../Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerTeam";
|
|
16
|
-
import ScheduledMaintenanceTemplateOwnerUser from "../../Models/DatabaseModels/ScheduledMaintenanceTemplateOwnerUser";
|
|
17
14
|
import CreateBy from "../Types/Database/CreateBy";
|
|
18
15
|
import OneUptimeDate from "../../Types/Date";
|
|
19
16
|
import Recurring from "../../Types/Events/Recurring";
|
|
@@ -22,6 +19,7 @@ import QueryDeepPartialEntity from "../../Types/Database/PartialEntity";
|
|
|
22
19
|
import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
23
20
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
24
21
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
22
|
+
import OwnerRuleAssignment from "../Utils/Rules/OwnerRuleAssignment";
|
|
25
23
|
|
|
26
24
|
export class Service extends DatabaseService<Model> {
|
|
27
25
|
public constructor() {
|
|
@@ -385,37 +383,17 @@ export class Service extends DatabaseService<Model> {
|
|
|
385
383
|
teamIds: Array<ObjectID>,
|
|
386
384
|
props: DatabaseCommonInteractionProps,
|
|
387
385
|
): Promise<void> {
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
await ScheduledMaintenanceTemplateOwnerTeamService.create({
|
|
400
|
-
data: teamOwner,
|
|
401
|
-
props: props,
|
|
402
|
-
});
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
for (let userId of userIds) {
|
|
406
|
-
if (typeof userId === Typeof.String) {
|
|
407
|
-
userId = new ObjectID(userId.toString());
|
|
408
|
-
}
|
|
409
|
-
const teamOwner: ScheduledMaintenanceTemplateOwnerUser =
|
|
410
|
-
new ScheduledMaintenanceTemplateOwnerUser();
|
|
411
|
-
teamOwner.scheduledMaintenanceTemplateId = scheduledMaintenanceTemplateId;
|
|
412
|
-
teamOwner.projectId = projectId;
|
|
413
|
-
teamOwner.userId = userId;
|
|
414
|
-
await ScheduledMaintenanceTemplateOwnerUserService.create({
|
|
415
|
-
data: teamOwner,
|
|
416
|
-
props: props,
|
|
417
|
-
});
|
|
418
|
-
}
|
|
386
|
+
// Owners already on the template are skipped, not added a second time.
|
|
387
|
+
await OwnerRuleAssignment.addOwners({
|
|
388
|
+
ownerUserService: ScheduledMaintenanceTemplateOwnerUserService,
|
|
389
|
+
ownerTeamService: ScheduledMaintenanceTemplateOwnerTeamService,
|
|
390
|
+
resourceIdColumn: "scheduledMaintenanceTemplateId",
|
|
391
|
+
resourceId: scheduledMaintenanceTemplateId,
|
|
392
|
+
projectId: projectId,
|
|
393
|
+
userIds: userIds,
|
|
394
|
+
teamIds: teamIds,
|
|
395
|
+
props: props,
|
|
396
|
+
});
|
|
419
397
|
}
|
|
420
398
|
}
|
|
421
399
|
export default new Service();
|
|
@@ -240,11 +240,15 @@ class ServerlessFunctionOwnerRuleEngineServiceClass
|
|
|
240
240
|
owner.projectId = serverlessFunction.projectId;
|
|
241
241
|
owner.userId = new ObjectID(userId);
|
|
242
242
|
owner.isOwnerNotified = !notify;
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
243
|
+
if (
|
|
244
|
+
await OwnerRuleAssignment.createOwner({
|
|
245
|
+
ownerService: ServerlessFunctionOwnerUserService,
|
|
246
|
+
owner: owner,
|
|
247
|
+
props: { isRoot: true },
|
|
248
|
+
})
|
|
249
|
+
) {
|
|
250
|
+
ownersAdded++;
|
|
251
|
+
}
|
|
248
252
|
}
|
|
249
253
|
|
|
250
254
|
for (const teamId of teamIds) {
|
|
@@ -254,11 +258,15 @@ class ServerlessFunctionOwnerRuleEngineServiceClass
|
|
|
254
258
|
owner.projectId = serverlessFunction.projectId;
|
|
255
259
|
owner.teamId = new ObjectID(teamId);
|
|
256
260
|
owner.isOwnerNotified = !notify;
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
261
|
+
if (
|
|
262
|
+
await OwnerRuleAssignment.createOwner({
|
|
263
|
+
ownerService: ServerlessFunctionOwnerTeamService,
|
|
264
|
+
owner: owner,
|
|
265
|
+
props: { isRoot: true },
|
|
266
|
+
})
|
|
267
|
+
) {
|
|
268
|
+
ownersAdded++;
|
|
269
|
+
}
|
|
262
270
|
}
|
|
263
271
|
}
|
|
264
272
|
|
|
@@ -249,11 +249,15 @@ class ServiceOwnerRuleEngineServiceClass
|
|
|
249
249
|
owner.serviceId = service.id;
|
|
250
250
|
owner.projectId = service.projectId;
|
|
251
251
|
owner.userId = new ObjectID(userId);
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
252
|
+
if (
|
|
253
|
+
await OwnerRuleAssignment.createOwner({
|
|
254
|
+
ownerService: ServiceOwnerUserService,
|
|
255
|
+
owner: owner,
|
|
256
|
+
props: { isRoot: true },
|
|
257
|
+
})
|
|
258
|
+
) {
|
|
259
|
+
ownersAdded++;
|
|
260
|
+
}
|
|
257
261
|
}
|
|
258
262
|
|
|
259
263
|
for (const teamId of teamIds) {
|
|
@@ -261,11 +265,15 @@ class ServiceOwnerRuleEngineServiceClass
|
|
|
261
265
|
owner.serviceId = service.id;
|
|
262
266
|
owner.projectId = service.projectId;
|
|
263
267
|
owner.teamId = new ObjectID(teamId);
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
268
|
+
if (
|
|
269
|
+
await OwnerRuleAssignment.createOwner({
|
|
270
|
+
ownerService: ServiceOwnerTeamService,
|
|
271
|
+
owner: owner,
|
|
272
|
+
props: { isRoot: true },
|
|
273
|
+
})
|
|
274
|
+
) {
|
|
275
|
+
ownersAdded++;
|
|
276
|
+
}
|
|
269
277
|
}
|
|
270
278
|
}
|
|
271
279
|
|
|
@@ -145,35 +145,6 @@ export class Service extends DatabaseService<Model> {
|
|
|
145
145
|
_onCreate: OnCreate<Model>,
|
|
146
146
|
createdItem: Model,
|
|
147
147
|
): Promise<Model> {
|
|
148
|
-
/*
|
|
149
|
-
* The invite link doubles as this user's first password-reset link, so the
|
|
150
|
-
* column has to hold what `/status-page-api/reset-password` looks rows up
|
|
151
|
-
* by: the SHA-256 of the token, never the token itself. That endpoint
|
|
152
|
-
* hashes whatever the link carried and queries by the digest, so a raw
|
|
153
|
-
* token stored here matches nothing and the welcome link is dead on
|
|
154
|
-
* arrival -- and it would also leave a working bearer credential sitting
|
|
155
|
-
* in the database in plaintext.
|
|
156
|
-
*
|
|
157
|
-
* Same split as `/status-page-api/forgot-password`: the digest is
|
|
158
|
-
* persisted, the raw token is only ever mailed.
|
|
159
|
-
*/
|
|
160
|
-
const token: string = ObjectID.generate().toString();
|
|
161
|
-
const hashedToken: string = await HashedString.hashValue(
|
|
162
|
-
token,
|
|
163
|
-
EncryptionSecret,
|
|
164
|
-
);
|
|
165
|
-
await this.updateOneById({
|
|
166
|
-
id: createdItem.id!,
|
|
167
|
-
data: {
|
|
168
|
-
resetPasswordToken: hashedToken,
|
|
169
|
-
resetPasswordExpires: OneUptimeDate.getOneDayAfter(),
|
|
170
|
-
},
|
|
171
|
-
props: {
|
|
172
|
-
isRoot: true,
|
|
173
|
-
ignoreHooks: true,
|
|
174
|
-
},
|
|
175
|
-
});
|
|
176
|
-
|
|
177
148
|
if (createdItem.isSsoUser) {
|
|
178
149
|
return createdItem;
|
|
179
150
|
}
|
|
@@ -190,6 +161,7 @@ export class Service extends DatabaseService<Model> {
|
|
|
190
161
|
pageTitle: true,
|
|
191
162
|
logoFileId: true,
|
|
192
163
|
projectId: true,
|
|
164
|
+
requireSsoForLogin: true,
|
|
193
165
|
smtpConfig: {
|
|
194
166
|
_id: true,
|
|
195
167
|
transportType: true,
|
|
@@ -214,6 +186,43 @@ export class Service extends DatabaseService<Model> {
|
|
|
214
186
|
throw new BadDataException("Status Page not found");
|
|
215
187
|
}
|
|
216
188
|
|
|
189
|
+
/*
|
|
190
|
+
* SCIM and admin-created users must follow the page's login policy too.
|
|
191
|
+
* Do not create a password-reset credential when only SSO can be used.
|
|
192
|
+
*/
|
|
193
|
+
if (statusPage.requireSsoForLogin) {
|
|
194
|
+
return createdItem;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/*
|
|
198
|
+
* The invite link doubles as this user's first password-reset link, so the
|
|
199
|
+
* column has to hold what `/status-page-api/reset-password` looks rows up
|
|
200
|
+
* by: the SHA-256 of the token, never the token itself. That endpoint
|
|
201
|
+
* hashes whatever the link carried and queries by the digest, so a raw
|
|
202
|
+
* token stored here matches nothing and the welcome link is dead on
|
|
203
|
+
* arrival -- and it would also leave a working bearer credential sitting
|
|
204
|
+
* in the database in plaintext.
|
|
205
|
+
*
|
|
206
|
+
* Same split as `/status-page-api/forgot-password`: the digest is
|
|
207
|
+
* persisted, the raw token is only ever mailed.
|
|
208
|
+
*/
|
|
209
|
+
const token: string = ObjectID.generate().toString();
|
|
210
|
+
const hashedToken: string = await HashedString.hashValue(
|
|
211
|
+
token,
|
|
212
|
+
EncryptionSecret,
|
|
213
|
+
);
|
|
214
|
+
await this.updateOneById({
|
|
215
|
+
id: createdItem.id!,
|
|
216
|
+
data: {
|
|
217
|
+
resetPasswordToken: hashedToken,
|
|
218
|
+
resetPasswordExpires: OneUptimeDate.getOneDayAfter(),
|
|
219
|
+
},
|
|
220
|
+
props: {
|
|
221
|
+
isRoot: true,
|
|
222
|
+
ignoreHooks: true,
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
|
|
217
226
|
const statusPageName: string | undefined =
|
|
218
227
|
statusPage.pageTitle || statusPage.name;
|
|
219
228
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import StatusPagePrivateUserService from "./StatusPagePrivateUserService";
|
|
2
3
|
import Model from "../../Models/DatabaseModels/StatusPagePrivateUserSession";
|
|
3
4
|
import ObjectID from "../../Types/ObjectID";
|
|
4
5
|
import { JSONObject } from "../../Types/JSON";
|
|
@@ -9,7 +10,7 @@ import Text from "../../Types/Text";
|
|
|
9
10
|
import logger from "../Utils/Logger";
|
|
10
11
|
import Exception from "../../Types/Exception/Exception";
|
|
11
12
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
12
|
-
import { JsonContains, MoreThan, UpdateResult } from "typeorm";
|
|
13
|
+
import { IsNull, JsonContains, MoreThan, UpdateResult } from "typeorm";
|
|
13
14
|
|
|
14
15
|
export interface SessionMetadata {
|
|
15
16
|
session: Model;
|
|
@@ -75,6 +76,12 @@ export class Service extends DatabaseService<Model> {
|
|
|
75
76
|
|
|
76
77
|
public constructor() {
|
|
77
78
|
super(Model);
|
|
79
|
+
|
|
80
|
+
/*
|
|
81
|
+
* Login codes use this same column for their five-minute expiry. Purge
|
|
82
|
+
* expired credentials and their device metadata after 30 more days.
|
|
83
|
+
*/
|
|
84
|
+
this.hardDeleteItemsOlderThanInDays("refreshTokenExpiresAt", 30);
|
|
78
85
|
}
|
|
79
86
|
|
|
80
87
|
public async createSession(
|
|
@@ -98,6 +105,9 @@ export class Service extends DatabaseService<Model> {
|
|
|
98
105
|
},
|
|
99
106
|
});
|
|
100
107
|
|
|
108
|
+
// Password sign-in and both SSO callbacks issue their session here.
|
|
109
|
+
await this.recordSuccessfulSignIn(options);
|
|
110
|
+
|
|
101
111
|
return {
|
|
102
112
|
session: createdSession,
|
|
103
113
|
refreshToken,
|
|
@@ -233,6 +243,8 @@ export class Service extends DatabaseService<Model> {
|
|
|
233
243
|
if (
|
|
234
244
|
!session?.id ||
|
|
235
245
|
!session.statusPageId ||
|
|
246
|
+
!session.statusPagePrivateUserId ||
|
|
247
|
+
!session.projectId ||
|
|
236
248
|
!this.isLoginCodeSession(session) ||
|
|
237
249
|
session.statusPageId.toString() !== options.statusPageId.toString()
|
|
238
250
|
) {
|
|
@@ -291,6 +303,12 @@ export class Service extends DatabaseService<Model> {
|
|
|
291
303
|
|
|
292
304
|
Object.assign(session, updatePayload);
|
|
293
305
|
|
|
306
|
+
await this.recordSuccessfulSignIn({
|
|
307
|
+
projectId: session.projectId,
|
|
308
|
+
statusPageId: session.statusPageId,
|
|
309
|
+
statusPagePrivateUserId: session.statusPagePrivateUserId,
|
|
310
|
+
});
|
|
311
|
+
|
|
294
312
|
return {
|
|
295
313
|
session,
|
|
296
314
|
refreshToken,
|
|
@@ -365,6 +383,36 @@ export class Service extends DatabaseService<Model> {
|
|
|
365
383
|
await this.revokeSessionById(session.id, options);
|
|
366
384
|
}
|
|
367
385
|
|
|
386
|
+
private async recordSuccessfulSignIn(
|
|
387
|
+
options: Pick<
|
|
388
|
+
CreateSessionOptions,
|
|
389
|
+
"projectId" | "statusPageId" | "statusPagePrivateUserId"
|
|
390
|
+
>,
|
|
391
|
+
): Promise<void> {
|
|
392
|
+
/*
|
|
393
|
+
* Scope the write to the complete identity carried by the session. A
|
|
394
|
+
* deleted or moved user must not gain activity from an old login code.
|
|
395
|
+
*/
|
|
396
|
+
try {
|
|
397
|
+
await StatusPagePrivateUserService.getRepository().update(
|
|
398
|
+
{
|
|
399
|
+
_id: options.statusPagePrivateUserId.toString(),
|
|
400
|
+
projectId: options.projectId,
|
|
401
|
+
statusPageId: options.statusPageId,
|
|
402
|
+
deletedAt: IsNull(),
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
lastActive: OneUptimeDate.getCurrentDate(),
|
|
406
|
+
},
|
|
407
|
+
);
|
|
408
|
+
} catch {
|
|
409
|
+
// Activity bookkeeping must not burn an already-consumed login code.
|
|
410
|
+
logger.warn(
|
|
411
|
+
`Failed to record sign-in activity for status page private user ${options.statusPagePrivateUserId.toString()}`,
|
|
412
|
+
);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
368
416
|
private buildSessionModel(
|
|
369
417
|
options: CreateSessionOptions,
|
|
370
418
|
tokenMeta: { refreshToken: string; refreshTokenExpiresAt: Date },
|
|
@@ -17,6 +17,7 @@ import StatusPageLabelRuleEngineService from "./StatusPageLabelRuleEngineService
|
|
|
17
17
|
import StatusPageOwnerRuleEngineService from "./StatusPageOwnerRuleEngineService";
|
|
18
18
|
import StatusPageOwnerTeamService from "./StatusPageOwnerTeamService";
|
|
19
19
|
import StatusPageOwnerUserService from "./StatusPageOwnerUserService";
|
|
20
|
+
import StatusPagePrivateUserSessionService from "./StatusPagePrivateUserSessionService";
|
|
20
21
|
import TeamMemberService from "./TeamMemberService";
|
|
21
22
|
import Hostname from "../../Types/API/Hostname";
|
|
22
23
|
import Protocol from "../../Types/API/Protocol";
|
|
@@ -28,12 +29,12 @@ import BadDataException from "../../Types/Exception/BadDataException";
|
|
|
28
29
|
import JSONWebTokenData from "../../Types/JsonWebTokenData";
|
|
29
30
|
import ObjectID from "../../Types/ObjectID";
|
|
30
31
|
import PositiveNumber from "../../Types/PositiveNumber";
|
|
31
|
-
import Typeof from "../../Types/Typeof";
|
|
32
32
|
import MonitorStatus from "../../Models/DatabaseModels/MonitorStatus";
|
|
33
33
|
import StatusPage from "../../Models/DatabaseModels/StatusPage";
|
|
34
34
|
import StatusPageDomain from "../../Models/DatabaseModels/StatusPageDomain";
|
|
35
35
|
import StatusPageOwnerTeam from "../../Models/DatabaseModels/StatusPageOwnerTeam";
|
|
36
36
|
import StatusPageOwnerUser from "../../Models/DatabaseModels/StatusPageOwnerUser";
|
|
37
|
+
import StatusPagePrivateUserSession from "../../Models/DatabaseModels/StatusPagePrivateUserSession";
|
|
37
38
|
import User from "../../Models/DatabaseModels/User";
|
|
38
39
|
import {
|
|
39
40
|
AllowedStatusPageCountInFreePlan,
|
|
@@ -69,6 +70,7 @@ import UptimeUtil, { UptimeWindow } from "../../Utils/Uptime/UptimeUtil";
|
|
|
69
70
|
import UptimePrecision from "../../Types/StatusPage/UptimePrecision";
|
|
70
71
|
import IP from "../../Types/IP/IP";
|
|
71
72
|
import { resolveClientIp } from "../Utils/ClientIp";
|
|
73
|
+
import OwnerRuleAssignment from "../Utils/Rules/OwnerRuleAssignment";
|
|
72
74
|
import NotAuthenticatedException from "../../Types/Exception/NotAuthenticatedException";
|
|
73
75
|
import ForbiddenException from "../../Types/Exception/ForbiddenException";
|
|
74
76
|
import MasterPasswordRequiredException from "../../Types/Exception/MasterPasswordRequiredException";
|
|
@@ -509,37 +511,18 @@ export class Service extends DatabaseService<StatusPage> {
|
|
|
509
511
|
notifyOwners: boolean,
|
|
510
512
|
props: DatabaseCommonInteractionProps,
|
|
511
513
|
): Promise<void> {
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
data: teamOwner,
|
|
525
|
-
props: props,
|
|
526
|
-
});
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
for (let userId of userIds) {
|
|
530
|
-
if (typeof userId === Typeof.String) {
|
|
531
|
-
userId = new ObjectID(userId.toString());
|
|
532
|
-
}
|
|
533
|
-
const teamOwner: StatusPageOwnerUser = new StatusPageOwnerUser();
|
|
534
|
-
teamOwner.statusPageId = statusPageId;
|
|
535
|
-
teamOwner.projectId = projectId;
|
|
536
|
-
teamOwner.userId = userId;
|
|
537
|
-
teamOwner.isOwnerNotified = !notifyOwners;
|
|
538
|
-
await StatusPageOwnerUserService.create({
|
|
539
|
-
data: teamOwner,
|
|
540
|
-
props: props,
|
|
541
|
-
});
|
|
542
|
-
}
|
|
514
|
+
// Owners already on the status page are skipped, not added a second time.
|
|
515
|
+
await OwnerRuleAssignment.addOwners({
|
|
516
|
+
ownerUserService: StatusPageOwnerUserService,
|
|
517
|
+
ownerTeamService: StatusPageOwnerTeamService,
|
|
518
|
+
resourceIdColumn: "statusPageId",
|
|
519
|
+
resourceId: statusPageId,
|
|
520
|
+
projectId: projectId,
|
|
521
|
+
userIds: userIds,
|
|
522
|
+
teamIds: teamIds,
|
|
523
|
+
isOwnerNotified: !notifyOwners,
|
|
524
|
+
props: props,
|
|
525
|
+
});
|
|
543
526
|
}
|
|
544
527
|
|
|
545
528
|
@CaptureSpan()
|
|
@@ -658,10 +641,50 @@ export class Service extends DatabaseService<StatusPage> {
|
|
|
658
641
|
token as string,
|
|
659
642
|
);
|
|
660
643
|
|
|
661
|
-
if (
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
644
|
+
if (
|
|
645
|
+
statusPage &&
|
|
646
|
+
decoded.statusPageId?.toString() === statusPageId.toString() &&
|
|
647
|
+
decoded.sessionId &&
|
|
648
|
+
ObjectID.isValidUUID(decoded.sessionId.toString()) &&
|
|
649
|
+
decoded.userId &&
|
|
650
|
+
ObjectID.isValidUUID(decoded.userId.toString())
|
|
651
|
+
) {
|
|
652
|
+
/*
|
|
653
|
+
* One primary-key lookup joined to the private user. Do not cache
|
|
654
|
+
* authorization: revocation and soft deletion must take effect on
|
|
655
|
+
* the next request, even while the access JWT remains unexpired.
|
|
656
|
+
*/
|
|
657
|
+
const session: StatusPagePrivateUserSession | null =
|
|
658
|
+
await StatusPagePrivateUserSessionService.getQueryBuilder(
|
|
659
|
+
"session",
|
|
660
|
+
)
|
|
661
|
+
.select(["session._id", "session.additionalInfo"])
|
|
662
|
+
.innerJoin("session.statusPagePrivateUser", "privateUser")
|
|
663
|
+
.where("session._id = :sessionId", {
|
|
664
|
+
sessionId: decoded.sessionId.toString(),
|
|
665
|
+
})
|
|
666
|
+
.andWhere("session.statusPageId = :statusPageId", {
|
|
667
|
+
statusPageId: statusPageId.toString(),
|
|
668
|
+
})
|
|
669
|
+
.andWhere("session.statusPagePrivateUserId = :userId", {
|
|
670
|
+
userId: decoded.userId.toString(),
|
|
671
|
+
})
|
|
672
|
+
.andWhere("privateUser.statusPageId = :statusPageId")
|
|
673
|
+
.andWhere("privateUser.deletedAt IS NULL")
|
|
674
|
+
.andWhere("session.isRevoked = false")
|
|
675
|
+
.andWhere("session.refreshTokenExpiresAt > :now", {
|
|
676
|
+
now: OneUptimeDate.getCurrentDate(),
|
|
677
|
+
})
|
|
678
|
+
.getOne();
|
|
679
|
+
|
|
680
|
+
if (
|
|
681
|
+
session &&
|
|
682
|
+
!StatusPagePrivateUserSessionService.isLoginCodeSession(session)
|
|
683
|
+
) {
|
|
684
|
+
return {
|
|
685
|
+
hasReadAccess: true,
|
|
686
|
+
};
|
|
687
|
+
}
|
|
665
688
|
}
|
|
666
689
|
} catch (err) {
|
|
667
690
|
logger.error(err, {
|
|
@@ -58,6 +58,12 @@ export class Service extends DatabaseService<Model> {
|
|
|
58
58
|
|
|
59
59
|
public constructor() {
|
|
60
60
|
super(Model);
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
* Bound retention of expired and revoked sessions, including device data,
|
|
64
|
+
* without deleting sessions that have renewed their refresh credentials.
|
|
65
|
+
*/
|
|
66
|
+
this.hardDeleteItemsOlderThanInDays("refreshTokenExpiresAt", 30);
|
|
61
67
|
}
|
|
62
68
|
|
|
63
69
|
public async createSession(
|
|
@@ -253,11 +253,15 @@ class VMwareVCenterOwnerRuleEngineServiceClass
|
|
|
253
253
|
owner.projectId = vmwareVCenter.projectId;
|
|
254
254
|
owner.userId = new ObjectID(userId);
|
|
255
255
|
owner.isOwnerNotified = !notify;
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
256
|
+
if (
|
|
257
|
+
await OwnerRuleAssignment.createOwner({
|
|
258
|
+
ownerService: VMwareVCenterOwnerUserService,
|
|
259
|
+
owner: owner,
|
|
260
|
+
props: { isRoot: true },
|
|
261
|
+
})
|
|
262
|
+
) {
|
|
263
|
+
ownersAdded++;
|
|
264
|
+
}
|
|
261
265
|
}
|
|
262
266
|
|
|
263
267
|
for (const teamId of teamIds) {
|
|
@@ -266,11 +270,15 @@ class VMwareVCenterOwnerRuleEngineServiceClass
|
|
|
266
270
|
owner.projectId = vmwareVCenter.projectId;
|
|
267
271
|
owner.teamId = new ObjectID(teamId);
|
|
268
272
|
owner.isOwnerNotified = !notify;
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
273
|
+
if (
|
|
274
|
+
await OwnerRuleAssignment.createOwner({
|
|
275
|
+
ownerService: VMwareVCenterOwnerTeamService,
|
|
276
|
+
owner: owner,
|
|
277
|
+
props: { isRoot: true },
|
|
278
|
+
})
|
|
279
|
+
) {
|
|
280
|
+
ownersAdded++;
|
|
281
|
+
}
|
|
274
282
|
}
|
|
275
283
|
}
|
|
276
284
|
|
|
@@ -245,11 +245,15 @@ class WorkflowOwnerRuleEngineServiceClass
|
|
|
245
245
|
owner.projectId = workflow.projectId;
|
|
246
246
|
owner.userId = new ObjectID(userId);
|
|
247
247
|
owner.isOwnerNotified = !notify;
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
248
|
+
if (
|
|
249
|
+
await OwnerRuleAssignment.createOwner({
|
|
250
|
+
ownerService: WorkflowOwnerUserService,
|
|
251
|
+
owner: owner,
|
|
252
|
+
props: { isRoot: true },
|
|
253
|
+
})
|
|
254
|
+
) {
|
|
255
|
+
ownersAdded++;
|
|
256
|
+
}
|
|
253
257
|
}
|
|
254
258
|
|
|
255
259
|
for (const teamId of teamIds) {
|
|
@@ -258,11 +262,15 @@ class WorkflowOwnerRuleEngineServiceClass
|
|
|
258
262
|
owner.projectId = workflow.projectId;
|
|
259
263
|
owner.teamId = new ObjectID(teamId);
|
|
260
264
|
owner.isOwnerNotified = !notify;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
265
|
+
if (
|
|
266
|
+
await OwnerRuleAssignment.createOwner({
|
|
267
|
+
ownerService: WorkflowOwnerTeamService,
|
|
268
|
+
owner: owner,
|
|
269
|
+
props: { isRoot: true },
|
|
270
|
+
})
|
|
271
|
+
) {
|
|
272
|
+
ownersAdded++;
|
|
273
|
+
}
|
|
266
274
|
}
|
|
267
275
|
}
|
|
268
276
|
|