@oneuptime/common 14.0.10 → 14.0.11
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/AIConversation.ts +127 -1
- package/Models/DatabaseModels/CephCluster.ts +12 -0
- package/Models/DatabaseModels/CloudResource.ts +12 -0
- package/Models/DatabaseModels/DatabaseServer.ts +12 -0
- package/Models/DatabaseModels/DockerHost.ts +12 -0
- package/Models/DatabaseModels/DockerSwarmCluster.ts +12 -0
- package/Models/DatabaseModels/GlobalOidc.ts +0 -4
- package/Models/DatabaseModels/GlobalOidcProject.ts +0 -4
- package/Models/DatabaseModels/GlobalSso.ts +0 -4
- package/Models/DatabaseModels/GlobalSsoProject.ts +0 -4
- package/Models/DatabaseModels/Host.ts +12 -0
- package/Models/DatabaseModels/IncidentForm.ts +594 -0
- package/Models/DatabaseModels/IncidentFormSubmission.ts +283 -0
- package/Models/DatabaseModels/IncidentTemplate.ts +59 -0
- package/Models/DatabaseModels/Index.ts +14 -0
- package/Models/DatabaseModels/IoTFleet.ts +12 -0
- package/Models/DatabaseModels/KubernetesCluster.ts +12 -0
- package/Models/DatabaseModels/MessageQueue.ts +1102 -0
- package/Models/DatabaseModels/MessageQueueLabelRule.ts +553 -0
- package/Models/DatabaseModels/MessageQueueOwnerRule.ts +633 -0
- package/Models/DatabaseModels/MessageQueueOwnerTeam.ts +491 -0
- package/Models/DatabaseModels/MessageQueueOwnerUser.ts +490 -0
- package/Models/DatabaseModels/PodmanHost.ts +12 -0
- package/Models/DatabaseModels/Project.ts +59 -0
- package/Models/DatabaseModels/ProjectOidc.ts +0 -4
- package/Models/DatabaseModels/ProjectSso.ts +0 -4
- package/Models/DatabaseModels/ProxmoxCluster.ts +12 -0
- package/Models/DatabaseModels/RumApplication.ts +12 -0
- package/Models/DatabaseModels/ServerlessFunction.ts +12 -0
- package/Models/DatabaseModels/Service.ts +12 -0
- package/Models/DatabaseModels/StatusPageOidc.ts +0 -4
- package/Models/DatabaseModels/StatusPageSso.ts +0 -4
- package/Models/DatabaseModels/TeamComplianceSetting.ts +47 -2
- package/Models/DatabaseModels/VMwareVCenter.ts +12 -0
- package/Server/API/AIChatAPI.ts +13 -114
- package/Server/API/AIInvestigationAPI.ts +3 -3
- package/Server/API/AIInvestigationConversationAPI.ts +266 -0
- package/Server/API/IncidentFormAPI.ts +376 -0
- package/Server/API/ProjectOIDC.ts +16 -25
- package/Server/API/ProjectSSO.ts +16 -24
- package/Server/API/StatusPageAPI.ts +42 -77
- package/Server/Enterprise/EnterpriseEdition.ts +93 -28
- package/Server/Enterprise/EnterpriseFeature.ts +25 -3
- package/Server/Enterprise/EnterpriseLicenseSnapshot.ts +1 -1
- package/Server/Enterprise/EnterpriseServerModule.ts +4 -1
- package/Server/EnvironmentConfig.ts +1 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1796400000000-AddIncidentForms.ts +129 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1796500000000-AddTeamComplianceRuleNotificationChannels.ts +52 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1796600000000-AddAIInvestigationConversationAndTimeLimits.ts +75 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1796700000000-AddMessageQueueTables.ts +477 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
- package/Server/Middleware/IncidentFormRateLimit.ts +847 -0
- package/Server/Middleware/UserAuthorization.ts +16 -38
- package/Server/Services/AIService.ts +10 -13
- package/Server/Services/IncidentCustomFieldService.ts +112 -2
- package/Server/Services/IncidentEpisodeMemberService.ts +24 -4
- package/Server/Services/IncidentEpisodeService.ts +10 -1
- package/Server/Services/IncidentFormService.ts +1566 -0
- package/Server/Services/IncidentFormSubmissionService.ts +97 -0
- package/Server/Services/IncidentGroupingEngineService.ts +45 -8
- package/Server/Services/IncidentService.ts +123 -5
- package/Server/Services/IncidentTemplateService.ts +22 -0
- package/Server/Services/Index.ts +14 -0
- package/Server/Services/MessageQueueLabelRuleEngineService.ts +321 -0
- package/Server/Services/MessageQueueLabelRuleService.ts +14 -0
- package/Server/Services/MessageQueueOwnerRuleEngineService.ts +412 -0
- package/Server/Services/MessageQueueOwnerRuleService.ts +14 -0
- package/Server/Services/MessageQueueOwnerTeamService.ts +62 -0
- package/Server/Services/MessageQueueOwnerUserService.ts +62 -0
- package/Server/Services/MessageQueueService.ts +1463 -0
- package/Server/Services/OpenTelemetryIngestService.ts +37 -4
- package/Server/Services/ProjectService.ts +0 -59
- package/Server/Services/StatusPagePrivateUserService.ts +1 -4
- package/Server/Services/StatusPageService.ts +1 -51
- package/Server/Services/TeamComplianceSettingService.ts +163 -42
- package/Server/Services/UserNotificationRuleService.ts +8 -1
- package/Server/Services/WorkspaceNotificationSummaryService.ts +12 -3
- package/Server/Types/Database/Permissions/CreatePermission.ts +17 -3
- package/Server/Types/Database/Permissions/EditionPermission.ts +140 -38
- package/Server/Types/Database/Permissions/OwnerTableRegistry.ts +16 -0
- package/Server/Types/Database/Permissions/TablePermission.ts +3 -3
- package/Server/Types/Database/Permissions/UpdatePermission.ts +20 -6
- package/Server/Utils/AI/Chat/AgentContextCompactor.ts +200 -0
- package/Server/Utils/AI/Chat/ChatAgentRunner.ts +307 -48
- package/Server/Utils/AI/Chat/ChatRunCancellation.ts +156 -0
- package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +78 -18
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +1 -1
- package/Server/Utils/AI/Chat/ToolOutputPager.ts +322 -0
- package/Server/Utils/AI/ClusterAccess/KubectlInvestigationToolkit.ts +88 -30
- package/Server/Utils/AI/ClusterAccess/KubectlJobRunner.ts +13 -1
- package/Server/Utils/AI/CodeFix/CodeFixReadiness.ts +0 -32
- package/Server/Utils/AI/CodeFix/FixRunBudget.ts +27 -25
- package/Server/Utils/AI/Remediation/RemediationCommandTools.ts +7 -1
- package/Server/Utils/AI/Remediation/RemediationExecutionRunner.ts +34 -14
- package/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.ts +69 -24
- package/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.ts +9 -0
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +53 -10
- package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +27 -10
- package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +27 -10
- package/Server/Utils/AI/SRE/InvestigationQueue.ts +16 -19
- package/Server/Utils/AI/SRE/InvestigationThread.ts +646 -0
- package/Server/Utils/AI/SRE/InvestigationThreadService.ts +715 -0
- package/Server/Utils/AI/Toolbox/Serializer.ts +10 -3
- package/Server/Utils/EditionEnforcement.ts +19 -202
- package/Server/Utils/LLM/LLMService.ts +259 -63
- package/Server/Utils/RelaxedScimTeamLocksReport.ts +245 -0
- package/Server/Utils/Rules/RuleRun/RuleRunRegistry.ts +25 -0
- package/Server/Utils/SameOriginRequest.ts +203 -0
- package/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.ts +2 -0
- package/Server/Utils/Telemetry/EntityRegistry.ts +4 -1
- package/Server/Utils/Telemetry/MessageQueueDiscovery.ts +1402 -0
- package/Server/Utils/Telemetry/ResourceEntityFilter.ts +4 -1
- package/Server/Utils/VendorAssets.ts +3 -3
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +3 -1
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +3 -1
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +10 -1
- package/Tests/App/Accounts/IncidentFormPage.test.tsx +2036 -0
- package/Tests/App/Accounts/IncidentFormServerMessages.test.ts +119 -0
- package/Tests/App/Accounts/IncidentFormUtils.test.ts +1157 -0
- package/Tests/App/Accounts/LoginPasskey.test.tsx +6 -4
- package/Tests/App/Accounts/LoginSso.test.tsx +724 -0
- package/Tests/App/AdminDashboard/AdminAuthenticationRequireSso.test.tsx +338 -0
- package/Tests/App/AdminDashboard/AdminAuthenticationSsoCardLocales.test.tsx +331 -0
- package/Tests/App/AdminDashboard/AdminEnterprisePluginPage.test.tsx +47 -33
- package/Tests/App/AdminDashboard/GlobalSsoOidcPages.test.tsx +1021 -0
- package/Tests/App/Dashboard/AffectedResourcesDisplay.test.tsx +876 -78
- package/Tests/App/Dashboard/AffectedResourcesSlo.test.tsx +20 -3
- package/Tests/App/Dashboard/CephProxmoxVMwareDocumentationCards.test.tsx +359 -0
- package/Tests/App/Dashboard/CephSetupGuide.test.ts +961 -0
- package/Tests/App/Dashboard/CloudDocumentationCard.test.tsx +381 -95
- package/Tests/App/Dashboard/CloudSetupGuide.test.ts +1463 -0
- package/Tests/App/Dashboard/ClusterAccessNotice.test.tsx +174 -12
- package/Tests/App/Dashboard/ContainerSetupGuideCards.test.tsx +345 -0
- package/Tests/App/Dashboard/CoreListEmptyStates.test.tsx +501 -0
- package/Tests/App/Dashboard/DashboardLazyPages.test.tsx +0 -1
- package/Tests/App/Dashboard/DatabaseDocumentationCard.test.tsx +400 -0
- package/Tests/App/Dashboard/DatabaseDocumentationMarkdown.test.ts +5 -0
- package/Tests/App/Dashboard/DatabaseSetupGuide.test.ts +1869 -0
- package/Tests/App/Dashboard/DatabaseTelemetryScope.test.ts +44 -0
- package/Tests/App/Dashboard/DatabaseTelemetryTabs.test.tsx +50 -9
- package/Tests/App/Dashboard/DockerSetupGuide.test.ts +899 -0
- package/Tests/App/Dashboard/DockerSwarmSetupGuide.test.ts +964 -0
- package/Tests/App/Dashboard/EnterpriseFeatureUpgrade.test.tsx +141 -7
- package/Tests/App/Dashboard/EnterprisePluginPage.test.tsx +52 -39
- package/Tests/App/Dashboard/EventOverviewPages.test.tsx +7 -1
- package/Tests/App/Dashboard/GettingStartedTaskRoutes.test.tsx +331 -0
- package/Tests/App/Dashboard/HomeOverviewStatsFirstRun.test.tsx +925 -0
- package/Tests/App/Dashboard/HostDocumentationCard.test.tsx +225 -0
- package/Tests/App/Dashboard/HostSetupGuide.test.ts +1183 -0
- package/Tests/App/Dashboard/IdentityEnterpriseShells.test.tsx +69 -45
- package/Tests/App/Dashboard/IncidentCreateTemplateCustomFieldSettings.test.tsx +745 -0
- package/Tests/App/Dashboard/IncidentCreateTemplateOwners.test.tsx +414 -0
- package/Tests/App/Dashboard/IncidentCustomFieldCreateSettingsForm.test.ts +1042 -0
- package/Tests/App/Dashboard/IncidentCustomFieldSettingsCard.test.tsx +1816 -0
- package/Tests/App/Dashboard/IncidentFormPlan.test.ts +89 -0
- package/Tests/App/Dashboard/IncidentFormShareLinkCard.test.tsx +846 -0
- package/Tests/App/Dashboard/IncidentFormsPages.test.tsx +1324 -0
- package/Tests/App/Dashboard/IncidentTemplateCustomFieldSettings.test.tsx +630 -0
- package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +13 -0
- package/Tests/App/Dashboard/IncomingEmailMonitorLinkVerifyHint.test.tsx +104 -0
- package/Tests/App/Dashboard/InvestigationConversation.test.tsx +1107 -0
- package/Tests/App/Dashboard/InvestigationConversationData.test.ts +546 -0
- package/Tests/App/Dashboard/InvestigationEvidenceList.test.tsx +170 -5
- package/Tests/App/Dashboard/InvestigationNotStarted.test.tsx +207 -2
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +729 -34
- package/Tests/App/Dashboard/InvestigationPanelStatus.test.tsx +9 -21
- package/Tests/App/Dashboard/InvestigationReportView.test.tsx +274 -37
- package/Tests/App/Dashboard/InvestigationStatusBadge.test.tsx +130 -0
- package/Tests/App/Dashboard/IoTDocumentationCard.test.tsx +218 -0
- package/Tests/App/Dashboard/IoTSetupGuide.test.ts +1124 -0
- package/Tests/App/Dashboard/KubernetesClusterAiAccessSettings.test.ts +20 -6
- package/Tests/App/Dashboard/KubernetesClusterAiDocumentationMarkdown.test.ts +107 -83
- package/Tests/App/Dashboard/KubernetesSetupGuide.test.ts +787 -0
- package/Tests/App/Dashboard/MessageQueueBreadcrumbs.test.tsx +228 -0
- package/Tests/App/Dashboard/MessageQueueBrokerHealth.test.tsx +1538 -0
- package/Tests/App/Dashboard/MessageQueueBrokerHealthMetricChart.test.tsx +969 -0
- package/Tests/App/Dashboard/MessageQueueBrokerHealthReads.test.ts +889 -0
- package/Tests/App/Dashboard/MessageQueueBrokerMetricsReach.test.ts +236 -0
- package/Tests/App/Dashboard/MessageQueueDocumentationCard.test.tsx +479 -0
- package/Tests/App/Dashboard/MessageQueueListPages.test.tsx +1232 -0
- package/Tests/App/Dashboard/MessageQueueMetricDescriptions.test.ts +244 -0
- package/Tests/App/Dashboard/MessageQueueMonitorLink.test.ts +952 -0
- package/Tests/App/Dashboard/MessageQueueMonitorLinkMonitorCreate.test.tsx +859 -0
- package/Tests/App/Dashboard/MessageQueueOverview.test.tsx +1773 -0
- package/Tests/App/Dashboard/MessageQueueOverviewPresentation.test.ts +196 -0
- package/Tests/App/Dashboard/MessageQueuePresentation.test.ts +799 -0
- package/Tests/App/Dashboard/MessageQueueProducersConsumers.test.tsx +680 -0
- package/Tests/App/Dashboard/MessageQueueRoutes.test.tsx +383 -0
- package/Tests/App/Dashboard/MessageQueueRulePages.test.tsx +278 -0
- package/Tests/App/Dashboard/MessageQueueSetupGuide.test.ts +2778 -0
- package/Tests/App/Dashboard/MessageQueueSideMenus.test.tsx +273 -0
- package/Tests/App/Dashboard/MessageQueueSpanPopulations.test.ts +930 -0
- package/Tests/App/Dashboard/MessageQueueSpanStore.ts +351 -0
- package/Tests/App/Dashboard/MessageQueueTelemetryScope.test.ts +375 -0
- package/Tests/App/Dashboard/MessageQueueTelemetryScopeTabs.test.tsx +668 -0
- package/Tests/App/Dashboard/MessageQueueViewPages.test.tsx +685 -0
- package/Tests/App/Dashboard/MonitorAndHomeNotOperationalMenus.test.tsx +342 -0
- package/Tests/App/Dashboard/MonitorCreateFirstRunDefaults.test.tsx +623 -0
- package/Tests/App/Dashboard/MonitorCreateFromMonitorBackedDevice.test.tsx +442 -0
- package/Tests/App/Dashboard/MonitorLogsPageViewSummary.test.tsx +814 -0
- package/Tests/App/Dashboard/MonitorSetupCardBodies.test.tsx +246 -0
- package/Tests/App/Dashboard/NavigationSearchKeywords.test.tsx +8 -0
- package/Tests/App/Dashboard/OnboardingSsoEmptyState.test.tsx +27 -12
- package/Tests/App/Dashboard/PlanGatedPage.test.tsx +292 -0
- package/Tests/App/Dashboard/PodmanSetupGuide.test.ts +948 -0
- package/Tests/App/Dashboard/ProductOrientation.test.tsx +5 -4
- package/Tests/App/Dashboard/ProductSettingsSectionCollapsed.test.tsx +266 -0
- package/Tests/App/Dashboard/ProxmoxSetupGuide.test.ts +1318 -0
- package/Tests/App/Dashboard/ResourceAiAgentAttentionServerParity.test.ts +555 -0
- package/Tests/App/Dashboard/ResourceAiAgentPage.test.tsx +298 -9
- package/Tests/App/Dashboard/ResourceAiAgentStatus.test.ts +453 -0
- package/Tests/App/Dashboard/ResourceArchiveSettings.test.tsx +16 -0
- package/Tests/App/Dashboard/ResourceConnectionGuideCard.test.tsx +444 -0
- package/Tests/App/Dashboard/ResourceConnectionGuideOverviewsInfra.test.tsx +798 -0
- package/Tests/App/Dashboard/ResourceConnectionGuideOverviewsPlatforms.test.tsx +717 -0
- package/Tests/App/Dashboard/ResourceConnectionGuides.test.ts +981 -0
- package/Tests/App/Dashboard/ResourceConnectionState.test.ts +132 -0
- package/Tests/App/Dashboard/RumDocumentationCard.test.tsx +293 -0
- package/Tests/App/Dashboard/RumSessionReplayRetentionSettings.test.tsx +467 -0
- package/Tests/App/Dashboard/RumSetupGuide.test.ts +758 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceOverviewPage.test.tsx +25 -0
- package/Tests/App/Dashboard/ServerlessDocumentationCard.test.tsx +254 -0
- package/Tests/App/Dashboard/ServerlessSetupGuide.test.ts +1074 -0
- package/Tests/App/Dashboard/SetupGuide.test.ts +246 -0
- package/Tests/App/Dashboard/SetupGuideCard.test.tsx +756 -0
- package/Tests/App/Dashboard/SloListSideMenu.test.tsx +120 -0
- package/Tests/App/Dashboard/SsoPages.test.tsx +833 -0
- package/Tests/App/Dashboard/TelemetryDocumentation.test.tsx +253 -0
- package/Tests/App/Dashboard/TelemetryRetentionShells.test.tsx +730 -0
- package/Tests/App/Dashboard/VMwareSetupGuide.test.ts +1033 -0
- package/Tests/App/StatusPage/StatusPageSsoEmptyState.test.tsx +87 -7
- package/Tests/Models/DatabaseModels/DatabaseServerModels.test.ts +28 -9
- package/Tests/Models/DatabaseModels/IncidentFormModel.test.ts +1250 -0
- package/Tests/Models/DatabaseModels/MessageQueueModels.test.ts +1983 -0
- package/Tests/Models/DatabaseModels/StaticRuleCriteriaInheritance.test.ts +4 -2
- package/Tests/Models/DatabaseModels/TeamComplianceSettingModel.test.ts +190 -14
- package/Tests/Models/IncidentTemplateCustomFieldSettingsColumn.test.ts +291 -0
- package/Tests/Server/API/AIInvestigationConversationAPI.test.ts +412 -0
- package/Tests/Server/API/GlobalConfigLicense.test.ts +38 -9
- package/Tests/Server/API/IncidentFormAPI.test.ts +942 -0
- package/Tests/Server/API/IncidentFormPublicRoutes.test.ts +1653 -0
- package/Tests/Server/API/KubernetesClusterAiAccessAPI.test.ts +2 -1
- package/Tests/Server/API/{SsoProviderListingsEdition.test.ts → SsoProviderListings.test.ts} +164 -110
- package/Tests/Server/Enterprise/EnterpriseEdition.test.ts +76 -54
- package/Tests/Server/Enterprise/EnterpriseFeatureActive.test.ts +125 -42
- package/Tests/Server/Enterprise/EnterpriseLicenseSnapshot.test.ts +36 -10
- package/Tests/Server/Enterprise/EnterpriseModelFeatureMap.test.ts +51 -9
- package/Tests/Server/Enterprise/FakeEnterpriseModule.ts +13 -8
- package/Tests/Server/Enterprise/SsoInCommunityEdition.test.ts +540 -0
- package/Tests/Server/Infrastructure/Postgres/AddConfigurableRuleCriteriaMigration.test.ts +3 -0
- package/Tests/Server/Infrastructure/Postgres/AddIncidentFormsMigration.test.ts +438 -0
- package/Tests/Server/Infrastructure/Postgres/AddTeamComplianceRuleNotificationChannelsMigration.test.ts +255 -0
- package/Tests/Server/Infrastructure/Postgres/MessageQueueTablesMigration.test.ts +637 -0
- package/Tests/Server/Middleware/IncidentFormRateLimit.test.ts +1630 -0
- package/Tests/Server/Middleware/UserAuthorization.test.ts +16 -17
- package/Tests/Server/Middleware/UserAuthorizationSsoEnforcement.test.ts +544 -0
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +37 -8
- package/Tests/Server/Services/IncidentCreatedFeedTitle.test.ts +212 -0
- package/Tests/Server/Services/IncidentCustomFieldDeleteFormQuestions.test.ts +297 -0
- package/Tests/Server/Services/IncidentFormOwnersCreatedNotification.test.ts +497 -0
- package/Tests/Server/Services/IncidentFormPostgres.test.ts +958 -0
- package/Tests/Server/Services/IncidentFormPublicForm.test.ts +1260 -0
- package/Tests/Server/Services/IncidentFormPublicSubmission.test.ts +2520 -0
- package/Tests/Server/Services/IncidentFormRegistration.test.ts +159 -0
- package/Tests/Server/Services/IncidentFormService.test.ts +663 -0
- package/Tests/Server/Services/IncidentFormSubmissionService.test.ts +430 -0
- package/Tests/Server/Services/IncidentFormSubmissionTemplateBranch.test.ts +473 -0
- package/Tests/Server/Services/IncidentGroupingTemplateSubstitution.test.ts +81 -0
- package/Tests/Server/Services/IncidentTemplateCustomFieldSettings.test.ts +262 -0
- package/Tests/Server/Services/IncidentTemplateOwnersOnDeclare.test.ts +566 -0
- package/Tests/Server/Services/IncidentTitleMarkdownSinks.test.ts +640 -0
- package/Tests/Server/Services/LlmLogServiceTokenAggregateParams.test.ts +3 -3
- package/Tests/Server/Services/MessageQueueOwnerServices.test.ts +440 -0
- package/Tests/Server/Services/MessageQueueRegistries.test.ts +577 -0
- package/Tests/Server/Services/MessageQueueRuleEngines.test.ts +900 -0
- package/Tests/Server/Services/MessageQueueService.test.ts +2210 -0
- package/Tests/Server/Services/MessageQueueSqlPostgres.test.ts +1271 -0
- package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +28 -1
- package/Tests/Server/Services/OpenTelemetryRetentionOverrideEdition.test.ts +474 -0
- package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +21 -0
- package/Tests/Server/Services/OwnerRowUniqueness.test.ts +3 -0
- package/Tests/Server/Services/ProjectServiceAuditLogLicense.test.ts +0 -1
- package/Tests/Server/Services/RuleRun/LabelRuleEnginesGroupBRun.test.ts +56 -6
- package/Tests/Server/Services/RuleRun/OwnerRuleEnginesGroupBRun.test.ts +30 -1
- package/Tests/Server/Services/SsoRequirementReads.test.ts +454 -0
- package/Tests/Server/Services/SsoRequirementWrites.test.ts +529 -0
- package/Tests/Server/Services/StaticRuleCriteriaRuntimeCoverage.test.ts +3 -3
- package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +107 -89
- package/Tests/Server/Services/TeamComplianceSettingPostgres.test.ts +1068 -176
- package/Tests/Server/Services/TeamComplianceSettingService.test.ts +1962 -200
- package/Tests/Server/Types/Database/Permissions/EditionPermission.test.ts +654 -297
- package/Tests/Server/Types/Database/Permissions/RetentionOverrideColumns.test.ts +784 -0
- package/Tests/Server/Types/Database/Permissions/SsoScalePlanGate.test.ts +418 -0
- package/Tests/Server/Utils/AI/AIAlertGating.test.ts +0 -1
- package/Tests/Server/Utils/AI/AIInvestigationEngineRunLimits.test.ts +136 -0
- package/Tests/Server/Utils/AI/AIInvestigationQueue.test.ts +15 -14
- package/Tests/Server/Utils/AI/AgentContextCompactor.test.ts +351 -0
- package/Tests/Server/Utils/AI/ChatAgentRunnerSharedThread.test.ts +842 -0
- package/Tests/Server/Utils/AI/ChatRunCancellation.test.ts +195 -0
- package/Tests/Server/Utils/AI/CodeFixReadiness.test.ts +10 -57
- package/Tests/Server/Utils/AI/FixRunBudget.test.ts +20 -24
- package/Tests/Server/Utils/AI/Insights/InvestigationQueueInsightSubject.test.ts +7 -30
- package/Tests/Server/Utils/AI/InvestigationClusterAccessWiring.test.ts +225 -29
- package/Tests/Server/Utils/AI/InvestigationInfrastructureAccessWiring.test.ts +266 -25
- package/Tests/Server/Utils/AI/InvestigationThread.test.ts +580 -0
- package/Tests/Server/Utils/AI/InvestigationThreadService.test.ts +801 -0
- package/Tests/Server/Utils/AI/KubectlInvestigationToolkit.test.ts +525 -43
- package/Tests/Server/Utils/AI/KubectlJobRunner.test.ts +4 -2
- package/Tests/Server/Utils/AI/LLMServiceUnreachableProvider.test.ts +435 -0
- package/Tests/Server/Utils/AI/ObservabilityAssistantLimits.test.ts +462 -0
- package/Tests/Server/Utils/AI/RemediationExecutionRunner.test.ts +14 -25
- package/Tests/Server/Utils/AI/RemediationExecutionRunnerResourceMode.test.ts +2 -0
- package/Tests/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.test.ts +297 -15
- package/Tests/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.test.ts +10 -6
- package/Tests/Server/Utils/AI/ToolOutputPager.test.ts +382 -0
- package/Tests/Server/Utils/AI/ToolResultSerializer.test.ts +23 -4
- package/Tests/Server/Utils/AI/Toolbox/LogTools.test.ts +25 -6
- package/Tests/Server/Utils/AI/Toolbox/Serializer.test.ts +14 -3
- package/Tests/Server/Utils/EditionEnforcement.test.ts +107 -147
- package/Tests/Server/Utils/{CommunityEditionSsoReport.test.ts → RelaxedScimTeamLocksReport.test.ts} +212 -208
- package/Tests/Server/Utils/SameOriginRequest.test.ts +372 -0
- package/Tests/Server/Utils/Telemetry/EntityRegistry.test.ts +20 -0
- package/Tests/Server/Utils/Telemetry/MessageQueueDiscovery.test.ts +2590 -0
- package/Tests/Server/Utils/Telemetry/MessageQueueSpanQueryTwin.ts +246 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +23 -0
- package/Tests/Types/AI/AIAgentRunLimits.test.ts +255 -0
- package/Tests/Types/Code/JsonSyntax.test.ts +1300 -0
- package/Tests/Types/CustomField/CustomFieldCreateSettings.test.ts +1113 -0
- package/Tests/Types/CustomField/CustomFieldMappingCatalog.test.ts +91 -0
- package/Tests/Types/CustomField/CustomFieldValueValidator.test.ts +30 -0
- package/Tests/Types/Incident/IncidentFormIpAllowlist.test.ts +227 -0
- package/Tests/Types/Incident/IncidentFormPublic.test.ts +1916 -0
- package/Tests/Types/MessageQueue/MessageQueueEntityKey.test.ts +916 -0
- package/Tests/Types/MessageQueue/MessageQueueIdentity.test.ts +567 -0
- package/Tests/Types/MessageQueue/MessageQueueManualIdentity.test.ts +686 -0
- package/Tests/Types/MessageQueue/MessageQueueMetricCatalog.test.ts +1726 -0
- package/Tests/Types/MessageQueue/MessageQueueMetricResolution.test.ts +1758 -0
- package/Tests/Types/MessageQueue/MessagingInstrumentationFixtures.test.ts +4686 -0
- package/Tests/Types/MessageQueue/MessagingSystem.test.ts +840 -0
- package/Tests/Types/MessageQueue/MessagingTelemetryFixtures.ts +3287 -0
- package/Tests/Types/MessageQueue/MessagingTelemetryResolver.test.ts +2966 -0
- package/Tests/Types/Monitor/MessageQueueAlertTemplates.test.ts +5401 -0
- package/Tests/Types/Monitor/MetricEngineFold.ts +154 -0
- package/Tests/Types/ResourceAiAgent/ResourceAiAccess.test.ts +5 -3
- package/Tests/Types/Team/ComplianceRule.test.ts +588 -37
- package/Tests/Types/Team/TeamComplianceStatus.test.ts +64 -11
- package/Tests/Types/XML.test.ts +51 -0
- package/Tests/UI/Components/CodeEditor/CodeEditor.test.tsx +2362 -0
- package/Tests/UI/Components/CodeEditor/CodeEditorCommands.test.ts +810 -0
- package/Tests/UI/Components/CodeEditor/CodeEditorHighlight.test.ts +338 -0
- package/Tests/UI/Components/CodeEditor/CodeEditorLanguages.test.ts +222 -0
- package/Tests/UI/Components/CodeEditor/CodeEditorStyles.test.ts +807 -0
- package/Tests/UI/Components/CodeEditor/NoMonaco.test.ts +245 -0
- package/Tests/UI/Components/CodeEditor/YamlEditor.test.tsx +729 -0
- package/Tests/UI/Components/CopyTextButton.test.tsx +76 -0
- package/Tests/UI/Components/EditionLabelLapseCopy.ts +51 -14
- package/Tests/UI/Components/EditionLabelLicenseStatus.test.tsx +131 -23
- package/Tests/UI/Components/ErrorMessageAction.test.tsx +142 -0
- package/Tests/UI/Components/FacetSidebarInScope.test.tsx +459 -0
- package/Tests/UI/Components/FacetValuesInScope.test.ts +270 -0
- package/Tests/UI/Components/Forms/FormFieldCodeEditors.test.tsx +294 -0
- package/Tests/UI/Components/Forms/FormFieldMarkdown.test.tsx +126 -0
- package/Tests/UI/Components/Forms/FormFieldYaml.test.tsx +22 -75
- package/Tests/UI/Components/Forms/ModelFormOnBeforeCreateMiscData.test.tsx +254 -0
- package/Tests/UI/Components/Icon.test.tsx +32 -0
- package/Tests/UI/Components/Input.test.tsx +31 -0
- package/Tests/UI/Components/LockedFilterChipScope.test.tsx +501 -0
- package/Tests/UI/Components/MarkdownConverters.test.ts +253 -1
- package/Tests/UI/Components/MarkdownEditor.test.tsx +2785 -2
- package/Tests/UI/Components/MarkdownEditorHistory.test.ts +243 -0
- package/Tests/UI/Components/MarkdownListEditing.test.ts +1118 -0
- package/Tests/UI/Components/MarkdownPaste.test.ts +1180 -0
- package/Tests/UI/Components/MarkdownViewerCopy.test.tsx +466 -0
- package/Tests/UI/Components/MarkdownVisualEditing.test.ts +1089 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableEmptyStateAction.test.tsx +623 -0
- package/Tests/UI/Components/ResetObjectID.test.tsx +282 -0
- package/Tests/UI/Components/RuleCriteria/RuleCriteriaModelTable.test.tsx +3 -3
- package/Tests/UI/Components/Table/EmptyTableMessage.test.ts +439 -0
- package/Tests/UI/Components/Table/TableEmptyState.test.tsx +352 -0
- package/Tests/UI/Components/TableRowMobileTitles.test.tsx +78 -0
- package/Tests/UI/Components/TextArea.test.tsx +19 -0
- package/Tests/UI/Components/Workflow/ModelColumnEditor.render.test.tsx +12 -29
- package/Tests/UI/Components/fixtures/MarkdownPasteFixtures.ts +460 -0
- package/Tests/UI/EsbuildConfig.test.ts +115 -39
- package/Tests/UI/EsbuildEnterpriseAlias.test.ts +4 -4
- package/Tests/UI/Monitor/MonitorLogSummaryRender.test.tsx +377 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +81 -1
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +17 -0
- package/Tests/Utils/LabelRuleImportExport.test.ts +5 -0
- package/Tests/Utils/Markdown/DashboardMarkdownRenderer.ts +81 -0
- package/Tests/Utils/Markdown/UntrustedMarkdown.test.ts +1339 -0
- package/Tests/Utils/Monitor/MonitorLogSummaryUtil.test.ts +862 -0
- package/Types/AI/AIAgentRunLimits.ts +146 -0
- package/Types/Code/CodeType.ts +2 -0
- package/Types/Code/JsonSyntax.ts +923 -0
- package/Types/CustomField/CustomFieldCreateSettings.ts +549 -0
- package/Types/CustomField/CustomFieldMappingCatalog.ts +77 -0
- package/Types/CustomField/CustomFieldValueValidator.ts +10 -7
- package/Types/EnterpriseLicense/EnterpriseLicensePeriods.ts +1 -1
- package/Types/Icon/IconProp.ts +2 -0
- package/Types/Incident/IncidentFormIpAllowlist.ts +206 -0
- package/Types/Incident/IncidentFormPublic.ts +1145 -0
- package/Types/Kubernetes/KubernetesClusterAiAccess.ts +10 -3
- package/Types/MessageQueue/MessageQueueIdentity.ts +256 -0
- package/Types/MessageQueue/MessageQueueManualIdentity.ts +325 -0
- package/Types/MessageQueue/MessageQueueMetricCatalog.ts +1357 -0
- package/Types/MessageQueue/MessagingSystem.ts +518 -0
- package/Types/MessageQueue/MessagingTelemetryResolver.ts +2311 -0
- package/Types/Monitor/MessageQueueAlertTemplates.ts +2128 -0
- package/Types/Permission.ts +310 -0
- package/Types/ResourceAiAgent/ResourceAiAccess.ts +10 -4
- package/Types/Rules/RuleCriteriaFieldRegistry.ts +12 -0
- package/Types/Rules/RuleRun.ts +4 -0
- package/Types/Team/ComplianceNotificationChannel.ts +4 -3
- package/Types/Team/ComplianceRule.ts +71 -18
- package/Types/Team/ComplianceRuleType.ts +2 -2
- package/Types/Team/TeamComplianceStatus.ts +6 -2
- package/Types/Telemetry/EntityType.ts +16 -0
- package/Types/Telemetry/LockedFilterDetail.ts +22 -0
- package/Types/XML.ts +26 -0
- package/UI/Components/CodeEditor/CodeEditor.css +379 -0
- package/UI/Components/CodeEditor/CodeEditor.tsx +1128 -294
- package/UI/Components/CodeEditor/CodeEditorCommands.ts +774 -0
- package/UI/Components/CodeEditor/CodeEditorHighlight.ts +106 -0
- package/UI/Components/CodeEditor/CodeEditorLanguages.ts +164 -0
- package/UI/Components/CodeEditor/YamlEditor.tsx +28 -326
- package/UI/Components/CopyTextButton/CopyTextButton.tsx +5 -1
- package/UI/Components/CustomFields/CustomFieldModelFormFields.tsx +6 -25
- package/UI/Components/EditionLabel/EditionLabel.tsx +14 -13
- package/UI/Components/ErrorMessage/ErrorMessage.tsx +11 -1
- package/UI/Components/Forms/Fields/FormField.tsx +8 -0
- package/UI/Components/Forms/Types/Field.ts +8 -0
- package/UI/Components/Icon/Icon.tsx +18 -0
- package/UI/Components/Input/Input.tsx +11 -4
- package/UI/Components/LogsViewer/LogsViewer.tsx +4 -0
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +21 -3
- package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
- package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +877 -79
- package/UI/Components/Markdown.tsx/MarkdownEditorHistory.ts +284 -0
- package/UI/Components/Markdown.tsx/MarkdownListEditing.ts +1362 -0
- package/UI/Components/Markdown.tsx/MarkdownPaste.ts +1326 -0
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +106 -10
- package/UI/Components/Markdown.tsx/MarkdownVisualEditing.ts +1032 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +85 -7
- package/UI/Components/ResetObjectID/ResetObjectID.tsx +35 -9
- package/UI/Components/Table/EmptyTableMessage.ts +81 -0
- package/UI/Components/Table/Table.tsx +50 -21
- package/UI/Components/Table/TableRow.tsx +9 -1
- package/UI/Components/TelemetryViewer/FacetVisibility.ts +97 -2
- package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +13 -0
- package/UI/Components/TelemetryViewer/components/LockedFilterChip.tsx +214 -7
- package/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.tsx +21 -3
- package/UI/Components/TextArea/TextArea.tsx +9 -2
- package/UI/Components/Workflow/ModelFieldPicker.tsx +10 -12
- package/UI/Styles/Theme.css +8 -0
- package/UI/esbuild-config.js +2 -32
- package/Utils/LabelRuleImportExport.ts +2 -0
- package/Utils/Markdown/UntrustedMarkdown.ts +1513 -0
- package/Utils/Monitor/IncomingEmailMonitorRequestUtil.ts +41 -0
- package/Utils/Monitor/MonitorLogSummaryUtil.ts +212 -0
- package/Utils/Telemetry/EntityKey.ts +48 -0
- package/build/dist/Models/DatabaseModels/AIConversation.js +125 -1
- package/build/dist/Models/DatabaseModels/AIConversation.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephCluster.js +12 -0
- package/build/dist/Models/DatabaseModels/CephCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CloudResource.js +12 -0
- package/build/dist/Models/DatabaseModels/CloudResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DatabaseServer.js +12 -0
- package/build/dist/Models/DatabaseModels/DatabaseServer.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHost.js +12 -0
- package/build/dist/Models/DatabaseModels/DockerHost.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js +12 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalOidc.js +0 -4
- package/build/dist/Models/DatabaseModels/GlobalOidc.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalOidcProject.js +0 -4
- package/build/dist/Models/DatabaseModels/GlobalOidcProject.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalSso.js +0 -4
- package/build/dist/Models/DatabaseModels/GlobalSso.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalSsoProject.js +0 -4
- package/build/dist/Models/DatabaseModels/GlobalSsoProject.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Host.js +12 -0
- package/build/dist/Models/DatabaseModels/Host.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentForm.js +605 -0
- package/build/dist/Models/DatabaseModels/IncidentForm.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentFormSubmission.js +299 -0
- package/build/dist/Models/DatabaseModels/IncidentFormSubmission.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +60 -0
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +14 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IoTFleet.js +12 -0
- package/build/dist/Models/DatabaseModels/IoTFleet.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js +12 -0
- package/build/dist/Models/DatabaseModels/KubernetesCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MessageQueue.js +1106 -0
- package/build/dist/Models/DatabaseModels/MessageQueue.js.map +1 -0
- package/build/dist/Models/DatabaseModels/MessageQueueLabelRule.js +562 -0
- package/build/dist/Models/DatabaseModels/MessageQueueLabelRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/MessageQueueOwnerRule.js +643 -0
- package/build/dist/Models/DatabaseModels/MessageQueueOwnerRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/MessageQueueOwnerTeam.js +506 -0
- package/build/dist/Models/DatabaseModels/MessageQueueOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/MessageQueueOwnerUser.js +505 -0
- package/build/dist/Models/DatabaseModels/MessageQueueOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/PodmanHost.js +12 -0
- package/build/dist/Models/DatabaseModels/PodmanHost.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +61 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectOidc.js +0 -4
- package/build/dist/Models/DatabaseModels/ProjectOidc.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectSso.js +0 -4
- package/build/dist/Models/DatabaseModels/ProjectSso.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js +12 -0
- package/build/dist/Models/DatabaseModels/ProxmoxCluster.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RumApplication.js +12 -0
- package/build/dist/Models/DatabaseModels/RumApplication.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServerlessFunction.js +12 -0
- package/build/dist/Models/DatabaseModels/ServerlessFunction.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +12 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOidc.js +0 -4
- package/build/dist/Models/DatabaseModels/StatusPageOidc.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageSso.js +0 -4
- package/build/dist/Models/DatabaseModels/StatusPageSso.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamComplianceSetting.js +49 -3
- package/build/dist/Models/DatabaseModels/TeamComplianceSetting.js.map +1 -1
- package/build/dist/Models/DatabaseModels/VMwareVCenter.js +12 -0
- package/build/dist/Models/DatabaseModels/VMwareVCenter.js.map +1 -1
- package/build/dist/Server/API/AIChatAPI.js +9 -103
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationAPI.js +3 -3
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationConversationAPI.js +162 -0
- package/build/dist/Server/API/AIInvestigationConversationAPI.js.map +1 -0
- package/build/dist/Server/API/IncidentFormAPI.js +245 -0
- package/build/dist/Server/API/IncidentFormAPI.js.map +1 -0
- package/build/dist/Server/API/ProjectOIDC.js +16 -24
- package/build/dist/Server/API/ProjectOIDC.js.map +1 -1
- package/build/dist/Server/API/ProjectSSO.js +16 -24
- package/build/dist/Server/API/ProjectSSO.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +42 -75
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/Enterprise/EnterpriseEdition.js +79 -25
- package/build/dist/Server/Enterprise/EnterpriseEdition.js.map +1 -1
- package/build/dist/Server/Enterprise/EnterpriseFeature.js +24 -3
- package/build/dist/Server/Enterprise/EnterpriseFeature.js.map +1 -1
- package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js +1 -1
- package/build/dist/Server/Enterprise/EnterpriseServerModule.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796400000000-AddIncidentForms.js +63 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796400000000-AddIncidentForms.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796500000000-AddTeamComplianceRuleNotificationChannels.js +41 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796500000000-AddTeamComplianceRuleNotificationChannels.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796600000000-AddAIInvestigationConversationAndTimeLimits.js +40 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796600000000-AddAIInvestigationConversationAndTimeLimits.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796700000000-AddMessageQueueTables.js +183 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1796700000000-AddMessageQueueTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/IncidentFormRateLimit.js +559 -0
- package/build/dist/Server/Middleware/IncidentFormRateLimit.js.map +1 -0
- package/build/dist/Server/Middleware/UserAuthorization.js +11 -30
- package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +10 -13
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/IncidentCustomFieldService.js +83 -0
- package/build/dist/Server/Services/IncidentCustomFieldService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeMemberService.js +8 -4
- package/build/dist/Server/Services/IncidentEpisodeMemberService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeService.js +10 -1
- package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
- package/build/dist/Server/Services/IncidentFormService.js +1202 -0
- package/build/dist/Server/Services/IncidentFormService.js.map +1 -0
- package/build/dist/Server/Services/IncidentFormSubmissionService.js +91 -0
- package/build/dist/Server/Services/IncidentFormSubmissionService.js.map +1 -0
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +20 -8
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +106 -4
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentTemplateService.js +18 -0
- package/build/dist/Server/Services/IncidentTemplateService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +14 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MessageQueueLabelRuleEngineService.js +262 -0
- package/build/dist/Server/Services/MessageQueueLabelRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/MessageQueueLabelRuleService.js +13 -0
- package/build/dist/Server/Services/MessageQueueLabelRuleService.js.map +1 -0
- package/build/dist/Server/Services/MessageQueueOwnerRuleEngineService.js +334 -0
- package/build/dist/Server/Services/MessageQueueOwnerRuleEngineService.js.map +1 -0
- package/build/dist/Server/Services/MessageQueueOwnerRuleService.js +13 -0
- package/build/dist/Server/Services/MessageQueueOwnerRuleService.js.map +1 -0
- package/build/dist/Server/Services/MessageQueueOwnerTeamService.js +62 -0
- package/build/dist/Server/Services/MessageQueueOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/MessageQueueOwnerUserService.js +62 -0
- package/build/dist/Server/Services/MessageQueueOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/MessageQueueService.js +1140 -0
- package/build/dist/Server/Services/MessageQueueService.js.map +1 -0
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +25 -4
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +0 -54
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +1 -4
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +0 -46
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TeamComplianceSettingService.js +120 -31
- package/build/dist/Server/Services/TeamComplianceSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleService.js +8 -1
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js +12 -3
- package/build/dist/Server/Services/WorkspaceNotificationSummaryService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +6 -3
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/EditionPermission.js +109 -37
- package/build/dist/Server/Types/Database/Permissions/EditionPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js +16 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerTableRegistry.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TablePermission.js +3 -3
- package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js +9 -6
- package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/AgentContextCompactor.js +128 -0
- package/build/dist/Server/Utils/AI/Chat/AgentContextCompactor.js.map +1 -0
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +192 -50
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ChatRunCancellation.js +133 -0
- package/build/dist/Server/Utils/AI/Chat/ChatRunCancellation.js.map +1 -0
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +53 -13
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +1 -1
- package/build/dist/Server/Utils/AI/Chat/ToolOutputPager.js +206 -0
- package/build/dist/Server/Utils/AI/Chat/ToolOutputPager.js.map +1 -0
- package/build/dist/Server/Utils/AI/ClusterAccess/KubectlInvestigationToolkit.js +53 -26
- package/build/dist/Server/Utils/AI/ClusterAccess/KubectlInvestigationToolkit.js.map +1 -1
- package/build/dist/Server/Utils/AI/ClusterAccess/KubectlJobRunner.js +4 -2
- package/build/dist/Server/Utils/AI/ClusterAccess/KubectlJobRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js +1 -29
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixReadiness.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +24 -24
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js +7 -2
- package/build/dist/Server/Utils/AI/Remediation/RemediationCommandTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js +29 -14
- package/build/dist/Server/Utils/AI/Remediation/RemediationExecutionRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.js +38 -14
- package/build/dist/Server/Utils/AI/ResourceAccess/InfrastructureInvestigationToolkit.js.map +1 -1
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.js +2 -0
- package/build/dist/Server/Utils/AI/ResourceAccess/ResourceCommandJobRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +40 -10
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +19 -7
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +19 -7
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js +15 -18
- package/build/dist/Server/Utils/AI/SRE/InvestigationQueue.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationThread.js +412 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationThread.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationThreadService.js +495 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationThreadService.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/Serializer.js +10 -3
- package/build/dist/Server/Utils/AI/Toolbox/Serializer.js.map +1 -1
- package/build/dist/Server/Utils/EditionEnforcement.js +20 -158
- package/build/dist/Server/Utils/EditionEnforcement.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +193 -54
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/RelaxedScimTeamLocksReport.js +160 -0
- package/build/dist/Server/Utils/RelaxedScimTeamLocksReport.js.map +1 -0
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js +25 -0
- package/build/dist/Server/Utils/Rules/RuleRun/RuleRunRegistry.js.map +1 -1
- package/build/dist/Server/Utils/SameOriginRequest.js +151 -0
- package/build/dist/Server/Utils/SameOriginRequest.js.map +1 -0
- package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js +2 -0
- package/build/dist/Server/Utils/TeamMember/ProjectLeaveResourceCleanup.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +4 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/MessageQueueDiscovery.js +1015 -0
- package/build/dist/Server/Utils/Telemetry/MessageQueueDiscovery.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +4 -1
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -1
- package/build/dist/Server/Utils/VendorAssets.js +3 -3
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +3 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +3 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +10 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/AI/AIAgentRunLimits.js +91 -0
- package/build/dist/Types/AI/AIAgentRunLimits.js.map +1 -0
- package/build/dist/Types/Code/CodeType.js +2 -0
- package/build/dist/Types/Code/CodeType.js.map +1 -1
- package/build/dist/Types/Code/JsonSyntax.js +604 -0
- package/build/dist/Types/Code/JsonSyntax.js.map +1 -0
- package/build/dist/Types/CustomField/CustomFieldCreateSettings.js +310 -0
- package/build/dist/Types/CustomField/CustomFieldCreateSettings.js.map +1 -0
- package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js +38 -0
- package/build/dist/Types/CustomField/CustomFieldMappingCatalog.js.map +1 -1
- package/build/dist/Types/CustomField/CustomFieldValueValidator.js +10 -7
- package/build/dist/Types/CustomField/CustomFieldValueValidator.js.map +1 -1
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js +1 -1
- package/build/dist/Types/Icon/IconProp.js +2 -0
- package/build/dist/Types/Icon/IconProp.js.map +1 -1
- package/build/dist/Types/Incident/IncidentFormIpAllowlist.js +119 -0
- package/build/dist/Types/Incident/IncidentFormIpAllowlist.js.map +1 -0
- package/build/dist/Types/Incident/IncidentFormPublic.js +678 -0
- package/build/dist/Types/Incident/IncidentFormPublic.js.map +1 -0
- package/build/dist/Types/Kubernetes/KubernetesClusterAiAccess.js +10 -3
- package/build/dist/Types/Kubernetes/KubernetesClusterAiAccess.js.map +1 -1
- package/build/dist/Types/MessageQueue/MessageQueueIdentity.js +184 -0
- package/build/dist/Types/MessageQueue/MessageQueueIdentity.js.map +1 -0
- package/build/dist/Types/MessageQueue/MessageQueueManualIdentity.js +190 -0
- package/build/dist/Types/MessageQueue/MessageQueueManualIdentity.js.map +1 -0
- package/build/dist/Types/MessageQueue/MessageQueueMetricCatalog.js +1057 -0
- package/build/dist/Types/MessageQueue/MessageQueueMetricCatalog.js.map +1 -0
- package/build/dist/Types/MessageQueue/MessagingSystem.js +394 -0
- package/build/dist/Types/MessageQueue/MessagingSystem.js.map +1 -0
- package/build/dist/Types/MessageQueue/MessagingTelemetryResolver.js +1768 -0
- package/build/dist/Types/MessageQueue/MessagingTelemetryResolver.js.map +1 -0
- package/build/dist/Types/Monitor/MessageQueueAlertTemplates.js +1207 -0
- package/build/dist/Types/Monitor/MessageQueueAlertTemplates.js.map +1 -0
- package/build/dist/Types/Permission.js +274 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js +10 -4
- package/build/dist/Types/ResourceAiAgent/ResourceAiAccess.js.map +1 -1
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js +12 -0
- package/build/dist/Types/Rules/RuleCriteriaFieldRegistry.js.map +1 -1
- package/build/dist/Types/Rules/RuleRun.js +4 -0
- package/build/dist/Types/Rules/RuleRun.js.map +1 -1
- package/build/dist/Types/Team/ComplianceNotificationChannel.js +4 -3
- package/build/dist/Types/Team/ComplianceNotificationChannel.js.map +1 -1
- package/build/dist/Types/Team/ComplianceRule.js +48 -14
- package/build/dist/Types/Team/ComplianceRule.js.map +1 -1
- package/build/dist/Types/Team/ComplianceRuleType.js +2 -2
- package/build/dist/Types/Telemetry/EntityType.js +16 -0
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/XML.js +23 -0
- package/build/dist/Types/XML.js.map +1 -1
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js +641 -266
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
- package/build/dist/UI/Components/CodeEditor/CodeEditorCommands.js +464 -0
- package/build/dist/UI/Components/CodeEditor/CodeEditorCommands.js.map +1 -0
- package/build/dist/UI/Components/CodeEditor/CodeEditorHighlight.js +69 -0
- package/build/dist/UI/Components/CodeEditor/CodeEditorHighlight.js.map +1 -0
- package/build/dist/UI/Components/CodeEditor/CodeEditorLanguages.js +108 -0
- package/build/dist/UI/Components/CodeEditor/CodeEditorLanguages.js.map +1 -0
- package/build/dist/UI/Components/CodeEditor/YamlEditor.js +14 -186
- package/build/dist/UI/Components/CodeEditor/YamlEditor.js.map +1 -1
- package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js +5 -1
- package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldModelFormFields.js +5 -14
- package/build/dist/UI/Components/CustomFields/CustomFieldModelFormFields.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +14 -13
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js +1 -1
- package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +8 -3
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +8 -0
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +11 -3
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +2 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +14 -4
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +710 -65
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditorHistory.js +238 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditorHistory.js.map +1 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownListEditing.js +1028 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownListEditing.js.map +1 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownPaste.js +1088 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownPaste.js.map +1 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +70 -10
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownVisualEditing.js +887 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownVisualEditing.js.map +1 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +57 -6
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ResetObjectID/ResetObjectID.js +7 -5
- package/build/dist/UI/Components/ResetObjectID/ResetObjectID.js.map +1 -1
- package/build/dist/UI/Components/Table/EmptyTableMessage.js +51 -0
- package/build/dist/UI/Components/Table/EmptyTableMessage.js.map +1 -0
- package/build/dist/UI/Components/Table/Table.js +30 -11
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Table/TableRow.js +9 -2
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/FacetVisibility.js +63 -1
- package/build/dist/UI/Components/TelemetryViewer/FacetVisibility.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +4 -2
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterChip.js +91 -10
- package/build/dist/UI/Components/TelemetryViewer/components/LockedFilterChip.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js +14 -4
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/TextArea/TextArea.js +9 -3
- package/build/dist/UI/Components/TextArea/TextArea.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ModelFieldPicker.js +1 -2
- package/build/dist/UI/Components/Workflow/ModelFieldPicker.js.map +1 -1
- package/build/dist/Utils/LabelRuleImportExport.js +2 -0
- package/build/dist/Utils/LabelRuleImportExport.js.map +1 -1
- package/build/dist/Utils/Markdown/UntrustedMarkdown.js +988 -0
- package/build/dist/Utils/Markdown/UntrustedMarkdown.js.map +1 -0
- package/build/dist/Utils/Monitor/IncomingEmailMonitorRequestUtil.js +34 -0
- package/build/dist/Utils/Monitor/IncomingEmailMonitorRequestUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorLogSummaryUtil.js +148 -0
- package/build/dist/Utils/Monitor/MonitorLogSummaryUtil.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityKey.js +36 -0
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- package/package.json +1 -3
- package/Server/Utils/CommunityEditionSsoReport.ts +0 -361
- package/Tests/App/Accounts/LoginSsoEdition.test.tsx +0 -616
- package/Tests/App/AdminDashboard/AdminAuthenticationSsoEdition.test.tsx +0 -217
- package/Tests/App/AdminDashboard/GlobalSSOEnterpriseShells.test.tsx +0 -271
- package/Tests/App/Dashboard/CloudDocumentationMarkdown.test.ts +0 -215
- package/Tests/App/Dashboard/TelemetryResourceRetentionSettings.test.tsx +0 -784
- package/Tests/Server/Middleware/UserAuthorizationEditionEnforcement.test.ts +0 -518
- package/Tests/Server/Services/SsoRequirementReadMasking.test.ts +0 -419
- package/Tests/Server/Services/SsoRequirementWriteGuard.test.ts +0 -769
- package/Tests/UI/Components/CodeEditor.test.tsx +0 -638
- package/Tests/UI/Components/MonacoLoader.test.ts +0 -67
- package/Tests/UI/Components/MonacoRuntime.test.ts +0 -121
- package/Tests/UI/Components/Telemetry/TelemetryRetentionConfigForm.test.tsx +0 -329
- package/Tests/UI/Components/YamlEditor.test.tsx +0 -847
- package/UI/Components/CodeEditor/MonacoLoader.ts +0 -36
- package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +0 -319
- package/UI/Components/Telemetry/TelemetryRetentionConfigSummary.tsx +0 -223
- package/build/dist/Server/Utils/CommunityEditionSsoReport.js +0 -223
- package/build/dist/Server/Utils/CommunityEditionSsoReport.js.map +0 -1
- package/build/dist/UI/Components/CodeEditor/MonacoLoader.js +0 -34
- package/build/dist/UI/Components/CodeEditor/MonacoLoader.js.map +0 -1
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js +0 -171
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +0 -1
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigSummary.js +0 -119
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigSummary.js.map +0 -1
package/Tests/Server/Utils/{CommunityEditionSsoReport.test.ts → RelaxedScimTeamLocksReport.test.ts}
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
} from "../../../Server/Utils/
|
|
1
|
+
import RelaxedScimTeamLocksReport, {
|
|
2
|
+
MAX_IDS_LISTED,
|
|
3
|
+
RelaxedScimTeamLocksSummary,
|
|
4
|
+
} from "../../../Server/Utils/RelaxedScimTeamLocksReport";
|
|
5
5
|
import EnterpriseEdition from "../../../Server/Enterprise/EnterpriseEdition";
|
|
6
6
|
import EnterpriseFeature from "../../../Server/Enterprise/EnterpriseFeature";
|
|
7
7
|
import {
|
|
@@ -15,9 +15,7 @@ import StatusPageService from "../../../Server/Services/StatusPageService";
|
|
|
15
15
|
import logger from "../../../Server/Utils/Logger";
|
|
16
16
|
import ObjectID from "../../../Types/ObjectID";
|
|
17
17
|
import PositiveNumber from "../../../Types/PositiveNumber";
|
|
18
|
-
import Project from "../../../Models/DatabaseModels/Project";
|
|
19
18
|
import ProjectSCIM from "../../../Models/DatabaseModels/ProjectSCIM";
|
|
20
|
-
import StatusPage from "../../../Models/DatabaseModels/StatusPage";
|
|
21
19
|
import FakeEnterpriseModule, {
|
|
22
20
|
createLicenseSnapshot,
|
|
23
21
|
createLicenseSnapshotWithStatus,
|
|
@@ -53,19 +51,24 @@ jest.mock("../../../Server/EnvironmentConfig", () => {
|
|
|
53
51
|
|
|
54
52
|
/*
|
|
55
53
|
* Moving an install from the Enterprise image to the Community one keeps its
|
|
56
|
-
* database, so
|
|
57
|
-
* the Community Edition relaxes
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* activated. Neither may happen
|
|
54
|
+
* database, so a SCIM configuration with Push Groups on still says so - and
|
|
55
|
+
* the Community Edition relaxes its team locks (it has no SCIM endpoint, so
|
|
56
|
+
* the identity provider that owns those teams cannot reach it). The same
|
|
57
|
+
* happens on an Enterprise install whose license stops covering SCIM: the
|
|
58
|
+
* locks are relaxed until a license is activated. Neither may happen
|
|
59
|
+
* silently:
|
|
61
60
|
*
|
|
62
|
-
* - a Community Edition process logs, once at boot, which
|
|
63
|
-
*
|
|
61
|
+
* - a Community Edition process logs, once at boot, which locks it is not
|
|
62
|
+
* enforcing;
|
|
64
63
|
* - an Enterprise process watches the license and logs the same report
|
|
65
|
-
* each time
|
|
66
|
-
* included), naming only what stopped.
|
|
64
|
+
* each time SCIM stops (a license already lapsed at boot included).
|
|
67
65
|
*
|
|
68
|
-
* It never throws, and it reads nothing while the license covers
|
|
66
|
+
* It never throws, and it reads nothing while the license covers SCIM.
|
|
67
|
+
*
|
|
68
|
+
* Single sign-on is not part of the report: it is part of the Community
|
|
69
|
+
* Edition, and a configured "Require SSO for login" is enforced in every
|
|
70
|
+
* edition, so there is nothing relaxed to report. The report never reads the
|
|
71
|
+
* SSO requirement columns.
|
|
69
72
|
*/
|
|
70
73
|
|
|
71
74
|
const LAPSE_REPORT_PREFIX: string = "OneUptime Enterprise license lapsed:";
|
|
@@ -83,21 +86,6 @@ const PROJECT_A: ObjectID = new ObjectID(
|
|
|
83
86
|
const PROJECT_B: ObjectID = new ObjectID(
|
|
84
87
|
"12222222-2222-4222-8222-222222222222",
|
|
85
88
|
);
|
|
86
|
-
const STATUS_PAGE_A: ObjectID = new ObjectID(
|
|
87
|
-
"77777777-7777-4777-8777-777777777777",
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
const project: (id: ObjectID) => Project = (id: ObjectID): Project => {
|
|
91
|
-
const model: Project = new Project();
|
|
92
|
-
model._id = id.toString();
|
|
93
|
-
return model;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
const statusPage: (id: ObjectID) => StatusPage = (id: ObjectID): StatusPage => {
|
|
97
|
-
const model: StatusPage = new StatusPage();
|
|
98
|
-
model._id = id.toString();
|
|
99
|
-
return model;
|
|
100
|
-
};
|
|
101
89
|
|
|
102
90
|
const scim: (projectId: ObjectID) => ProjectSCIM = (
|
|
103
91
|
projectId: ObjectID,
|
|
@@ -107,34 +95,64 @@ const scim: (projectId: ObjectID) => ProjectSCIM = (
|
|
|
107
95
|
return model;
|
|
108
96
|
};
|
|
109
97
|
|
|
98
|
+
let scimCount: SpyInstance;
|
|
99
|
+
let scimFind: SpyInstance;
|
|
110
100
|
let instanceRequiresSso: SpyInstance;
|
|
111
101
|
let projectCount: SpyInstance;
|
|
112
102
|
let projectFind: SpyInstance;
|
|
113
103
|
let statusPageCount: SpyInstance;
|
|
114
104
|
let statusPageFind: SpyInstance;
|
|
115
|
-
let scimCount: SpyInstance;
|
|
116
|
-
let scimFind: SpyInstance;
|
|
117
105
|
let warn: SpyInstance;
|
|
118
106
|
let error: SpyInstance;
|
|
119
107
|
|
|
120
|
-
const
|
|
121
|
-
return [
|
|
122
|
-
instanceRequiresSso,
|
|
123
|
-
projectCount,
|
|
124
|
-
projectFind,
|
|
125
|
-
statusPageCount,
|
|
126
|
-
statusPageFind,
|
|
127
|
-
scimCount,
|
|
128
|
-
scimFind,
|
|
129
|
-
];
|
|
108
|
+
const scimQuerySpies: () => Array<SpyInstance> = (): Array<SpyInstance> => {
|
|
109
|
+
return [scimCount, scimFind];
|
|
130
110
|
};
|
|
131
111
|
|
|
132
|
-
|
|
112
|
+
// The SSO requirement reads the report used to make; it must make none.
|
|
113
|
+
const ssoRequirementSpies: () => Array<SpyInstance> =
|
|
114
|
+
(): Array<SpyInstance> => {
|
|
115
|
+
return [
|
|
116
|
+
instanceRequiresSso,
|
|
117
|
+
projectCount,
|
|
118
|
+
projectFind,
|
|
119
|
+
statusPageCount,
|
|
120
|
+
statusPageFind,
|
|
121
|
+
];
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const loggedWarnings: () => Array<string> = (): Array<string> => {
|
|
125
|
+
return warn.mock.calls
|
|
126
|
+
.map((call: Array<unknown>): unknown => {
|
|
127
|
+
return call[0];
|
|
128
|
+
})
|
|
129
|
+
.filter((message: unknown): message is string => {
|
|
130
|
+
return typeof message === "string";
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
const expectNoSingleSignOnWording: (message: string) => void = (
|
|
135
|
+
message: string,
|
|
136
|
+
): void => {
|
|
137
|
+
expect(message).not.toMatch(/\bSSO\b/);
|
|
138
|
+
expect(message).not.toMatch(/single sign-on/i);
|
|
139
|
+
expect(message).not.toContain("sign in with email and password");
|
|
140
|
+
expect(message).not.toContain("reset their password");
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
describe("RelaxedScimTeamLocksReport", () => {
|
|
133
144
|
beforeEach(() => {
|
|
134
145
|
setTestBillingEnabled(false);
|
|
135
146
|
uninstallEnterpriseModule();
|
|
136
|
-
|
|
147
|
+
RelaxedScimTeamLocksReport.resetForTests();
|
|
137
148
|
|
|
149
|
+
scimCount = getJestSpyOn(ProjectSCIMService, "countBy").mockResolvedValue(
|
|
150
|
+
new PositiveNumber(3),
|
|
151
|
+
);
|
|
152
|
+
scimFind = getJestSpyOn(ProjectSCIMService, "findBy").mockResolvedValue([
|
|
153
|
+
scim(PROJECT_A),
|
|
154
|
+
scim(PROJECT_B),
|
|
155
|
+
]);
|
|
138
156
|
instanceRequiresSso = getJestSpyOn(
|
|
139
157
|
GlobalConfigService,
|
|
140
158
|
"getRequireSsoForLogin",
|
|
@@ -142,10 +160,7 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
142
160
|
projectCount = getJestSpyOn(ProjectService, "countBy").mockResolvedValue(
|
|
143
161
|
new PositiveNumber(3),
|
|
144
162
|
);
|
|
145
|
-
projectFind = getJestSpyOn(ProjectService, "findBy").mockResolvedValue([
|
|
146
|
-
project(PROJECT_A),
|
|
147
|
-
project(PROJECT_B),
|
|
148
|
-
]);
|
|
163
|
+
projectFind = getJestSpyOn(ProjectService, "findBy").mockResolvedValue([]);
|
|
149
164
|
statusPageCount = getJestSpyOn(
|
|
150
165
|
StatusPageService,
|
|
151
166
|
"countBy",
|
|
@@ -153,13 +168,7 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
153
168
|
statusPageFind = getJestSpyOn(
|
|
154
169
|
StatusPageService,
|
|
155
170
|
"findBy",
|
|
156
|
-
).mockResolvedValue([
|
|
157
|
-
scimCount = getJestSpyOn(ProjectSCIMService, "countBy").mockResolvedValue(
|
|
158
|
-
new PositiveNumber(1),
|
|
159
|
-
);
|
|
160
|
-
scimFind = getJestSpyOn(ProjectSCIMService, "findBy").mockResolvedValue([
|
|
161
|
-
scim(PROJECT_B),
|
|
162
|
-
]);
|
|
171
|
+
).mockResolvedValue([]);
|
|
163
172
|
warn = getJestSpyOn(logger, "warn").mockImplementation((): void => {
|
|
164
173
|
return undefined;
|
|
165
174
|
});
|
|
@@ -171,22 +180,22 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
171
180
|
afterEach(() => {
|
|
172
181
|
uninstallEnterpriseModule();
|
|
173
182
|
setTestBillingEnabled(false);
|
|
174
|
-
|
|
183
|
+
RelaxedScimTeamLocksReport.resetForTests();
|
|
175
184
|
jest.restoreAllMocks();
|
|
176
185
|
});
|
|
177
186
|
|
|
178
187
|
test.each([false, true])(
|
|
179
|
-
"does nothing on the Enterprise Edition while the license covers
|
|
188
|
+
"does nothing on the Enterprise Edition while the license covers SCIM (billing=%p)",
|
|
180
189
|
async (billing: boolean) => {
|
|
181
190
|
setTestBillingEnabled(billing);
|
|
182
191
|
installFakeEnterpriseModule();
|
|
183
192
|
|
|
184
193
|
await expect(
|
|
185
|
-
|
|
194
|
+
RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce(),
|
|
186
195
|
).resolves.toBeNull();
|
|
187
196
|
await flush();
|
|
188
197
|
|
|
189
|
-
for (const spy of
|
|
198
|
+
for (const spy of [...scimQuerySpies(), ...ssoRequirementSpies()]) {
|
|
190
199
|
expect(spy).not.toHaveBeenCalled();
|
|
191
200
|
}
|
|
192
201
|
expect(warn).not.toHaveBeenCalled();
|
|
@@ -199,10 +208,10 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
199
208
|
snapshot: createLicenseSnapshotWithStatus("expired"),
|
|
200
209
|
});
|
|
201
210
|
|
|
202
|
-
await
|
|
211
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
203
212
|
await flush();
|
|
204
213
|
|
|
205
|
-
for (const spy of
|
|
214
|
+
for (const spy of [...scimQuerySpies(), ...ssoRequirementSpies()]) {
|
|
206
215
|
expect(spy).not.toHaveBeenCalled();
|
|
207
216
|
}
|
|
208
217
|
expect(warn).not.toHaveBeenCalled();
|
|
@@ -210,16 +219,9 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
210
219
|
|
|
211
220
|
describe("on an Enterprise install whose license lapses", () => {
|
|
212
221
|
const lapseReports: () => Array<string> = (): Array<string> => {
|
|
213
|
-
return
|
|
214
|
-
.
|
|
215
|
-
|
|
216
|
-
})
|
|
217
|
-
.filter((message: unknown): message is string => {
|
|
218
|
-
return (
|
|
219
|
-
typeof message === "string" &&
|
|
220
|
-
message.startsWith(LAPSE_REPORT_PREFIX)
|
|
221
|
-
);
|
|
222
|
-
});
|
|
222
|
+
return loggedWarnings().filter((message: string): boolean => {
|
|
223
|
+
return message.startsWith(LAPSE_REPORT_PREFIX);
|
|
224
|
+
});
|
|
223
225
|
};
|
|
224
226
|
|
|
225
227
|
test("a license already lapsed at boot is reported at boot, once", async () => {
|
|
@@ -228,14 +230,14 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
228
230
|
});
|
|
229
231
|
|
|
230
232
|
await expect(
|
|
231
|
-
|
|
233
|
+
RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce(),
|
|
232
234
|
).resolves.toBeNull();
|
|
233
|
-
await
|
|
235
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
234
236
|
await flush();
|
|
235
237
|
|
|
236
238
|
// Later checks by requests see no new change, so no new report.
|
|
237
|
-
EnterpriseEdition.isFeatureActive(EnterpriseFeature.SSO);
|
|
238
239
|
EnterpriseEdition.isFeatureActive(EnterpriseFeature.SCIM);
|
|
240
|
+
EnterpriseEdition.isFeatureActive(EnterpriseFeature.AuditLogs);
|
|
239
241
|
await flush();
|
|
240
242
|
|
|
241
243
|
expect(lapseReports()).toHaveLength(1);
|
|
@@ -243,53 +245,56 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
243
245
|
const message: string = lapseReports()[0]!;
|
|
244
246
|
|
|
245
247
|
expect(message).toContain(
|
|
246
|
-
"because
|
|
247
|
-
);
|
|
248
|
-
expect(message).toContain('"Require SSO for Login"');
|
|
249
|
-
expect(message).toContain(
|
|
250
|
-
`3 project(s) that require SSO for login (ids: ${PROJECT_A.toString()}, ${PROJECT_B.toString()} and 1 more)`,
|
|
248
|
+
"because SCIM provisioning has stopped until a license that includes it is activated",
|
|
251
249
|
);
|
|
252
250
|
expect(message).toContain(
|
|
253
|
-
`
|
|
251
|
+
`3 SCIM configuration(s) with Push Groups on, whose teams can be edited in OneUptime again (project ids: ${PROJECT_A.toString()}, ${PROJECT_B.toString()} and 1 more)`,
|
|
254
252
|
);
|
|
255
|
-
expect(message).toContain("reset their password");
|
|
256
253
|
expect(message).toContain("without a restart");
|
|
257
254
|
expect(message).not.toContain("Community Edition");
|
|
255
|
+
expectNoSingleSignOnWording(message);
|
|
256
|
+
|
|
257
|
+
for (const spy of ssoRequirementSpies()) {
|
|
258
|
+
expect(spy).not.toHaveBeenCalled();
|
|
259
|
+
}
|
|
258
260
|
});
|
|
259
261
|
|
|
260
262
|
test("a lapse at runtime is reported when it is first noticed, and again after a renewal and a new lapse", async () => {
|
|
261
263
|
const fake: FakeEnterpriseModule = installFakeEnterpriseModule();
|
|
262
264
|
|
|
263
|
-
await
|
|
265
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
264
266
|
await flush();
|
|
265
267
|
expect(lapseReports()).toHaveLength(0);
|
|
266
268
|
|
|
267
269
|
fake.setSnapshot(createLicenseSnapshotWithStatus("missing"));
|
|
268
|
-
// A request asks, e.g.
|
|
269
|
-
EnterpriseEdition.isFeatureActive(EnterpriseFeature.
|
|
270
|
-
EnterpriseEdition.isFeatureActive(EnterpriseFeature.
|
|
270
|
+
// A request asks, e.g. TeamService through EditionEnforcement.
|
|
271
|
+
EnterpriseEdition.isFeatureActive(EnterpriseFeature.SCIM);
|
|
272
|
+
EnterpriseEdition.isFeatureActive(EnterpriseFeature.SCIM);
|
|
271
273
|
await flush();
|
|
272
274
|
expect(lapseReports()).toHaveLength(1);
|
|
273
275
|
|
|
274
276
|
fake.setSnapshot(createLicenseSnapshotWithStatus("valid"));
|
|
275
|
-
EnterpriseEdition.isFeatureActive(EnterpriseFeature.
|
|
277
|
+
EnterpriseEdition.isFeatureActive(EnterpriseFeature.SCIM);
|
|
276
278
|
await flush();
|
|
277
279
|
expect(lapseReports()).toHaveLength(1);
|
|
278
280
|
|
|
279
281
|
fake.setSnapshot(createLicenseSnapshotWithStatus("invalid"));
|
|
280
|
-
EnterpriseEdition.isFeatureActive(EnterpriseFeature.
|
|
282
|
+
EnterpriseEdition.isFeatureActive(EnterpriseFeature.AuditLogs);
|
|
281
283
|
await flush();
|
|
282
284
|
expect(lapseReports()).toHaveLength(2);
|
|
283
285
|
});
|
|
284
286
|
|
|
285
|
-
test("a license without SCIM reports the SCIM locks
|
|
287
|
+
test("a license without SCIM reports the SCIM locks", async () => {
|
|
286
288
|
installFakeEnterpriseModule({
|
|
287
289
|
snapshot: createLicenseSnapshot({
|
|
288
|
-
features: [
|
|
290
|
+
features: [
|
|
291
|
+
EnterpriseFeature.AuditLogs,
|
|
292
|
+
EnterpriseFeature.TeamCompliance,
|
|
293
|
+
],
|
|
289
294
|
}),
|
|
290
295
|
});
|
|
291
296
|
|
|
292
|
-
await
|
|
297
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
293
298
|
await flush();
|
|
294
299
|
|
|
295
300
|
expect(lapseReports()).toHaveLength(1);
|
|
@@ -298,41 +303,53 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
298
303
|
|
|
299
304
|
expect(message).toContain("because SCIM provisioning has stopped");
|
|
300
305
|
expect(message).toContain("SCIM configuration(s) with Push Groups on");
|
|
301
|
-
|
|
302
|
-
expect(message).not.toContain("Require SSO for Login");
|
|
303
|
-
expect(message).not.toContain("sign in with email and password");
|
|
306
|
+
expectNoSingleSignOnWording(message);
|
|
304
307
|
});
|
|
305
308
|
|
|
306
309
|
test("a lapse of audit logging alone reads nothing and reports nothing", async () => {
|
|
307
310
|
installFakeEnterpriseModule({
|
|
308
311
|
snapshot: createLicenseSnapshot({
|
|
309
|
-
features: [EnterpriseFeature.
|
|
312
|
+
features: [EnterpriseFeature.SCIM],
|
|
310
313
|
}),
|
|
311
314
|
});
|
|
312
315
|
|
|
313
|
-
await
|
|
316
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
314
317
|
EnterpriseEdition.isFeatureActive(EnterpriseFeature.AuditLogs);
|
|
315
318
|
await flush();
|
|
316
319
|
|
|
317
|
-
for (const spy of
|
|
320
|
+
for (const spy of [...scimQuerySpies(), ...ssoRequirementSpies()]) {
|
|
318
321
|
expect(spy).not.toHaveBeenCalled();
|
|
319
322
|
}
|
|
320
323
|
expect(lapseReports()).toHaveLength(0);
|
|
321
324
|
});
|
|
322
325
|
|
|
326
|
+
test("a lapse with no SCIM Push Groups configured reports nothing", async () => {
|
|
327
|
+
scimCount.mockResolvedValue(new PositiveNumber(0));
|
|
328
|
+
scimFind.mockResolvedValue([]);
|
|
329
|
+
installFakeEnterpriseModule({
|
|
330
|
+
snapshot: createLicenseSnapshotWithStatus("expired"),
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
334
|
+
await flush();
|
|
335
|
+
|
|
336
|
+
expect(scimCount).toHaveBeenCalledTimes(1);
|
|
337
|
+
expect(lapseReports()).toHaveLength(0);
|
|
338
|
+
});
|
|
339
|
+
|
|
323
340
|
test("a failed check is logged, never thrown", async () => {
|
|
324
|
-
|
|
341
|
+
scimCount.mockRejectedValue(new Error("database unavailable"));
|
|
325
342
|
installFakeEnterpriseModule({
|
|
326
343
|
snapshot: createLicenseSnapshotWithStatus("expired"),
|
|
327
344
|
});
|
|
328
345
|
|
|
329
346
|
await expect(
|
|
330
|
-
|
|
347
|
+
RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce(),
|
|
331
348
|
).resolves.toBeNull();
|
|
332
349
|
await flush();
|
|
333
350
|
|
|
334
351
|
expect(error).toHaveBeenCalledWith(
|
|
335
|
-
"OneUptime Enterprise license lapsed: could not check which
|
|
352
|
+
"OneUptime Enterprise license lapsed: could not check which SCIM Push Groups team locks are no longer enforced.",
|
|
336
353
|
);
|
|
337
354
|
expect(lapseReports()).toHaveLength(0);
|
|
338
355
|
});
|
|
@@ -340,10 +357,10 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
340
357
|
test("an unknown license state is not a lapse", async () => {
|
|
341
358
|
installFakeEnterpriseModule({ snapshot: null });
|
|
342
359
|
|
|
343
|
-
await
|
|
360
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
344
361
|
await flush();
|
|
345
362
|
|
|
346
|
-
for (const spy of
|
|
363
|
+
for (const spy of scimQuerySpies()) {
|
|
347
364
|
expect(spy).not.toHaveBeenCalled();
|
|
348
365
|
}
|
|
349
366
|
expect(lapseReports()).toHaveLength(0);
|
|
@@ -361,34 +378,32 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
361
378
|
}),
|
|
362
379
|
});
|
|
363
380
|
|
|
364
|
-
await
|
|
381
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
365
382
|
await flush();
|
|
366
383
|
|
|
367
|
-
for (const spy of
|
|
384
|
+
for (const spy of scimQuerySpies()) {
|
|
368
385
|
expect(spy).not.toHaveBeenCalled();
|
|
369
386
|
}
|
|
370
387
|
expect(lapseReports()).toHaveLength(0);
|
|
371
388
|
|
|
372
389
|
fake.setSnapshot(createLicenseSnapshotWithStatus("missing"));
|
|
373
|
-
EnterpriseEdition.isFeatureActive(EnterpriseFeature.
|
|
390
|
+
EnterpriseEdition.isFeatureActive(EnterpriseFeature.SCIM);
|
|
374
391
|
await flush();
|
|
375
392
|
|
|
376
393
|
expect(lapseReports()).toHaveLength(1);
|
|
377
394
|
});
|
|
378
395
|
});
|
|
379
396
|
|
|
380
|
-
test("on the Community Edition, logs
|
|
381
|
-
const summary:
|
|
382
|
-
await
|
|
397
|
+
test("on the Community Edition, logs the relaxed SCIM locks once, with the count and ids", async () => {
|
|
398
|
+
const summary: RelaxedScimTeamLocksSummary | null =
|
|
399
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
383
400
|
|
|
384
401
|
expect(summary).toEqual({
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
scimConfigurationsWithPushGroups: 1,
|
|
391
|
-
projectIdsWithScimPushGroups: [PROJECT_B.toString()],
|
|
402
|
+
scimConfigurationsWithPushGroups: 3,
|
|
403
|
+
projectIdsWithScimPushGroups: [
|
|
404
|
+
PROJECT_A.toString(),
|
|
405
|
+
PROJECT_B.toString(),
|
|
406
|
+
],
|
|
392
407
|
});
|
|
393
408
|
|
|
394
409
|
expect(warn).toHaveBeenCalledTimes(1);
|
|
@@ -397,22 +412,15 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
397
412
|
|
|
398
413
|
expect(message).toContain("Community Edition");
|
|
399
414
|
expect(message).toContain("Enterprise Edition");
|
|
400
|
-
expect(message).toContain('"Require SSO for Login"');
|
|
401
|
-
expect(message).toContain(
|
|
402
|
-
`3 project(s) that require SSO for login (ids: ${PROJECT_A.toString()}, ${PROJECT_B.toString()} and 1 more)`,
|
|
403
|
-
);
|
|
404
415
|
expect(message).toContain(
|
|
405
|
-
`
|
|
406
|
-
);
|
|
407
|
-
expect(message).toContain(
|
|
408
|
-
`1 SCIM configuration(s) with Push Groups on, whose teams can be edited in OneUptime again (project ids: ${PROJECT_B.toString()})`,
|
|
416
|
+
`3 SCIM configuration(s) with Push Groups on, whose teams can be edited in OneUptime again (project ids: ${PROJECT_A.toString()}, ${PROJECT_B.toString()} and 1 more)`,
|
|
409
417
|
);
|
|
410
418
|
expect(message).toContain("kept unchanged");
|
|
411
419
|
/*
|
|
412
420
|
* Running the Enterprise image is not enough on its own: an Enterprise
|
|
413
421
|
* install enforces them only while its license (or trial, or grace)
|
|
414
|
-
* covers
|
|
415
|
-
*
|
|
422
|
+
* covers SCIM. The trial and the grace period are different lengths, and
|
|
423
|
+
* the message names each with its own.
|
|
416
424
|
*/
|
|
417
425
|
expect(message).toContain(
|
|
418
426
|
`enforced again when this server runs the Enterprise Edition image with a valid license (or during its ${ENTERPRISE_LICENSE_TRIAL_PERIOD_IN_DAYS}-day trial, or the ${ENTERPRISE_LICENSE_GRACE_PERIOD_IN_DAYS}-day grace period after a license expires)`,
|
|
@@ -420,146 +428,142 @@ describe("CommunityEditionSsoReport", () => {
|
|
|
420
428
|
expect(message).toContain("14-day trial");
|
|
421
429
|
expect(message).toContain("30-day grace period");
|
|
422
430
|
expect(message).not.toContain("14-day trial or grace period");
|
|
431
|
+
expectNoSingleSignOnWording(message);
|
|
423
432
|
});
|
|
424
433
|
|
|
425
|
-
test(
|
|
426
|
-
|
|
434
|
+
test.each([false, true])(
|
|
435
|
+
"on the Community Edition (billing=%p) it never reads the SSO requirements",
|
|
436
|
+
async (billing: boolean) => {
|
|
437
|
+
setTestBillingEnabled(billing);
|
|
427
438
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
439
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
440
|
+
|
|
441
|
+
for (const spy of ssoRequirementSpies()) {
|
|
442
|
+
expect(spy).not.toHaveBeenCalled();
|
|
443
|
+
}
|
|
444
|
+
},
|
|
445
|
+
);
|
|
446
|
+
|
|
447
|
+
test("reads the stored settings as root, with a bounded id list", async () => {
|
|
448
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
449
|
+
|
|
450
|
+
for (const spy of scimQuerySpies()) {
|
|
436
451
|
expect(spy).toHaveBeenCalledWith(
|
|
437
452
|
expect.objectContaining({ props: { isRoot: true } }),
|
|
438
453
|
);
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
expect(projectCount).toHaveBeenCalledWith(
|
|
442
|
-
expect.objectContaining({ query: { requireSsoForLogin: true } }),
|
|
443
|
-
);
|
|
444
|
-
expect(statusPageCount).toHaveBeenCalledWith(
|
|
445
|
-
expect.objectContaining({ query: { requireSsoForLogin: true } }),
|
|
446
|
-
);
|
|
447
|
-
expect(scimCount).toHaveBeenCalledWith(
|
|
448
|
-
expect.objectContaining({ query: { enablePushGroups: true } }),
|
|
449
|
-
);
|
|
450
|
-
|
|
451
|
-
for (const spy of [projectFind, statusPageFind, scimFind]) {
|
|
452
454
|
expect(spy).toHaveBeenCalledWith(
|
|
453
|
-
expect.objectContaining({
|
|
455
|
+
expect.objectContaining({ query: { enablePushGroups: true } }),
|
|
454
456
|
);
|
|
455
457
|
}
|
|
458
|
+
|
|
459
|
+
expect(scimFind).toHaveBeenCalledWith(
|
|
460
|
+
expect.objectContaining({ limit: MAX_IDS_LISTED }),
|
|
461
|
+
);
|
|
456
462
|
});
|
|
457
463
|
|
|
458
464
|
test("logs once per process", async () => {
|
|
459
|
-
await
|
|
465
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
460
466
|
|
|
461
467
|
await expect(
|
|
462
|
-
|
|
468
|
+
RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce(),
|
|
463
469
|
).resolves.toBeNull();
|
|
464
470
|
|
|
465
471
|
expect(warn).toHaveBeenCalledTimes(1);
|
|
466
|
-
expect(
|
|
472
|
+
expect(scimCount).toHaveBeenCalledTimes(1);
|
|
467
473
|
});
|
|
468
474
|
|
|
469
475
|
test("stays quiet when nothing is relaxed", async () => {
|
|
470
|
-
instanceRequiresSso.mockResolvedValue(false);
|
|
471
|
-
projectCount.mockResolvedValue(new PositiveNumber(0));
|
|
472
|
-
projectFind.mockResolvedValue([]);
|
|
473
|
-
statusPageCount.mockResolvedValue(new PositiveNumber(0));
|
|
474
|
-
statusPageFind.mockResolvedValue([]);
|
|
475
476
|
scimCount.mockResolvedValue(new PositiveNumber(0));
|
|
476
477
|
scimFind.mockResolvedValue([]);
|
|
477
478
|
|
|
478
|
-
const summary:
|
|
479
|
-
await
|
|
479
|
+
const summary: RelaxedScimTeamLocksSummary | null =
|
|
480
|
+
await RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce();
|
|
480
481
|
|
|
481
|
-
expect(summary
|
|
482
|
+
expect(summary).toEqual({
|
|
483
|
+
scimConfigurationsWithPushGroups: 0,
|
|
484
|
+
projectIdsWithScimPushGroups: [],
|
|
485
|
+
});
|
|
482
486
|
expect(warn).not.toHaveBeenCalled();
|
|
483
487
|
});
|
|
484
488
|
|
|
485
489
|
test("never throws: a failed check is logged and boot carries on", async () => {
|
|
486
|
-
|
|
490
|
+
scimFind.mockRejectedValue(new Error("database unavailable"));
|
|
487
491
|
|
|
488
492
|
await expect(
|
|
489
|
-
|
|
493
|
+
RelaxedScimTeamLocksReport.logRelaxedEnforcementOnce(),
|
|
490
494
|
).resolves.toBeNull();
|
|
491
495
|
|
|
492
|
-
expect(error).
|
|
496
|
+
expect(error).toHaveBeenCalledWith(
|
|
497
|
+
"Community Edition: could not check for SCIM Push Groups team locks left over from an Enterprise Edition install.",
|
|
498
|
+
);
|
|
493
499
|
expect(warn).not.toHaveBeenCalled();
|
|
494
500
|
});
|
|
495
501
|
|
|
496
502
|
describe("describe()", () => {
|
|
497
|
-
const empty:
|
|
498
|
-
instanceRequiresSso: false,
|
|
499
|
-
projectsRequiringSso: 0,
|
|
500
|
-
projectIdsRequiringSso: [],
|
|
501
|
-
statusPagesRequiringSso: 0,
|
|
502
|
-
statusPageIdsRequiringSso: [],
|
|
503
|
+
const empty: RelaxedScimTeamLocksSummary = {
|
|
503
504
|
scimConfigurationsWithPushGroups: 0,
|
|
504
505
|
projectIdsWithScimPushGroups: [],
|
|
505
506
|
};
|
|
506
507
|
|
|
507
|
-
test("returns null when nothing is relaxed", () => {
|
|
508
|
-
expect(
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
statusPageIdsRequiringSso: ["a", "b"],
|
|
516
|
-
});
|
|
517
|
-
|
|
518
|
-
expect(message).toContain(
|
|
519
|
-
"2 private status page(s) that require SSO for login (ids: a, b)",
|
|
520
|
-
);
|
|
521
|
-
expect(message).not.toContain("project(s) that require SSO");
|
|
522
|
-
expect(message).not.toContain("Require SSO for Login");
|
|
523
|
-
expect(message).not.toContain("SCIM configuration(s)");
|
|
508
|
+
test("returns null when nothing is relaxed, in either context", () => {
|
|
509
|
+
expect(RelaxedScimTeamLocksReport.describe(empty)).toBeNull();
|
|
510
|
+
expect(
|
|
511
|
+
RelaxedScimTeamLocksReport.describe(empty, {
|
|
512
|
+
reason: "lapsed-license",
|
|
513
|
+
isScimRelaxed: true,
|
|
514
|
+
}),
|
|
515
|
+
).toBeNull();
|
|
524
516
|
});
|
|
525
517
|
|
|
526
|
-
test("the lapsed-license wording names only
|
|
527
|
-
const summary:
|
|
528
|
-
...empty,
|
|
529
|
-
instanceRequiresSso: true,
|
|
518
|
+
test("the lapsed-license wording names SCIM, only when SCIM stopped", () => {
|
|
519
|
+
const summary: RelaxedScimTeamLocksSummary = {
|
|
530
520
|
scimConfigurationsWithPushGroups: 1,
|
|
531
521
|
projectIdsWithScimPushGroups: ["p"],
|
|
532
522
|
};
|
|
533
523
|
|
|
534
|
-
const
|
|
524
|
+
const lapsed: string | null = RelaxedScimTeamLocksReport.describe(
|
|
535
525
|
summary,
|
|
536
|
-
{ reason: "lapsed-license",
|
|
526
|
+
{ reason: "lapsed-license", isScimRelaxed: true },
|
|
537
527
|
);
|
|
538
528
|
|
|
539
|
-
expect(
|
|
540
|
-
expect(
|
|
541
|
-
expect(
|
|
542
|
-
|
|
529
|
+
expect(lapsed).toContain(LAPSE_REPORT_PREFIX);
|
|
530
|
+
expect(lapsed).toContain("because SCIM provisioning has stopped");
|
|
531
|
+
expect(lapsed).toContain(
|
|
532
|
+
"1 SCIM configuration(s) with Push Groups on, whose teams can be edited in OneUptime again (project ids: p)",
|
|
533
|
+
);
|
|
534
|
+
expectNoSingleSignOnWording(lapsed!);
|
|
543
535
|
|
|
544
536
|
expect(
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
isSsoRelaxed: false,
|
|
550
|
-
isScimRelaxed: true,
|
|
551
|
-
},
|
|
552
|
-
),
|
|
537
|
+
RelaxedScimTeamLocksReport.describe(summary, {
|
|
538
|
+
reason: "lapsed-license",
|
|
539
|
+
isScimRelaxed: false,
|
|
540
|
+
}),
|
|
553
541
|
).toBeNull();
|
|
554
542
|
});
|
|
555
543
|
|
|
544
|
+
test("the Community wording says SCIM is part of the Enterprise Edition", () => {
|
|
545
|
+
const message: string | null = RelaxedScimTeamLocksReport.describe({
|
|
546
|
+
scimConfigurationsWithPushGroups: 2,
|
|
547
|
+
projectIdsWithScimPushGroups: ["a", "b"],
|
|
548
|
+
});
|
|
549
|
+
|
|
550
|
+
expect(message).toContain(
|
|
551
|
+
"because SCIM provisioning is part of the OneUptime Enterprise Edition",
|
|
552
|
+
);
|
|
553
|
+
expect(message).toContain("(project ids: a, b)");
|
|
554
|
+
expect(message).not.toContain("and 0 more");
|
|
555
|
+
expectNoSingleSignOnWording(message!);
|
|
556
|
+
});
|
|
557
|
+
|
|
556
558
|
test("a count without ids still reads well", () => {
|
|
557
|
-
const message: string | null =
|
|
558
|
-
|
|
559
|
-
|
|
559
|
+
const message: string | null = RelaxedScimTeamLocksReport.describe({
|
|
560
|
+
scimConfigurationsWithPushGroups: 4,
|
|
561
|
+
projectIdsWithScimPushGroups: [],
|
|
560
562
|
});
|
|
561
563
|
|
|
562
|
-
expect(message).toContain(
|
|
564
|
+
expect(message).toContain(
|
|
565
|
+
"4 SCIM configuration(s) with Push Groups on, whose teams can be edited in OneUptime again.",
|
|
566
|
+
);
|
|
563
567
|
});
|
|
564
568
|
});
|
|
565
569
|
});
|