@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
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
import { JSONObject } from "../JSON";
|
|
2
|
+
import {
|
|
3
|
+
AIResourceSubresource,
|
|
4
|
+
AIResourceType,
|
|
5
|
+
isAIResourceSubresourceKind,
|
|
6
|
+
isAIResourceType,
|
|
7
|
+
} from "./AIResourceContext";
|
|
2
8
|
|
|
3
9
|
/*
|
|
4
10
|
* "Page context" makes Ask AI aware of what the user is looking at in the
|
|
5
11
|
* dashboard. The client detects the current page (an incident, a monitor, a
|
|
6
12
|
* trace waterfall, the logs explorer, …) and attaches this small descriptor to
|
|
7
13
|
* each message it sends; the server folds it into the system prompt so "this
|
|
8
|
-
* incident" resolves to the entity on screen.
|
|
9
|
-
*
|
|
14
|
+
* incident" resolves to the entity on screen. The latest context is kept as
|
|
15
|
+
* the conversation's subject. Sending null explicitly detaches and clears
|
|
16
|
+
* that subject; omitting context lets a full-page conversation keep it.
|
|
10
17
|
*/
|
|
11
18
|
enum AIChatPageContextType {
|
|
12
19
|
// Entity pages — carry the entity's id (and usually a display title).
|
|
@@ -15,6 +22,8 @@ enum AIChatPageContextType {
|
|
|
15
22
|
Monitor = "Monitor",
|
|
16
23
|
ScheduledMaintenanceEvent = "ScheduledMaintenanceEvent",
|
|
17
24
|
TelemetryService = "TelemetryService",
|
|
25
|
+
RumApplication = "RumApplication",
|
|
26
|
+
Resource = "Resource",
|
|
18
27
|
Trace = "Trace",
|
|
19
28
|
Exception = "Exception",
|
|
20
29
|
|
|
@@ -27,6 +36,9 @@ enum AIChatPageContextType {
|
|
|
27
36
|
TracesExplorer = "TracesExplorer",
|
|
28
37
|
MetricsExplorer = "MetricsExplorer",
|
|
29
38
|
ExceptionsList = "ExceptionsList",
|
|
39
|
+
RumApplications = "RumApplications",
|
|
40
|
+
TelemetryServicesList = "TelemetryServicesList",
|
|
41
|
+
ResourcesList = "ResourcesList",
|
|
30
42
|
}
|
|
31
43
|
|
|
32
44
|
export default AIChatPageContextType;
|
|
@@ -37,6 +49,8 @@ export interface AIChatPageContext {
|
|
|
37
49
|
entityId?: string | undefined;
|
|
38
50
|
// Display title of the entity (incident title, monitor name, …). Optional.
|
|
39
51
|
entityTitle?: string | undefined;
|
|
52
|
+
resourceType?: AIResourceType | undefined;
|
|
53
|
+
subresource?: AIResourceSubresource | undefined;
|
|
40
54
|
}
|
|
41
55
|
|
|
42
56
|
/*
|
|
@@ -58,11 +72,28 @@ const ENTITY_TYPES: Array<AIChatPageContextType> = [
|
|
|
58
72
|
AIChatPageContextType.Monitor,
|
|
59
73
|
AIChatPageContextType.ScheduledMaintenanceEvent,
|
|
60
74
|
AIChatPageContextType.TelemetryService,
|
|
75
|
+
AIChatPageContextType.RumApplication,
|
|
76
|
+
AIChatPageContextType.Resource,
|
|
61
77
|
AIChatPageContextType.Trace,
|
|
62
78
|
AIChatPageContextType.Exception,
|
|
63
79
|
];
|
|
64
80
|
|
|
65
81
|
export class AIChatPageContextHelper {
|
|
82
|
+
/*
|
|
83
|
+
* Titles are presentation hints; only the resource and child identity decide
|
|
84
|
+
* whether navigation has selected a different conversation subject.
|
|
85
|
+
*/
|
|
86
|
+
public static getIdentity(context: AIChatPageContext): string {
|
|
87
|
+
return JSON.stringify([
|
|
88
|
+
context.type,
|
|
89
|
+
context.entityId || null,
|
|
90
|
+
context.resourceType || null,
|
|
91
|
+
context.subresource?.kind || null,
|
|
92
|
+
context.subresource?.key || null,
|
|
93
|
+
context.subresource?.namespace || null,
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
|
|
66
97
|
public static isValidType(
|
|
67
98
|
value: string | undefined,
|
|
68
99
|
): value is AIChatPageContextType {
|
|
@@ -97,6 +128,16 @@ export class AIChatPageContextHelper {
|
|
|
97
128
|
|
|
98
129
|
const context: AIChatPageContext = { type: type };
|
|
99
130
|
|
|
131
|
+
if (
|
|
132
|
+
type === AIChatPageContextType.Resource ||
|
|
133
|
+
type === AIChatPageContextType.ResourcesList
|
|
134
|
+
) {
|
|
135
|
+
if (!isAIResourceType(json["resourceType"])) {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
context.resourceType = json["resourceType"];
|
|
139
|
+
}
|
|
140
|
+
|
|
100
141
|
if (this.isEntityType(type)) {
|
|
101
142
|
const entityId: string =
|
|
102
143
|
typeof json["entityId"] === "string"
|
|
@@ -113,6 +154,50 @@ export class AIChatPageContextHelper {
|
|
|
113
154
|
|
|
114
155
|
context.entityId = entityId;
|
|
115
156
|
|
|
157
|
+
if (
|
|
158
|
+
type === AIChatPageContextType.Resource &&
|
|
159
|
+
json["subresource"] !== undefined
|
|
160
|
+
) {
|
|
161
|
+
const raw: unknown = json["subresource"];
|
|
162
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
const child: JSONObject = raw as JSONObject;
|
|
166
|
+
if (
|
|
167
|
+
!context.resourceType ||
|
|
168
|
+
!isAIResourceSubresourceKind(context.resourceType, child["kind"])
|
|
169
|
+
) {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
const subresource: AIResourceSubresource = { kind: child["kind"] };
|
|
173
|
+
if (child["key"] !== undefined) {
|
|
174
|
+
// eslint-disable-next-line no-control-regex
|
|
175
|
+
const controlCharacters: RegExp = /[\u0000-\u001F\u007F]/;
|
|
176
|
+
if (
|
|
177
|
+
typeof child["key"] !== "string" ||
|
|
178
|
+
!child["key"].trim() ||
|
|
179
|
+
child["key"].length > 512 ||
|
|
180
|
+
controlCharacters.test(child["key"])
|
|
181
|
+
) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
subresource.key = child["key"].trim();
|
|
185
|
+
}
|
|
186
|
+
if (child["namespace"] !== undefined) {
|
|
187
|
+
const namespacePattern: RegExp = /^[a-z0-9](?:[-a-z0-9]*[a-z0-9])?$/;
|
|
188
|
+
if (
|
|
189
|
+
context.resourceType !== AIResourceType.KubernetesCluster ||
|
|
190
|
+
typeof child["namespace"] !== "string" ||
|
|
191
|
+
child["namespace"].length > 63 ||
|
|
192
|
+
!namespacePattern.test(child["namespace"])
|
|
193
|
+
) {
|
|
194
|
+
return undefined;
|
|
195
|
+
}
|
|
196
|
+
subresource.namespace = child["namespace"];
|
|
197
|
+
}
|
|
198
|
+
context.subresource = subresource;
|
|
199
|
+
}
|
|
200
|
+
|
|
116
201
|
if (typeof json["entityTitle"] === "string") {
|
|
117
202
|
/*
|
|
118
203
|
* The title is echoed into the system prompt: collapse whitespace and
|
package/Types/AI/AIChatTypes.ts
CHANGED
|
@@ -37,6 +37,10 @@ export enum AIChatCitationTargetType {
|
|
|
37
37
|
Probes = "Probes",
|
|
38
38
|
Teams = "Teams",
|
|
39
39
|
SecurityEvents = "SecurityEvents",
|
|
40
|
+
RumApplications = "RumApplications",
|
|
41
|
+
RumApplicationView = "RumApplicationView",
|
|
42
|
+
TelemetryResources = "TelemetryResources",
|
|
43
|
+
TelemetryResourceView = "TelemetryResourceView",
|
|
40
44
|
}
|
|
41
45
|
|
|
42
46
|
export interface AIChatCitationTarget {
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import IconProp from "../Icon/IconProp";
|
|
2
|
+
import {
|
|
3
|
+
RESOURCE_FACET_CATALOG,
|
|
4
|
+
ResourceFacetDefinition,
|
|
5
|
+
} from "../Telemetry/ResourceFacetCatalog";
|
|
6
|
+
import ServiceType from "../Telemetry/ServiceType";
|
|
7
|
+
|
|
8
|
+
export enum AIResourceType {
|
|
9
|
+
Host = "Host",
|
|
10
|
+
DockerHost = "DockerHost",
|
|
11
|
+
PodmanHost = "PodmanHost",
|
|
12
|
+
KubernetesCluster = "KubernetesCluster",
|
|
13
|
+
DockerSwarmCluster = "DockerSwarmCluster",
|
|
14
|
+
ProxmoxCluster = "ProxmoxCluster",
|
|
15
|
+
VMwareVCenter = "VMwareVCenter",
|
|
16
|
+
CephCluster = "CephCluster",
|
|
17
|
+
ServerlessFunction = "ServerlessFunction",
|
|
18
|
+
CloudResource = "CloudResource",
|
|
19
|
+
IoTFleet = "IoTFleet",
|
|
20
|
+
NetworkDevice = "NetworkDevice",
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export enum AIResourceSubresourceKind {
|
|
24
|
+
Namespace = "Namespace",
|
|
25
|
+
Pod = "Pod",
|
|
26
|
+
Deployment = "Deployment",
|
|
27
|
+
StatefulSet = "StatefulSet",
|
|
28
|
+
DaemonSet = "DaemonSet",
|
|
29
|
+
Job = "Job",
|
|
30
|
+
CronJob = "CronJob",
|
|
31
|
+
Node = "Node",
|
|
32
|
+
Container = "Container",
|
|
33
|
+
PersistentVolumeClaim = "PersistentVolumeClaim",
|
|
34
|
+
PersistentVolume = "PersistentVolume",
|
|
35
|
+
HorizontalPodAutoscaler = "HorizontalPodAutoscaler",
|
|
36
|
+
VerticalPodAutoscaler = "VerticalPodAutoscaler",
|
|
37
|
+
Service = "Service",
|
|
38
|
+
Task = "Task",
|
|
39
|
+
Stack = "Stack",
|
|
40
|
+
Network = "Network",
|
|
41
|
+
Volume = "Volume",
|
|
42
|
+
Secret = "Secret",
|
|
43
|
+
Config = "Config",
|
|
44
|
+
Guest = "Guest",
|
|
45
|
+
Storage = "Storage",
|
|
46
|
+
Host = "Host",
|
|
47
|
+
VirtualMachine = "VirtualMachine",
|
|
48
|
+
Datastore = "Datastore",
|
|
49
|
+
Cluster = "Cluster",
|
|
50
|
+
Osd = "Osd",
|
|
51
|
+
Pool = "Pool",
|
|
52
|
+
Device = "Device",
|
|
53
|
+
Process = "Process",
|
|
54
|
+
WindowsService = "WindowsService",
|
|
55
|
+
SystemdUnit = "SystemdUnit",
|
|
56
|
+
Instance = "Instance",
|
|
57
|
+
Interface = "Interface",
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export interface AIResourceSubresource {
|
|
61
|
+
kind: AIResourceSubresourceKind;
|
|
62
|
+
// Child names and external IDs are not OneUptime resource UUIDs.
|
|
63
|
+
key?: string | undefined;
|
|
64
|
+
namespace?: string | undefined;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface AIResourceDefinition extends ResourceFacetDefinition {
|
|
68
|
+
type: AIResourceType;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const RESOURCE_FACET_KEYS: Record<AIResourceType, string> = {
|
|
72
|
+
[AIResourceType.Host]: "hostId",
|
|
73
|
+
[AIResourceType.DockerHost]: "dockerHostId",
|
|
74
|
+
[AIResourceType.PodmanHost]: "podmanHostId",
|
|
75
|
+
[AIResourceType.KubernetesCluster]: "kubernetesClusterId",
|
|
76
|
+
[AIResourceType.DockerSwarmCluster]: "dockerSwarmClusterId",
|
|
77
|
+
[AIResourceType.ProxmoxCluster]: "proxmoxClusterId",
|
|
78
|
+
[AIResourceType.VMwareVCenter]: "vmwareVCenterId",
|
|
79
|
+
[AIResourceType.CephCluster]: "cephClusterId",
|
|
80
|
+
[AIResourceType.ServerlessFunction]: "serverlessFunctionId",
|
|
81
|
+
[AIResourceType.CloudResource]: "cloudResourceId",
|
|
82
|
+
[AIResourceType.IoTFleet]: "iotFleetId",
|
|
83
|
+
[AIResourceType.NetworkDevice]: "networkDeviceId",
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
/*
|
|
87
|
+
* Reuse the telemetry catalog's labels and type discriminators, including
|
|
88
|
+
* IoTFleet's historical IoTDevice discriminator. Network devices have no facet.
|
|
89
|
+
*/
|
|
90
|
+
export const AI_RESOURCE_DEFINITIONS: ReadonlyArray<AIResourceDefinition> =
|
|
91
|
+
Object.values(AIResourceType).map(
|
|
92
|
+
(type: AIResourceType): AIResourceDefinition => {
|
|
93
|
+
const facetKey: string = RESOURCE_FACET_KEYS[type];
|
|
94
|
+
if (type === AIResourceType.NetworkDevice) {
|
|
95
|
+
return {
|
|
96
|
+
type,
|
|
97
|
+
facetKey,
|
|
98
|
+
serviceType: ServiceType.NetworkDevice,
|
|
99
|
+
label: "Network Device",
|
|
100
|
+
pluralLabel: "Network Devices",
|
|
101
|
+
icon: IconProp.Server,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const definition: ResourceFacetDefinition | undefined =
|
|
106
|
+
RESOURCE_FACET_CATALOG.find(
|
|
107
|
+
(item: ResourceFacetDefinition): boolean => {
|
|
108
|
+
return item.facetKey === facetKey;
|
|
109
|
+
},
|
|
110
|
+
);
|
|
111
|
+
if (!definition) {
|
|
112
|
+
throw new Error(`Missing resource facet definition: ${type}`);
|
|
113
|
+
}
|
|
114
|
+
return { ...definition, type };
|
|
115
|
+
},
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
export function getAIResourceDefinition(
|
|
119
|
+
type: AIResourceType,
|
|
120
|
+
): AIResourceDefinition {
|
|
121
|
+
const definition: AIResourceDefinition | undefined =
|
|
122
|
+
AI_RESOURCE_DEFINITIONS.find((item: AIResourceDefinition): boolean => {
|
|
123
|
+
return item.type === type;
|
|
124
|
+
});
|
|
125
|
+
if (!definition) {
|
|
126
|
+
throw new Error(`Unknown AI resource type: ${type}`);
|
|
127
|
+
}
|
|
128
|
+
return definition;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function isAIResourceType(value: unknown): value is AIResourceType {
|
|
132
|
+
return Object.values(AIResourceType).includes(value as AIResourceType);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export const AI_RESOURCE_SUBRESOURCE_KINDS: Readonly<
|
|
136
|
+
Record<AIResourceType, ReadonlyArray<AIResourceSubresourceKind>>
|
|
137
|
+
> = {
|
|
138
|
+
[AIResourceType.Host]: [
|
|
139
|
+
AIResourceSubresourceKind.Process,
|
|
140
|
+
AIResourceSubresourceKind.WindowsService,
|
|
141
|
+
AIResourceSubresourceKind.SystemdUnit,
|
|
142
|
+
],
|
|
143
|
+
[AIResourceType.DockerHost]: [AIResourceSubresourceKind.Container],
|
|
144
|
+
[AIResourceType.PodmanHost]: [AIResourceSubresourceKind.Container],
|
|
145
|
+
[AIResourceType.KubernetesCluster]: [
|
|
146
|
+
AIResourceSubresourceKind.Namespace,
|
|
147
|
+
AIResourceSubresourceKind.Pod,
|
|
148
|
+
AIResourceSubresourceKind.Deployment,
|
|
149
|
+
AIResourceSubresourceKind.StatefulSet,
|
|
150
|
+
AIResourceSubresourceKind.DaemonSet,
|
|
151
|
+
AIResourceSubresourceKind.Job,
|
|
152
|
+
AIResourceSubresourceKind.CronJob,
|
|
153
|
+
AIResourceSubresourceKind.Node,
|
|
154
|
+
AIResourceSubresourceKind.Container,
|
|
155
|
+
AIResourceSubresourceKind.PersistentVolumeClaim,
|
|
156
|
+
AIResourceSubresourceKind.PersistentVolume,
|
|
157
|
+
AIResourceSubresourceKind.HorizontalPodAutoscaler,
|
|
158
|
+
AIResourceSubresourceKind.VerticalPodAutoscaler,
|
|
159
|
+
],
|
|
160
|
+
[AIResourceType.DockerSwarmCluster]: [
|
|
161
|
+
AIResourceSubresourceKind.Node,
|
|
162
|
+
AIResourceSubresourceKind.Service,
|
|
163
|
+
AIResourceSubresourceKind.Task,
|
|
164
|
+
AIResourceSubresourceKind.Stack,
|
|
165
|
+
AIResourceSubresourceKind.Network,
|
|
166
|
+
AIResourceSubresourceKind.Volume,
|
|
167
|
+
AIResourceSubresourceKind.Secret,
|
|
168
|
+
AIResourceSubresourceKind.Config,
|
|
169
|
+
],
|
|
170
|
+
[AIResourceType.ProxmoxCluster]: [
|
|
171
|
+
AIResourceSubresourceKind.Node,
|
|
172
|
+
AIResourceSubresourceKind.Guest,
|
|
173
|
+
AIResourceSubresourceKind.Storage,
|
|
174
|
+
],
|
|
175
|
+
[AIResourceType.VMwareVCenter]: [
|
|
176
|
+
AIResourceSubresourceKind.Host,
|
|
177
|
+
AIResourceSubresourceKind.VirtualMachine,
|
|
178
|
+
AIResourceSubresourceKind.Datastore,
|
|
179
|
+
AIResourceSubresourceKind.Cluster,
|
|
180
|
+
],
|
|
181
|
+
[AIResourceType.CephCluster]: [
|
|
182
|
+
AIResourceSubresourceKind.Osd,
|
|
183
|
+
AIResourceSubresourceKind.Pool,
|
|
184
|
+
],
|
|
185
|
+
[AIResourceType.IoTFleet]: [AIResourceSubresourceKind.Device],
|
|
186
|
+
[AIResourceType.ServerlessFunction]: [AIResourceSubresourceKind.Instance],
|
|
187
|
+
[AIResourceType.CloudResource]: [AIResourceSubresourceKind.Instance],
|
|
188
|
+
[AIResourceType.NetworkDevice]: [AIResourceSubresourceKind.Interface],
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
export function isAIResourceSubresourceKind(
|
|
192
|
+
type: AIResourceType,
|
|
193
|
+
value: unknown,
|
|
194
|
+
): value is AIResourceSubresourceKind {
|
|
195
|
+
return AI_RESOURCE_SUBRESOURCE_KINDS[type].includes(
|
|
196
|
+
value as AIResourceSubresourceKind,
|
|
197
|
+
);
|
|
198
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type InvestigationNotStartedCode =
|
|
2
|
+
| "ai_disabled"
|
|
3
|
+
| "automatic_investigation_disabled"
|
|
4
|
+
| "provider_missing"
|
|
5
|
+
| "severity_below_threshold"
|
|
6
|
+
| "monitor_cooldown"
|
|
7
|
+
| "daily_budget_exhausted"
|
|
8
|
+
| "budget_check_failed"
|
|
9
|
+
| "enqueue_failed"
|
|
10
|
+
| "eligibility_check_failed"
|
|
11
|
+
| "no_run_recorded";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A recorded decision is evidence from the creation hook. Current settings
|
|
15
|
+
* explain eligibility now, and must never be presented as a historical fact.
|
|
16
|
+
*/
|
|
17
|
+
export default interface InvestigationNotStartedReason {
|
|
18
|
+
code: InvestigationNotStartedCode;
|
|
19
|
+
title: string;
|
|
20
|
+
description: string;
|
|
21
|
+
nextStep: string;
|
|
22
|
+
source: "recorded" | "current_configuration" | "unknown";
|
|
23
|
+
evaluatedAt: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface InvestigationGateDetails {
|
|
27
|
+
severityName?: string | undefined;
|
|
28
|
+
minimumSeverityName?: string | undefined;
|
|
29
|
+
cooldownWindowMinutes?: number | undefined;
|
|
30
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import GenericFunction from "../GenericFunction";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Declares that no two rows of a model may share the same values across
|
|
5
|
+
* `columnNames`. DatabaseService.create looks for an existing row with those
|
|
6
|
+
* values before inserting and, if there is one, rejects the insert with
|
|
7
|
+
* `errorMessage` instead of writing a second row.
|
|
8
|
+
*
|
|
9
|
+
* WHY THIS EXISTS
|
|
10
|
+
*
|
|
11
|
+
* Join rows such as <Resource>OwnerTeam / <Resource>OwnerUser have side effects
|
|
12
|
+
* on create: each new row writes a feed item and notifies the owner. The
|
|
13
|
+
* dashboard hides owners that are already attached, but the REST API,
|
|
14
|
+
* workflows and internal callers all insert directly, so a duplicate row used
|
|
15
|
+
* to mean a duplicate notification (issue #3394).
|
|
16
|
+
*
|
|
17
|
+
* This is the application half of the guarantee. Declare the same columns in
|
|
18
|
+
* an `@Index([...], { unique: true })` on the entity as well: a check before an
|
|
19
|
+
* insert cannot stop two concurrent writers, and only the database can.
|
|
20
|
+
* PostgresErrorTranslator.isUniqueViolation() recognises the rejection from
|
|
21
|
+
* either layer, so a caller that wants "already there" to be a no-op needs a
|
|
22
|
+
* single check.
|
|
23
|
+
*
|
|
24
|
+
* Only creates are checked. Rows are expected to be re-keyed rarely, if ever,
|
|
25
|
+
* and the unique index covers updates.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
export interface UniqueColumnsTogetherMetadata {
|
|
29
|
+
columnNames: Array<string>;
|
|
30
|
+
errorMessage: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default (columnNames: Array<string>, errorMessage: string) => {
|
|
34
|
+
return (ctr: GenericFunction) => {
|
|
35
|
+
/*
|
|
36
|
+
* Stackable. Read only this class's own list: a subclass must not
|
|
37
|
+
* append to the list its parent keeps on the parent's prototype.
|
|
38
|
+
*/
|
|
39
|
+
const existing: Array<UniqueColumnsTogetherMetadata> =
|
|
40
|
+
Object.prototype.hasOwnProperty.call(
|
|
41
|
+
ctr.prototype,
|
|
42
|
+
"uniqueColumnsTogether",
|
|
43
|
+
)
|
|
44
|
+
? ctr.prototype.uniqueColumnsTogether
|
|
45
|
+
: [];
|
|
46
|
+
|
|
47
|
+
ctr.prototype.uniqueColumnsTogether = [
|
|
48
|
+
...existing,
|
|
49
|
+
{
|
|
50
|
+
columnNames: [...columnNames],
|
|
51
|
+
errorMessage: errorMessage,
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
};
|
|
55
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AggregatedModel from "../BaseDatabase/AggregatedModel";
|
|
2
2
|
import MetricAliasData from "./MetricAliasData";
|
|
3
3
|
import MetricQueryData from "./MetricQueryData";
|
|
4
|
+
import MetricsQuery from "./MetricsQuery";
|
|
4
5
|
|
|
5
6
|
export enum MetricChartType {
|
|
6
7
|
LINE = "line",
|
|
@@ -25,6 +26,13 @@ export default interface MetricQueryConfigData {
|
|
|
25
26
|
id?: string | undefined;
|
|
26
27
|
metricAliasData?: MetricAliasData | undefined;
|
|
27
28
|
metricQueryData: MetricQueryData;
|
|
29
|
+
/**
|
|
30
|
+
* Resource identity for event markers when the metric list is scoped by
|
|
31
|
+
* entity membership instead of telemetry attributes (e.g. RUM, Inventory).
|
|
32
|
+
* Kept separate from the metric filter: these identifiers are not stored
|
|
33
|
+
* in its attributes map. An explicit empty scope suppresses event markers.
|
|
34
|
+
*/
|
|
35
|
+
eventScope?: MetricsQuery["attributes"] | undefined;
|
|
28
36
|
getSeries?: ((data: AggregatedModel) => ChartSeries) | undefined;
|
|
29
37
|
chartType?: MetricChartType | undefined;
|
|
30
38
|
yAxisValueFormatter?: ((value: number) => string) | undefined;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export interface WebVitalDefinition {
|
|
2
|
+
key: string;
|
|
3
|
+
label: string;
|
|
4
|
+
unit: "ms" | "score";
|
|
5
|
+
thresholds: { warn: number; danger: number };
|
|
6
|
+
names: Array<string>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// Ordered aliases recognized by the RUM overview and the AI assistant.
|
|
10
|
+
export const WebVitalDefinitions: Array<WebVitalDefinition> = [
|
|
11
|
+
{
|
|
12
|
+
key: "lcp",
|
|
13
|
+
label: "Largest Contentful Paint",
|
|
14
|
+
unit: "ms",
|
|
15
|
+
thresholds: { warn: 2500, danger: 4000 },
|
|
16
|
+
names: [
|
|
17
|
+
"web_vital.lcp",
|
|
18
|
+
"browser.largest_contentful_paint",
|
|
19
|
+
"largest_contentful_paint",
|
|
20
|
+
"web.vitals.lcp",
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
key: "inp",
|
|
25
|
+
label: "Interaction to Next Paint",
|
|
26
|
+
unit: "ms",
|
|
27
|
+
thresholds: { warn: 200, danger: 500 },
|
|
28
|
+
names: [
|
|
29
|
+
"web_vital.inp",
|
|
30
|
+
"browser.interaction_to_next_paint",
|
|
31
|
+
"interaction_to_next_paint",
|
|
32
|
+
"web.vitals.inp",
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: "cls",
|
|
37
|
+
label: "Cumulative Layout Shift",
|
|
38
|
+
unit: "score",
|
|
39
|
+
thresholds: { warn: 0.1, danger: 0.25 },
|
|
40
|
+
names: [
|
|
41
|
+
"web_vital.cls",
|
|
42
|
+
"browser.cumulative_layout_shift",
|
|
43
|
+
"cumulative_layout_shift",
|
|
44
|
+
"web.vitals.cls",
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: "fcp",
|
|
49
|
+
label: "First Contentful Paint",
|
|
50
|
+
unit: "ms",
|
|
51
|
+
thresholds: { warn: 1800, danger: 3000 },
|
|
52
|
+
names: [
|
|
53
|
+
"web_vital.fcp",
|
|
54
|
+
"browser.first_contentful_paint",
|
|
55
|
+
"first_contentful_paint",
|
|
56
|
+
"web.vitals.fcp",
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
key: "ttfb",
|
|
61
|
+
label: "Time to First Byte",
|
|
62
|
+
unit: "ms",
|
|
63
|
+
thresholds: { warn: 800, danger: 1800 },
|
|
64
|
+
names: [
|
|
65
|
+
"web_vital.ttfb",
|
|
66
|
+
"browser.time_to_first_byte",
|
|
67
|
+
"time_to_first_byte",
|
|
68
|
+
"web.vitals.ttfb",
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
];
|
package/Types/WebsiteRequest.ts
CHANGED
|
@@ -122,6 +122,7 @@ export default class WebsiteRequest {
|
|
|
122
122
|
options.limitRedirectResponseBody || false,
|
|
123
123
|
isHeadResponse: responseIsForHeadRequest,
|
|
124
124
|
maximumResponseBytes: options.maximumResponseBytes,
|
|
125
|
+
signal: options.signal,
|
|
125
126
|
}),
|
|
126
127
|
);
|
|
127
128
|
}
|
|
@@ -147,6 +148,7 @@ export default class WebsiteRequest {
|
|
|
147
148
|
limitRedirectResponseBody: options.limitRedirectResponseBody || false,
|
|
148
149
|
isHeadResponse: responseIsForHeadRequest,
|
|
149
150
|
maximumResponseBytes: options.maximumResponseBytes,
|
|
151
|
+
signal: options.signal,
|
|
150
152
|
}),
|
|
151
153
|
);
|
|
152
154
|
}
|
|
@@ -38,13 +38,15 @@ export interface ComponentProps {
|
|
|
38
38
|
const ENTERPRISE_URL: string = "https://oneuptime.com/enterprise/demo";
|
|
39
39
|
|
|
40
40
|
/*
|
|
41
|
-
* Linked only for major upgrades. Points at
|
|
42
|
-
* on this installation, because the guide for the version you are
|
|
43
|
-
* the one you need, and this installation only ships the guide for
|
|
44
|
-
* it is already running.
|
|
41
|
+
* Linked only for major upgrades. Points at the oneuptime.com docs rather than
|
|
42
|
+
* the docs site on this installation, because the guide for the version you are
|
|
43
|
+
* moving TO is the one you need, and this installation only ships the guide for
|
|
44
|
+
* the version it is already running. The oneuptime.com docs always carry the
|
|
45
|
+
* latest release, and unlike a GitHub file link this URL does not break when
|
|
46
|
+
* the docs move in the repository.
|
|
45
47
|
*/
|
|
46
48
|
const UPGRADE_GUIDE_URL: string =
|
|
47
|
-
"https://
|
|
49
|
+
"https://oneuptime.com/docs/installation/upgrading";
|
|
48
50
|
const SALES_EMAIL: string = "sales@oneuptime.com";
|
|
49
51
|
const SALES_MAILTO_URL: string = "mailto:sales@oneuptime.com";
|
|
50
52
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
The dashboard's global keyboard layer — the shortcuts dialog
|
|
4
4
|
(`../KeyboardShortcutsModal.tsx`) and the two places it is reachable by mouse.
|
|
5
5
|
Rendered from the real components against the dashboard's own Tailwind build
|
|
6
|
-
and `Common/UI/Styles/Theme.css`.
|
|
6
|
+
and `packages/Common/UI/Styles/Theme.css`.
|
|
7
7
|
|
|
8
8
|
| File | Shows |
|
|
9
9
|
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
|
|
@@ -2546,6 +2546,14 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
|
|
|
2546
2546
|
const hasPermissionToReadField: HasPermissionToReadFieldFunction = (
|
|
2547
2547
|
field: keyof TBaseModel,
|
|
2548
2548
|
): boolean => {
|
|
2549
|
+
/*
|
|
2550
|
+
* Secondary fields use this check when building the request, so they need
|
|
2551
|
+
* the same master-admin access as the visible columns that render them.
|
|
2552
|
+
*/
|
|
2553
|
+
if (User.isMasterAdmin()) {
|
|
2554
|
+
return true;
|
|
2555
|
+
}
|
|
2556
|
+
|
|
2549
2557
|
const accessControl: Dictionary<ColumnAccessControl> =
|
|
2550
2558
|
model.getColumnAccessControlForAllColumns();
|
|
2551
2559
|
|
|
@@ -29,6 +29,8 @@ export interface NavItem {
|
|
|
29
29
|
export interface MoreMenuItem {
|
|
30
30
|
title: string;
|
|
31
31
|
description: string;
|
|
32
|
+
/** Acronyms and alternate names users can search for in navigation. */
|
|
33
|
+
keywords?: Array<string> | undefined;
|
|
32
34
|
route: Route;
|
|
33
35
|
icon: IconProp;
|
|
34
36
|
iconColor?: string; // Tailwind color name like "blue", "purple", "amber"
|
|
@@ -186,14 +186,18 @@ const NavBarMenuModal: FunctionComponent<ComponentProps> = (
|
|
|
186
186
|
|
|
187
187
|
const recentLabel: string = tx(props.recentLabel || "Recent");
|
|
188
188
|
|
|
189
|
-
//
|
|
189
|
+
// Keep familiar acronyms searchable even when the displayed title is translated.
|
|
190
190
|
const filteredItems: MoreMenuItem[] = useMemo(() => {
|
|
191
191
|
const normalizedQuery: string = query.trim().toLowerCase();
|
|
192
192
|
if (!normalizedQuery) {
|
|
193
193
|
return props.items;
|
|
194
194
|
}
|
|
195
195
|
return props.items.filter((item: MoreMenuItem) => {
|
|
196
|
-
return item.title.
|
|
196
|
+
return [item.title, item.description, ...(item.keywords || [])].some(
|
|
197
|
+
(value: string) => {
|
|
198
|
+
return value.toLowerCase().includes(normalizedQuery);
|
|
199
|
+
},
|
|
200
|
+
);
|
|
197
201
|
});
|
|
198
202
|
}, [props.items, query]);
|
|
199
203
|
|
package/UI/esbuild-config.js
CHANGED
|
@@ -11,7 +11,7 @@ const dotenv = require("dotenv");
|
|
|
11
11
|
function createRefractorCompatibilityPlugin() {
|
|
12
12
|
const candidateRoots = [
|
|
13
13
|
path.resolve(__dirname, "../node_modules/refractor"),
|
|
14
|
-
path.resolve(__dirname, "
|
|
14
|
+
path.resolve(__dirname, "../../../node_modules/refractor"),
|
|
15
15
|
];
|
|
16
16
|
|
|
17
17
|
const refractorRoot = candidateRoots.find((packagePath) =>
|
|
@@ -53,7 +53,7 @@ function createRefractorCompatibilityPlugin() {
|
|
|
53
53
|
function createMermaidPlugin() {
|
|
54
54
|
const candidateRoots = [
|
|
55
55
|
path.resolve(__dirname, "../node_modules/mermaid"),
|
|
56
|
-
path.resolve(__dirname, "
|
|
56
|
+
path.resolve(__dirname, "../../../node_modules/mermaid"),
|
|
57
57
|
];
|
|
58
58
|
const mermaidRoot = candidateRoots.find((p) => fs.existsSync(p));
|
|
59
59
|
|
|
@@ -259,7 +259,7 @@ function resolvePackageRoot(packageName) {
|
|
|
259
259
|
process.cwd(),
|
|
260
260
|
__dirname,
|
|
261
261
|
path.resolve(__dirname, ".."),
|
|
262
|
-
path.resolve(__dirname, "
|
|
262
|
+
path.resolve(__dirname, "../../.."),
|
|
263
263
|
];
|
|
264
264
|
|
|
265
265
|
for (const resolutionPath of resolutionPaths) {
|
|
@@ -300,7 +300,7 @@ function resolvePackageSubpath(packageName, subpath) {
|
|
|
300
300
|
process.cwd(),
|
|
301
301
|
__dirname,
|
|
302
302
|
path.resolve(__dirname, ".."),
|
|
303
|
-
path.resolve(__dirname, "
|
|
303
|
+
path.resolve(__dirname, "../../.."),
|
|
304
304
|
];
|
|
305
305
|
|
|
306
306
|
for (const resolutionPath of resolutionPaths) {
|