@oneuptime/common 12.0.8 → 12.0.9
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/AnalyticsModels/MetricItemAggMV1mByK8sCluster.ts +1 -1
- package/Models/AnalyticsModels/MetricItemAggMV1mByService.ts +1 -1
- package/Models/DatabaseModels/AIConversation.ts +32 -0
- package/Models/DatabaseModels/AIConversationMessage.ts +41 -0
- package/Models/DatabaseModels/AlertEpisodeMember.ts +27 -0
- package/Models/DatabaseModels/IncidentEpisodeMember.ts +28 -0
- package/Models/DatabaseModels/Index.ts +12 -4
- package/Models/DatabaseModels/{TelemetryEntity.ts → InventoryItem.ts} +139 -9
- package/Models/DatabaseModels/InventoryItemCustomField.ts +434 -0
- package/Models/DatabaseModels/{TelemetryEntityRelationship.ts → InventoryItemRelationship.ts} +8 -8
- package/Models/DatabaseModels/NetworkDevice.ts +141 -0
- package/Models/DatabaseModels/NetworkDeviceLink.ts +699 -0
- package/Models/DatabaseModels/NetworkDeviceLinkRule.ts +467 -0
- package/Models/DatabaseModels/NetworkTopologySuppression.ts +429 -0
- package/Models/DatabaseModels/OnCallDutyPolicyFeed.ts +9 -0
- package/Models/DatabaseModels/Project.ts +78 -0
- package/Models/DatabaseModels/UserCall.ts +42 -0
- package/Models/DatabaseModels/UserEmail.ts +44 -0
- package/Models/DatabaseModels/UserNotificationRule.ts +425 -55
- package/Models/DatabaseModels/UserOnCallLogTimeline.ts +24 -2
- package/Models/DatabaseModels/UserPush.ts +49 -0
- package/Models/DatabaseModels/UserSMS.ts +43 -0
- package/Models/DatabaseModels/UserTelegram.ts +59 -0
- package/Models/DatabaseModels/UserWebhook.ts +52 -0
- package/Models/DatabaseModels/UserWhatsApp.ts +41 -0
- package/Models/DatabaseModels/WorkflowVariable.ts +12 -0
- package/Server/API/AIChatAPI.ts +315 -1
- package/Server/API/DashboardAPI.ts +217 -1
- package/Server/API/OnCallReadinessAPI.ts +841 -0
- package/Server/API/TeamComplianceAPI.ts +69 -17
- package/Server/API/TelemetryAPI.ts +220 -12
- package/Server/EnvironmentConfig.ts +52 -0
- package/Server/Infrastructure/Postgres/DataSourceOptions.ts +22 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.ts +4 -4
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts +5 -5
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.ts +82 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.ts +91 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.ts +255 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.ts +107 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.ts +90 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.ts +39 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.ts +33 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.ts +59 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +20 -0
- package/Server/Infrastructure/Queue.ts +78 -13
- package/Server/Middleware/PublicDashboardRateLimit.ts +593 -0
- package/Server/Services/AIService.ts +7 -0
- package/Server/Services/AlertEpisodeStateTimelineService.ts +29 -0
- package/Server/Services/AlertSeverityService.ts +63 -0
- package/Server/Services/DashboardService.ts +9 -10
- package/Server/Services/DatabaseService.ts +32 -2
- package/Server/Services/IncidentEpisodeStateTimelineService.ts +29 -0
- package/Server/Services/IncidentSeverityService.ts +76 -0
- package/Server/Services/Index.ts +12 -4
- package/Server/Services/InventoryItemCustomFieldService.ts +9 -0
- package/Server/Services/{TelemetryEntityRelationshipService.ts → InventoryItemRelationshipService.ts} +4 -4
- package/Server/Services/{TelemetryEntityService.ts → InventoryItemService.ts} +89 -20
- package/Server/Services/LogAggregationService.ts +45 -8
- package/Server/Services/MetricAggregationService.ts +121 -0
- package/Server/Services/MetricService.ts +7 -7
- package/Server/Services/NetworkDeviceLinkRuleService.ts +10 -0
- package/Server/Services/NetworkDeviceLinkService.ts +84 -0
- package/Server/Services/NetworkDeviceService.ts +140 -0
- package/Server/Services/NetworkSiteService.ts +77 -25
- package/Server/Services/NetworkTopologySuppressionService.ts +84 -0
- package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +41 -29
- package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +8 -0
- package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +62 -13
- package/Server/Services/OnCallDutyPolicyScheduleService.ts +61 -1
- package/Server/Services/OnCallNotificationAlertingService.ts +742 -0
- package/Server/Services/OnCallReadinessService.ts +2803 -0
- package/Server/Services/OnCallSetupReminderService.ts +955 -0
- package/Server/Services/ProfileAggregationService.ts +123 -0
- package/Server/Services/StatusPageService.ts +9 -10
- package/Server/Services/TeamComplianceService.ts +429 -252
- package/Server/Services/UserCallService.ts +26 -1
- package/Server/Services/UserEmailService.ts +26 -1
- package/Server/Services/UserNotificationRuleAdminService.ts +1183 -0
- package/Server/Services/UserNotificationRuleService.ts +3812 -333
- package/Server/Services/UserOnCallLogService.ts +561 -48
- package/Server/Services/UserPushService.ts +29 -0
- package/Server/Services/UserService.ts +11 -0
- package/Server/Services/UserSmsService.ts +26 -1
- package/Server/Services/UserTelegramService.ts +24 -1
- package/Server/Services/UserWebhookService.ts +28 -1
- package/Server/Services/UserWhatsAppService.ts +24 -1
- package/Server/Types/Database/Permissions/BasePermission.ts +19 -0
- package/Server/Types/Database/Permissions/CreatePermission.ts +164 -0
- package/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.ts +340 -0
- package/Server/Types/Database/Permissions/QueryPermission.ts +48 -0
- package/Server/Types/Database/Permissions/TenantPermission.ts +8 -1
- package/Server/Types/Workflow/Components/API/Delete.ts +1 -1
- package/Server/Types/Workflow/Components/API/Get.ts +1 -1
- package/Server/Types/Workflow/Components/API/Patch.ts +1 -1
- package/Server/Types/Workflow/Components/API/Post.ts +1 -1
- package/Server/Types/Workflow/Components/API/Put.ts +1 -1
- package/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.ts +29 -5
- package/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.ts +18 -10
- package/Server/Types/Workflow/Components/BaseModel/ModelArguments.ts +55 -0
- package/Server/Types/Workflow/Components/Conditions/IfElse.ts +3 -17
- package/Server/Types/Workflow/Components/Email.ts +25 -7
- package/Server/Types/Workflow/Components/JavaScript.ts +10 -3
- package/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.ts +1 -1
- package/Server/Utils/AI/Chat/ChatAgentRunner.ts +643 -48
- package/Server/Utils/AI/Chat/ObservabilityAssistant.ts +32 -3
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +20 -6
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +7 -0
- package/Server/Utils/AI/Toolbox/AIActionTools.ts +2 -2
- package/Server/Utils/AI/Toolbox/AIMetaTools.ts +863 -0
- package/Server/Utils/AI/Toolbox/AlertTools.ts +177 -15
- package/Server/Utils/AI/Toolbox/IncidentTools.ts +191 -10
- package/Server/Utils/AI/Toolbox/Index.ts +48 -0
- package/Server/Utils/AI/Toolbox/MonitorTools.ts +298 -11
- package/Server/Utils/AI/Toolbox/NoteWriteTools.ts +295 -0
- package/Server/Utils/AI/Toolbox/OnCallTools.ts +1246 -0
- package/Server/Utils/AI/Toolbox/RunbookTools.ts +424 -0
- package/Server/Utils/AI/Toolbox/SloTools.ts +456 -0
- package/Server/Utils/AI/Toolbox/StatusPageTools.ts +559 -0
- package/Server/Utils/AI/Toolbox/TeamTools.ts +327 -0
- package/Server/Utils/AI/Toolbox/TimelineTools.ts +615 -0
- package/Server/Utils/AI/Toolbox/WorkflowProbeTools.ts +664 -0
- package/Server/Utils/ClientIp.ts +221 -0
- package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +47 -0
- package/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.ts +163 -0
- package/Server/Utils/Dashboard/PublicDashboardSloWidget.ts +147 -0
- package/Server/Utils/Express.ts +12 -17
- package/Server/Utils/LLM/LLMService.ts +85 -8
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +204 -10
- package/Server/Utils/SSRFProtection.ts +98 -23
- package/Server/Utils/StartServer.ts +12 -3
- package/Server/Utils/Telemetry/EntityRegistry.ts +205 -18
- package/Server/Utils/Telemetry/InventoryEntityRegistry.ts +25 -25
- package/Server/Utils/Telemetry/TelemetryEntity.ts +160 -52
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +7 -3
- package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +2146 -0
- package/Tests/App/Dashboard/CreateWorkflowModal.test.tsx +561 -0
- package/Tests/App/Dashboard/EscalationRuleReadiness.test.tsx +2470 -0
- package/Tests/App/Dashboard/OnCallPreventionGuards.test.tsx +1897 -0
- package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +3606 -0
- package/Tests/App/Dashboard/OnCallRulesDeleteGuard.test.tsx +784 -0
- package/Tests/App/Dashboard/OnCallRulesTable.test.tsx +1119 -0
- package/Tests/App/Dashboard/SloWidgetFetching.test.tsx +531 -0
- package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +1312 -0
- package/Tests/App/Dashboard/UserSettingsSetupChecklistPage.test.tsx +1390 -0
- package/Tests/Models/InventoryItemModel.test.ts +174 -0
- package/Tests/Models/InventoryItemNaming.test.ts +302 -0
- package/Tests/Server/API/AIChatCancelAndFeedback.test.ts +437 -0
- package/Tests/Server/API/DashboardPublicRateLimit.test.ts +659 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +18 -0
- package/Tests/Server/API/DashboardPublicSloAPI.test.ts +880 -0
- package/Tests/Server/API/Helpers.ts +24 -15
- package/Tests/Server/API/OnCallReadinessAPI.test.ts +2680 -0
- package/Tests/Server/API/OnCallSetupReminderAPI.test.ts +915 -0
- package/Tests/Server/Infrastructure/Postgres/EpisodeMemberNotifyIndexesMigration.test.ts +533 -0
- package/Tests/Server/Infrastructure/Postgres/InventoryItemArchiveMigration.test.ts +213 -0
- package/Tests/Server/Infrastructure/Postgres/RenameInventoryItemMigration.test.ts +432 -0
- package/Tests/Server/Infrastructure/Queue.test.ts +293 -0
- package/Tests/Server/Middleware/PublicDashboardRateLimit.test.ts +1645 -0
- package/Tests/Server/Services/AdminRuleEditGuards.test.ts +2848 -0
- package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1393 -0
- package/Tests/Server/Services/EpisodeRuleSeverityRepair.test.ts +1802 -0
- package/Tests/Server/Services/EpisodeStateTimelineNote.test.ts +304 -0
- package/Tests/Server/Services/InventoryItemDisplayName.test.ts +339 -0
- package/Tests/Server/Services/{TelemetryEntityManualCreate.test.ts → InventoryItemManualCreate.test.ts} +27 -27
- package/Tests/Server/Services/IpAllowlistSpoofing.test.ts +450 -0
- package/Tests/Server/Services/LogAggregationService.test.ts +235 -1
- package/Tests/Server/Services/MetricAggregationService.test.ts +231 -0
- package/Tests/Server/Services/MetricEntityMVKeyParity.test.ts +80 -29
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +30 -30
- package/Tests/Server/Services/NetworkSiteService.test.ts +18 -3
- package/Tests/Server/Services/NotificationChannelEventCoverage.test.ts +1728 -0
- package/Tests/Server/Services/NotificationDeletionImpact.test.ts +2402 -0
- package/Tests/Server/Services/OnCallDutyPolicyExecutionLogTimelineGapFeed.test.ts +394 -0
- package/Tests/Server/Services/OnCallNotificationFallback.test.ts +1744 -0
- package/Tests/Server/Services/OnCallReadinessService.test.ts +4295 -0
- package/Tests/Server/Services/OnCallSetupReminder.test.ts +1272 -0
- package/Tests/Server/Services/OnCallWeeklyReadinessDigest.test.ts +1021 -0
- package/Tests/Server/Services/ProfileAggregationService.test.ts +296 -0
- package/Tests/Server/Services/SeverityCreationRuleBackfill.test.ts +1536 -0
- package/Tests/Server/Services/SeverityRuleBackfill.test.ts +1818 -0
- package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +1845 -0
- package/Tests/Server/Services/UserNotificationRuleAdminGuards.test.ts +1394 -0
- package/Tests/Server/Services/UserNotificationRuleDefaultCreation.test.ts +1166 -0
- package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +1468 -0
- package/Tests/Server/Services/UserOnCallLogNoNotificationRules.test.ts +1457 -0
- package/Tests/Server/Types/Database/Permissions/AdminNotificationRuleAccess.test.ts +1546 -0
- package/Tests/Server/Types/Database/Permissions/CreateOwnershipScoping.test.ts +529 -0
- package/Tests/Server/Types/Database/Permissions/OwnerOnlyColumns.test.ts +1219 -0
- package/Tests/Server/Types/Database/Permissions/UserNotificationRuleScoping.test.ts +1089 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +2 -1
- package/Tests/Server/Types/Workflow/Components/BaseModelDatabaseComponents.test.ts +190 -0
- package/Tests/Server/Types/Workflow/Components/ChatWebhookComponents.test.ts +44 -14
- package/Tests/Server/Types/Workflow/Components/Email.test.ts +151 -0
- package/Tests/Server/Types/Workflow/Components/IfElse.test.ts +98 -0
- package/Tests/Server/Types/Workflow/Components/JavaScript.test.ts +51 -0
- package/Tests/Server/Utils/AI/AIMetaTools.test.ts +586 -0
- package/Tests/Server/Utils/AI/AlertMonitorFilters.test.ts +582 -0
- package/Tests/Server/Utils/AI/ChatAgentRunner.test.ts +726 -0
- package/Tests/Server/Utils/AI/IncidentToolsFilters.test.ts +315 -0
- package/Tests/Server/Utils/AI/LLMServiceStopReason.test.ts +314 -0
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +26 -3
- package/Tests/Server/Utils/AI/NoteWriteTools.test.ts +268 -0
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +169 -0
- package/Tests/Server/Utils/AI/OnCallTools.test.ts +664 -0
- package/Tests/Server/Utils/AI/RunbookTools.test.ts +325 -0
- package/Tests/Server/Utils/AI/SloTools.test.ts +306 -0
- package/Tests/Server/Utils/AI/StatusPageTools.test.ts +391 -0
- package/Tests/Server/Utils/AI/TeamTools.test.ts +257 -0
- package/Tests/Server/Utils/AI/TimelineTools.test.ts +472 -0
- package/Tests/Server/Utils/AI/WorkflowProbeTools.test.ts +428 -0
- package/Tests/Server/Utils/ClientIp.test.ts +438 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +171 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.test.ts +383 -0
- package/Tests/Server/Utils/EntityRegistryRowFence.test.ts +23 -25
- package/Tests/Server/Utils/MicrosoftTeamsWebhookUrlValidation.test.ts +6 -0
- package/Tests/Server/Utils/Monitor/Criteria/DnssecMonitorCriteria.test.ts +307 -0
- package/Tests/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.test.ts +468 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorTelemetryDeepLinks.test.ts +460 -0
- package/Tests/Server/Utils/ResponseRateLimitStatusCodes.test.ts +137 -0
- package/Tests/Server/Utils/SSRFProtectionBypasses.test.ts +40 -8
- package/Tests/Server/Utils/SSRFProtectionUserInfo.test.ts +351 -0
- package/Tests/Server/Utils/Telemetry/EntityRegistryRetirement.test.ts +531 -0
- package/Tests/Server/Utils/Telemetry/InventoryEntityRegistry.test.ts +15 -15
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +356 -39
- package/Tests/Types/IP/IP.test.ts +263 -0
- package/Tests/Types/IP/IPWhitelist.test.ts +197 -0
- package/Tests/Types/IP/IPv6.test.ts +12 -1
- package/Tests/Types/Monitor/SnmpOid.test.ts +64 -0
- package/Tests/Types/NetworkDevice/NetworkDeviceMonitoringMethod.test.ts +110 -0
- package/Tests/Types/OnCallDutyPolicy/LayerUtilMergeAudit.test.ts +106 -0
- package/Tests/Types/OnCallDutyPolicy/LayerUtilMergeDifferential.test.ts +511 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageEndToEnd.test.ts +489 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageGapTolerance.test.ts +479 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleCoverageState.test.ts +822 -0
- package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +6 -6
- package/Tests/Types/Workflow/BaseModelComponents.test.ts +429 -0
- package/Tests/Types/Workflow/Components/BaseModel.test.ts +225 -0
- package/Tests/Types/Workflow/IntegrationCredentialMetadata.test.ts +100 -0
- package/Tests/Types/Workflow/TemplateSyntax.test.ts +112 -0
- package/Tests/Types/Workflow/Templates.test.ts +916 -101
- package/Tests/UI/Components/ActiveFilterChipsOpenRoute.test.tsx +82 -0
- package/Tests/UI/Components/ComponentsModal.test.tsx +564 -7
- package/Tests/UI/Components/KeyboardShortcut.test.tsx +95 -0
- package/Tests/UI/Components/LogDetailsPanelCrossSignal.test.tsx +448 -0
- package/Tests/UI/Components/LogsTableCrossLinks.test.tsx +263 -0
- package/Tests/UI/Components/PendingProjectInvitations.test.tsx +913 -0
- package/Tests/UI/Components/SimpleLogViewer.test.tsx +228 -0
- package/Tests/UI/Components/TableRowSelectability.test.tsx +312 -0
- package/Tests/UI/Components/Workflow/GraphLint.test.ts +72 -0
- package/Tests/UI/Components/Workflow/GraphLintSummary.test.ts +755 -0
- package/Tests/UI/Components/Workflow/ModelColumnEditor.test.ts +242 -7
- package/Tests/UI/Components/Workflow/ModelColumnEditorServerContract.test.ts +15 -7
- package/Tests/UI/Components/Workflow/ModelSchema.test.ts +242 -28
- package/Tests/UI/Components/Workflow/RunStatusWatcher.test.ts +59 -1
- package/Tests/UI/Components/Workflow/StepTraceViewer.test.tsx +256 -0
- package/Tests/UI/Components/Workflow/UseRunWatch.test.tsx +665 -0
- package/Tests/UI/Components/Workflow/WorkflowIssuesModal.test.tsx +485 -0
- package/Tests/UI/Components/Workflow/WorkflowLogModal.test.tsx +478 -0
- package/Tests/UI/Components/Workflow/WorkflowStatusBar.test.tsx +379 -0
- package/Tests/UI/EsbuildConfig.test.ts +607 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +5 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +11 -4
- package/Tests/UI/Utils/ModelAPICreateMiscData.test.ts +94 -0
- package/Tests/UI/Utils/Platform.test.ts +147 -0
- package/Tests/UI/Utils/ProjectInvitationDisplay.test.ts +357 -0
- package/Tests/Utils/Monitor/NetworkDeviceLinkRuleUtil.test.ts +198 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +487 -0
- package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +698 -0
- package/Tests/__mocks__/bullmq.js +55 -0
- package/Types/AI/AIChatMessageStatus.ts +8 -1
- package/Types/AI/AIChatTypes.ts +12 -0
- package/Types/Database/AccessControl/OwnerOnlyColumn.ts +88 -0
- package/Types/Exception/ExceptionCode.ts +2 -0
- package/Types/Exception/ServiceUnavailableException.ts +8 -0
- package/Types/Exception/TooManyRequestsException.ts +8 -0
- package/Types/IP/IP.ts +93 -47
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +49 -3
- package/Types/NetworkDevice/NetworkDeviceMonitoringMethod.ts +55 -0
- package/Types/OnCallDutyPolicy/Layer.ts +203 -149
- package/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.ts +13 -0
- package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +155 -10
- package/Types/Permission.ts +193 -0
- package/Types/Telemetry/EntityRelationshipType.ts +1 -1
- package/Types/Telemetry/EntitySource.ts +1 -1
- package/Types/Telemetry/EntityType.ts +1 -1
- package/Types/Telemetry/EntityTypeGroups.ts +1 -1
- package/Types/Workflow/Components/BaseModel.ts +75 -29
- package/Types/Workflow/Components/Discord.ts +1 -0
- package/Types/Workflow/Components/Email.ts +12 -3
- package/Types/Workflow/Components/JavaScript.ts +7 -0
- package/Types/Workflow/Components/MicrosoftTeams.ts +3 -2
- package/Types/Workflow/Components/Slack.ts +1 -0
- package/Types/Workflow/Components/Telegram.ts +1 -0
- package/Types/Workflow/TemplateSyntax.ts +44 -0
- package/Types/Workflow/Templates.ts +2097 -45
- package/UI/Components/Calendar/Calendar.css +43 -0
- package/UI/Components/Calendar/Calendar.tsx +8 -0
- package/UI/Components/Card/Card.tsx +2 -2
- package/UI/Components/Checkbox/Checkbox.tsx +16 -0
- package/UI/Components/Dictionary/Dictionary.tsx +48 -9
- package/UI/Components/FormModal/BasicFormModal.tsx +2 -1
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +53 -3
- package/UI/Components/Input/Input.tsx +1 -0
- package/UI/Components/KeyboardShortcut/KeyboardKey.ts +185 -0
- package/UI/Components/KeyboardShortcut/KeyboardShortcut.tsx +87 -0
- package/UI/Components/LogsViewer/LogsViewer.tsx +28 -0
- package/UI/Components/LogsViewer/components/ActiveFilterChips.tsx +31 -0
- package/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.tsx +18 -18
- package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +363 -14
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +11 -0
- package/UI/Components/LogsViewer/components/LogsTable.tsx +155 -12
- package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +29 -0
- package/UI/Components/LogsViewer/types.ts +23 -0
- package/UI/Components/Markdown.tsx/MarkdownEditor.tsx +9 -2
- package/UI/Components/Navbar/NavBarMenuModal.tsx +15 -30
- package/UI/Components/ProjectInvitations/PendingProjectInvitations.tsx +442 -0
- package/UI/Components/SimpleLogViewer/SimpleLogViewer.tsx +23 -1
- package/UI/Components/Table/Table.tsx +49 -16
- package/UI/Components/Table/TableBody.tsx +53 -28
- package/UI/Components/Table/TableHeader.tsx +13 -0
- package/UI/Components/Table/TableRow.tsx +58 -26
- package/UI/Components/Workflow/ArgumentsForm.tsx +155 -9
- package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +26 -0
- package/UI/Components/Workflow/ComponentSettingsModal.tsx +10 -1
- package/UI/Components/Workflow/ComponentValuePickerModal.tsx +135 -7
- package/UI/Components/Workflow/ComponentsModal.tsx +116 -22
- package/UI/Components/Workflow/DocumentationViewer.tsx +59 -9
- package/UI/Components/Workflow/GraphLint.ts +42 -5
- package/UI/Components/Workflow/GraphLintSummary.ts +390 -0
- package/UI/Components/Workflow/ModelColumnEditor.tsx +154 -22
- package/UI/Components/Workflow/ModelSchema.ts +115 -33
- package/UI/Components/Workflow/RunStatusWatcher.ts +1 -1
- package/UI/Components/Workflow/StepTraceViewer.tsx +1 -1
- package/UI/Components/Workflow/UseRunWatch.ts +212 -0
- package/UI/Components/Workflow/VariableModal.tsx +6 -2
- package/UI/Components/Workflow/Workflow.tsx +49 -3
- package/UI/Components/Workflow/WorkflowIssuesModal.tsx +255 -0
- package/UI/Components/Workflow/WorkflowLogModal.tsx +128 -0
- package/UI/Components/Workflow/WorkflowStatusBar.tsx +224 -0
- package/UI/Utils/AIChatExport/ConversationMarkdown.ts +10 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +7 -1
- package/UI/Utils/Platform.ts +149 -0
- package/UI/Utils/ProjectInvitationDisplay.ts +118 -0
- package/UI/esbuild-config.js +22 -1
- package/Utils/Monitor/NetworkDeviceLinkRuleUtil.ts +187 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +888 -164
- package/Utils/Telemetry/CrossSignalScope.ts +502 -0
- package/Utils/Telemetry/EntityKey.ts +5 -5
- package/Utils/Telemetry/EntityRelationship.ts +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByK8sCluster.js +1 -1
- package/build/dist/Models/AnalyticsModels/MetricItemAggMV1mByService.js +1 -1
- package/build/dist/Models/DatabaseModels/AIConversation.js +32 -0
- package/build/dist/Models/DatabaseModels/AIConversation.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIConversationMessage.js +42 -0
- package/build/dist/Models/DatabaseModels/AIConversationMessage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js +28 -0
- package/build/dist/Models/DatabaseModels/AlertEpisodeMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js +29 -0
- package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +12 -4
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/{TelemetryEntity.js → InventoryItem.js} +167 -31
- package/build/dist/Models/DatabaseModels/InventoryItem.js.map +1 -0
- package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js +454 -0
- package/build/dist/Models/DatabaseModels/InventoryItemCustomField.js.map +1 -0
- package/build/dist/Models/DatabaseModels/{TelemetryEntityRelationship.js → InventoryItemRelationship.js} +27 -27
- package/build/dist/Models/DatabaseModels/InventoryItemRelationship.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +141 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceLink.js +719 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLink.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js +475 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceLinkRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkTopologySuppression.js +446 -0
- package/build/dist/Models/DatabaseModels/NetworkTopologySuppression.js.map +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyFeed.js +9 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +80 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserCall.js +46 -2
- package/build/dist/Models/DatabaseModels/UserCall.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserEmail.js +48 -2
- package/build/dist/Models/DatabaseModels/UserEmail.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserNotificationRule.js +424 -55
- package/build/dist/Models/DatabaseModels/UserNotificationRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +24 -2
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserPush.js +51 -1
- package/build/dist/Models/DatabaseModels/UserPush.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserSMS.js +47 -2
- package/build/dist/Models/DatabaseModels/UserSMS.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTelegram.js +65 -3
- package/build/dist/Models/DatabaseModels/UserTelegram.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebhook.js +56 -2
- package/build/dist/Models/DatabaseModels/UserWebhook.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js +45 -2
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js +12 -0
- package/build/dist/Models/DatabaseModels/WorkflowVariable.js.map +1 -1
- package/build/dist/Server/API/AIChatAPI.js +237 -1
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +165 -13
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/OnCallReadinessAPI.js +599 -0
- package/build/dist/Server/API/OnCallReadinessAPI.js.map +1 -0
- package/build/dist/Server/API/TeamComplianceAPI.js +68 -9
- package/build/dist/Server/API/TeamComplianceAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +129 -18
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +45 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/DataSourceOptions.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786100000000-RestoreServiceLowerNameIndex.js +4 -4
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786625176831-AddMonitoringMethodToNetworkDevice.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786634985763-AddNetworkDeviceLink.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.js +38 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639512056-AddNetworkDeviceLinkRule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786639972982-AddNetworkTopologySuppression.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.js +150 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786800000000-RenameTelemetryEntityToInventoryItem.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.js +57 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786900000000-AddInventoryItemArchiveAndCustomFields.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.js +69 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787000000000-AddOnCallNotificationFallbackColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787100000000-AddAIConversationPageContext.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787200000000-AddAIChatMessageFeedback.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.js +48 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787300000000-AddEpisodeMemberNotifyIndexes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +72 -13
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Middleware/PublicDashboardRateLimit.js +399 -0
- package/build/dist/Server/Middleware/PublicDashboardRateLimit.js.map +1 -0
- package/build/dist/Server/Services/AIService.js +1 -0
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js +24 -3
- package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/AlertSeverityService.js +54 -0
- package/build/dist/Server/Services/AlertSeverityService.js.map +1 -1
- package/build/dist/Server/Services/DashboardService.js +10 -9
- package/build/dist/Server/Services/DashboardService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +24 -2
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +24 -3
- package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentSeverityService.js +67 -0
- package/build/dist/Server/Services/IncidentSeverityService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +12 -4
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/InventoryItemCustomFieldService.js +9 -0
- package/build/dist/Server/Services/InventoryItemCustomFieldService.js.map +1 -0
- package/build/dist/Server/Services/{TelemetryEntityRelationshipService.js → InventoryItemRelationshipService.js} +6 -6
- package/build/dist/Server/Services/InventoryItemRelationshipService.js.map +1 -0
- package/build/dist/Server/Services/{TelemetryEntityService.js → InventoryItemService.js} +68 -23
- package/build/dist/Server/Services/InventoryItemService.js.map +1 -0
- package/build/dist/Server/Services/LogAggregationService.js +27 -8
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +80 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricService.js +6 -6
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceLinkRuleService.js +9 -0
- package/build/dist/Server/Services/NetworkDeviceLinkRuleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceLinkService.js +71 -0
- package/build/dist/Server/Services/NetworkDeviceLinkService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceService.js +113 -0
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +53 -13
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/NetworkTopologySuppressionService.js +85 -0
- package/build/dist/Server/Services/NetworkTopologySuppressionService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +48 -32
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +8 -0
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +51 -12
- package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +57 -13
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallNotificationAlertingService.js +548 -0
- package/build/dist/Server/Services/OnCallNotificationAlertingService.js.map +1 -0
- package/build/dist/Server/Services/OnCallReadinessService.js +1961 -0
- package/build/dist/Server/Services/OnCallReadinessService.js.map +1 -0
- package/build/dist/Server/Services/OnCallSetupReminderService.js +738 -0
- package/build/dist/Server/Services/OnCallSetupReminderService.js.map +1 -0
- package/build/dist/Server/Services/ProfileAggregationService.js +68 -4
- package/build/dist/Server/Services/ProfileAggregationService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +11 -10
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TeamComplianceService.js +312 -160
- package/build/dist/Server/Services/TeamComplianceService.js.map +1 -1
- package/build/dist/Server/Services/UserCallService.js +24 -1
- package/build/dist/Server/Services/UserCallService.js.map +1 -1
- package/build/dist/Server/Services/UserEmailService.js +24 -1
- package/build/dist/Server/Services/UserEmailService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleAdminService.js +858 -0
- package/build/dist/Server/Services/UserNotificationRuleAdminService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js +2830 -175
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserOnCallLogService.js +488 -43
- package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
- package/build/dist/Server/Services/UserPushService.js +26 -0
- package/build/dist/Server/Services/UserPushService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +10 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/UserSmsService.js +24 -1
- package/build/dist/Server/Services/UserSmsService.js.map +1 -1
- package/build/dist/Server/Services/UserTelegramService.js +22 -1
- package/build/dist/Server/Services/UserTelegramService.js.map +1 -1
- package/build/dist/Server/Services/UserWebhookService.js +25 -1
- package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
- package/build/dist/Server/Services/UserWhatsAppService.js +22 -1
- package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js +12 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +126 -0
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.js +254 -0
- package/build/dist/Server/Types/Database/Permissions/OwnerOnlyColumnPermission.js.map +1 -0
- package/build/dist/Server/Types/Database/Permissions/QueryPermission.js +47 -2
- package/build/dist/Server/Types/Database/Permissions/QueryPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +7 -0
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js +21 -5
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js +14 -10
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js +31 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Conditions/IfElse.js +3 -9
- package/build/dist/Server/Types/Workflow/Components/Conditions/IfElse.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Email.js +15 -4
- package/build/dist/Server/Types/Workflow/Components/Email.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js +7 -2
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js +1 -1
- package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js +514 -56
- package/build/dist/Server/Utils/AI/Chat/ChatAgentRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js +20 -3
- package/build/dist/Server/Utils/AI/Chat/ObservabilityAssistant.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +19 -6
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +7 -0
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js +2 -2
- package/build/dist/Server/Utils/AI/Toolbox/AIActionTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/AIMetaTools.js +692 -0
- package/build/dist/Server/Utils/AI/Toolbox/AIMetaTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js +148 -12
- package/build/dist/Server/Utils/AI/Toolbox/AlertTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js +157 -10
- package/build/dist/Server/Utils/AI/Toolbox/IncidentTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +37 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js +259 -14
- package/build/dist/Server/Utils/AI/Toolbox/MonitorTools.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/NoteWriteTools.js +235 -0
- package/build/dist/Server/Utils/AI/Toolbox/NoteWriteTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js +1000 -0
- package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/RunbookTools.js +356 -0
- package/build/dist/Server/Utils/AI/Toolbox/RunbookTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/SloTools.js +394 -0
- package/build/dist/Server/Utils/AI/Toolbox/SloTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/StatusPageTools.js +465 -0
- package/build/dist/Server/Utils/AI/Toolbox/StatusPageTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/TeamTools.js +280 -0
- package/build/dist/Server/Utils/AI/Toolbox/TeamTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/TimelineTools.js +527 -0
- package/build/dist/Server/Utils/AI/Toolbox/TimelineTools.js.map +1 -0
- package/build/dist/Server/Utils/AI/Toolbox/WorkflowProbeTools.js +548 -0
- package/build/dist/Server/Utils/AI/Toolbox/WorkflowProbeTools.js.map +1 -0
- package/build/dist/Server/Utils/ClientIp.js +137 -0
- package/build/dist/Server/Utils/ClientIp.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +38 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -1
- package/build/dist/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.js +89 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardSloHistoryPolicy.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardSloWidget.js +77 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardSloWidget.js.map +1 -0
- package/build/dist/Server/Utils/Express.js +12 -12
- package/build/dist/Server/Utils/Express.js.map +1 -1
- package/build/dist/Server/Utils/LLM/LLMService.js +70 -7
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +121 -11
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/SSRFProtection.js +82 -21
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +12 -4
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js +165 -18
- package/build/dist/Server/Utils/Telemetry/EntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js +11 -11
- package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js +122 -47
- package/build/dist/Server/Utils/Telemetry/TelemetryEntity.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +7 -3
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/AI/AIChatMessageStatus.js +8 -1
- package/build/dist/Types/AI/AIChatMessageStatus.js.map +1 -1
- package/build/dist/Types/AI/AIChatTypes.js +12 -0
- package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js +60 -0
- package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js.map +1 -0
- package/build/dist/Types/Exception/ExceptionCode.js +2 -0
- package/build/dist/Types/Exception/ExceptionCode.js.map +1 -1
- package/build/dist/Types/Exception/ServiceUnavailableException.js +8 -0
- package/build/dist/Types/Exception/ServiceUnavailableException.js.map +1 -0
- package/build/dist/Types/Exception/TooManyRequestsException.js +8 -0
- package/build/dist/Types/Exception/TooManyRequestsException.js.map +1 -0
- package/build/dist/Types/IP/IP.js +87 -43
- package/build/dist/Types/IP/IP.js.map +1 -1
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js +50 -0
- package/build/dist/Types/NetworkDevice/NetworkDeviceMonitoringMethod.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/Layer.js +186 -123
- package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.js +13 -0
- package/build/dist/Types/OnCallDutyPolicy/OnCallDutyPolicyStatus.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +105 -11
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
- package/build/dist/Types/Permission.js +174 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityRelationshipType.js +1 -1
- package/build/dist/Types/Telemetry/EntitySource.js +1 -1
- package/build/dist/Types/Telemetry/EntityType.js +1 -1
- package/build/dist/Types/Telemetry/EntityTypeGroups.js +1 -1
- package/build/dist/Types/Telemetry/EntityTypeGroups.js.map +1 -1
- package/build/dist/Types/Workflow/Components/BaseModel.js +66 -28
- package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Discord.js +1 -0
- package/build/dist/Types/Workflow/Components/Discord.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Email.js +12 -3
- package/build/dist/Types/Workflow/Components/Email.js.map +1 -1
- package/build/dist/Types/Workflow/Components/JavaScript.js +7 -0
- package/build/dist/Types/Workflow/Components/JavaScript.js.map +1 -1
- package/build/dist/Types/Workflow/Components/MicrosoftTeams.js +3 -2
- package/build/dist/Types/Workflow/Components/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Slack.js +1 -0
- package/build/dist/Types/Workflow/Components/Slack.js.map +1 -1
- package/build/dist/Types/Workflow/Components/Telegram.js +1 -0
- package/build/dist/Types/Workflow/Components/Telegram.js.map +1 -1
- package/build/dist/Types/Workflow/TemplateSyntax.js +12 -0
- package/build/dist/Types/Workflow/TemplateSyntax.js.map +1 -1
- package/build/dist/Types/Workflow/Templates.js +1931 -38
- package/build/dist/Types/Workflow/Templates.js.map +1 -1
- package/build/dist/UI/Components/Calendar/Calendar.js +1 -1
- package/build/dist/UI/Components/Calendar/Calendar.js.map +1 -1
- package/build/dist/UI/Components/Checkbox/Checkbox.js +1 -1
- package/build/dist/UI/Components/Checkbox/Checkbox.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/Dictionary.js +25 -11
- package/build/dist/UI/Components/Dictionary/Dictionary.js.map +1 -1
- package/build/dist/UI/Components/FormModal/BasicFormModal.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +27 -4
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +1 -0
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardKey.js +163 -0
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardKey.js.map +1 -0
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcut.js +47 -0
- package/build/dist/UI/Components/KeyboardShortcut/KeyboardShortcut.js.map +1 -0
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +4 -4
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js +11 -1
- package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js +10 -8
- package/build/dist/UI/Components/LogsViewer/components/KeyboardShortcutsHelp.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +227 -14
- package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +5 -0
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +69 -5
- package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +8 -0
- package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/types.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js +9 -2
- package/build/dist/UI/Components/Markdown.tsx/MarkdownEditor.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +8 -21
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/ProjectInvitations/PendingProjectInvitations.js +251 -0
- package/build/dist/UI/Components/ProjectInvitations/PendingProjectInvitations.js.map +1 -0
- package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js +9 -2
- package/build/dist/UI/Components/SimpleLogViewer/SimpleLogViewer.js.map +1 -1
- package/build/dist/UI/Components/Table/Table.js +27 -15
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Table/TableBody.js +24 -18
- package/build/dist/UI/Components/Table/TableBody.js.map +1 -1
- package/build/dist/UI/Components/Table/TableHeader.js +9 -1
- package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
- package/build/dist/UI/Components/Table/TableRow.js +29 -21
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ArgumentsForm.js +130 -12
- package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js +10 -1
- package/build/dist/UI/Components/Workflow/ComponentReturnValueViewer.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js +4 -4
- package/build/dist/UI/Components/Workflow/ComponentSettingsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentValuePickerModal.js +57 -7
- package/build/dist/UI/Components/Workflow/ComponentValuePickerModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ComponentsModal.js +53 -18
- package/build/dist/UI/Components/Workflow/ComponentsModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/DocumentationViewer.js +19 -6
- package/build/dist/UI/Components/Workflow/DocumentationViewer.js.map +1 -1
- package/build/dist/UI/Components/Workflow/GraphLint.js +33 -4
- package/build/dist/UI/Components/Workflow/GraphLint.js.map +1 -1
- package/build/dist/UI/Components/Workflow/GraphLintSummary.js +231 -0
- package/build/dist/UI/Components/Workflow/GraphLintSummary.js.map +1 -0
- package/build/dist/UI/Components/Workflow/ModelColumnEditor.js +116 -21
- package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ModelSchema.js +72 -34
- package/build/dist/UI/Components/Workflow/ModelSchema.js.map +1 -1
- package/build/dist/UI/Components/Workflow/RunStatusWatcher.js +1 -1
- package/build/dist/UI/Components/Workflow/RunStatusWatcher.js.map +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js +1 -1
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -1
- package/build/dist/UI/Components/Workflow/UseRunWatch.js +123 -0
- package/build/dist/UI/Components/Workflow/UseRunWatch.js.map +1 -0
- package/build/dist/UI/Components/Workflow/VariableModal.js +3 -2
- package/build/dist/UI/Components/Workflow/VariableModal.js.map +1 -1
- package/build/dist/UI/Components/Workflow/Workflow.js +41 -1
- package/build/dist/UI/Components/Workflow/Workflow.js.map +1 -1
- package/build/dist/UI/Components/Workflow/WorkflowIssuesModal.js +99 -0
- package/build/dist/UI/Components/Workflow/WorkflowIssuesModal.js.map +1 -0
- package/build/dist/UI/Components/Workflow/WorkflowLogModal.js +56 -0
- package/build/dist/UI/Components/Workflow/WorkflowLogModal.js.map +1 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatusBar.js +92 -0
- package/build/dist/UI/Components/Workflow/WorkflowStatusBar.js.map +1 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js +9 -0
- package/build/dist/UI/Utils/AIChatExport/ConversationMarkdown.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/Platform.js +118 -0
- package/build/dist/UI/Utils/Platform.js.map +1 -0
- package/build/dist/UI/Utils/ProjectInvitationDisplay.js +106 -0
- package/build/dist/UI/Utils/ProjectInvitationDisplay.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js +108 -0
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +642 -136
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/Telemetry/CrossSignalScope.js +328 -0
- package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -0
- package/build/dist/Utils/Telemetry/EntityKey.js +5 -5
- package/build/dist/Utils/Telemetry/EntityRelationship.js +1 -1
- package/jest.config.json +1 -0
- package/package.json +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntity.js.map +0 -1
- package/build/dist/Models/DatabaseModels/TelemetryEntityRelationship.js.map +0 -1
- package/build/dist/Server/Services/TelemetryEntityRelationshipService.js.map +0 -1
- package/build/dist/Server/Services/TelemetryEntityService.js.map +0 -1
|
@@ -1,24 +1,78 @@
|
|
|
1
|
+
import OnCallReadinessService from "./OnCallReadinessService";
|
|
1
2
|
import TeamComplianceSettingService from "./TeamComplianceSettingService";
|
|
2
3
|
import TeamMemberService from "./TeamMemberService";
|
|
3
4
|
import UserEmailService from "./UserEmailService";
|
|
4
5
|
import UserSmsService from "./UserSmsService";
|
|
5
6
|
import UserCallService from "./UserCallService";
|
|
6
7
|
import UserPushService from "./UserPushService";
|
|
7
|
-
import IncidentSeverityService from "./IncidentSeverityService";
|
|
8
|
-
import AlertSeverityService from "./AlertSeverityService";
|
|
9
|
-
import UserNotificationRuleService from "./UserNotificationRuleService";
|
|
10
8
|
import UserService from "./UserService";
|
|
11
9
|
import TeamService from "./TeamService";
|
|
12
10
|
import ComplianceRuleType from "../../Types/Team/ComplianceRuleType";
|
|
11
|
+
import NotificationRuleType from "../../Types/NotificationRule/NotificationRuleType";
|
|
13
12
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
14
13
|
import Includes from "../../Types/BaseDatabase/Includes";
|
|
14
|
+
import logger from "../Utils/Logger";
|
|
15
15
|
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
16
|
+
/*
|
|
17
|
+
* How many members' channel checks may be in flight at once. Each member costs
|
|
18
|
+
* one small indexed existence check per enabled channel rule (four at most), so
|
|
19
|
+
* twenty members in flight is up to eighty concurrent queries - enough to keep
|
|
20
|
+
* the page quick on a large team, and nowhere near enough to matter to a
|
|
21
|
+
* connection pool shared with the rest of the product. The number is a ceiling
|
|
22
|
+
* on the burst, not a target: a five-member team still issues five.
|
|
23
|
+
*/
|
|
24
|
+
const MAX_CONCURRENT_MEMBER_CHECKS = 20;
|
|
25
|
+
/*
|
|
26
|
+
* Teams > View > Compliance. The route (`/team/compliance-status/:teamId`) and
|
|
27
|
+
* every field of the payload above are unchanged, because
|
|
28
|
+
* TeamComplianceStatusTable.tsx renders them verbatim - including the reason
|
|
29
|
+
* strings, which are printed as prose rather than mapped through any lookup.
|
|
30
|
+
*
|
|
31
|
+
* What changed in Phase 2 is where the answers come from. The two "does this
|
|
32
|
+
* user have on-call rules?" questions used to be answered here, by walking every
|
|
33
|
+
* severity in the project and issuing one findBy per severity per user; that
|
|
34
|
+
* walk got four things wrong (it ignored ruleType, so an off-call rule counted
|
|
35
|
+
* as incident coverage; it read only four of the seven channel columns, so a
|
|
36
|
+
* Telegram/WhatsApp/Webhook responder was reported unreachable; it capped alert
|
|
37
|
+
* severities at 100 while capping incident severities at LIMIT_PER_PROJECT; and
|
|
38
|
+
* it was quadratic). All four are now OnCallReadinessService's problem, answered
|
|
39
|
+
* from AT MOST TWO batched, cached computations for the whole team - which also
|
|
40
|
+
* means this page and the on-call readiness surfaces can no longer disagree
|
|
41
|
+
* about whether a given responder is covered.
|
|
42
|
+
*
|
|
43
|
+
* The four "does this user have a verified <channel>?" questions stay here, as
|
|
44
|
+
* direct existence checks. ComplianceRuleType names one specific channel per
|
|
45
|
+
* rule, so there is nothing to batch across severities and nothing for the
|
|
46
|
+
* readiness service to reconcile: both surfaces are asking the same table the
|
|
47
|
+
* same question and necessarily agree already.
|
|
48
|
+
*
|
|
49
|
+
* TENANT SCOPING. Every read below - including the team row itself - carries the
|
|
50
|
+
* projectId the caller was authorised for, and every read is made with
|
|
51
|
+
* `isRoot: true` because this page deliberately reports on people the reader may
|
|
52
|
+
* have no permission to read individually. Root reads mean the projectId in the
|
|
53
|
+
* QUERY is the only tenant boundary there is: the team was previously fetched by
|
|
54
|
+
* id alone, so a team id belonging to another project resolved and its members'
|
|
55
|
+
* reachability was described to a caller from outside that project. The id and
|
|
56
|
+
* the project are now asked for together, in one query, so a foreign team simply
|
|
57
|
+
* does not exist as far as this service is concerned.
|
|
58
|
+
*/
|
|
16
59
|
export default class TeamComplianceService {
|
|
17
60
|
static async getTeamComplianceStatus(teamId, projectId) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
61
|
+
/*
|
|
62
|
+
* The team is looked up BY ID AND BY PROJECT, together. Splitting those into
|
|
63
|
+
* "read by id, then compare projectId" would work just as well when written
|
|
64
|
+
* correctly, but the comparison is a line somebody can delete without the
|
|
65
|
+
* query looking wrong; a query that names both columns cannot be half-right.
|
|
66
|
+
*
|
|
67
|
+
* A team from another project therefore comes back null and is answered with
|
|
68
|
+
* the same "Team not found" a nonexistent id gets - deliberately identical,
|
|
69
|
+
* so this endpoint cannot be used to learn which team ids exist elsewhere.
|
|
70
|
+
*/
|
|
71
|
+
const team = await TeamService.findOneBy({
|
|
72
|
+
query: {
|
|
73
|
+
_id: teamId.toString(),
|
|
74
|
+
projectId: projectId,
|
|
75
|
+
},
|
|
22
76
|
select: {
|
|
23
77
|
name: true,
|
|
24
78
|
_id: true,
|
|
@@ -30,7 +84,14 @@ export default class TeamComplianceService {
|
|
|
30
84
|
if (!team) {
|
|
31
85
|
throw new BadDataException("Team not found");
|
|
32
86
|
}
|
|
33
|
-
|
|
87
|
+
/*
|
|
88
|
+
* LIMIT_PER_PROJECT, not 100, at all three sites below. The old cap was the
|
|
89
|
+
* worst kind of bug for a compliance page: a truncated list does not render
|
|
90
|
+
* as an error or as a warning, it renders as fewer rows - and a member who
|
|
91
|
+
* is simply absent from the table reads exactly like a member with nothing
|
|
92
|
+
* wrong. TeamComplianceSetting is one row per rule type today so its cap was
|
|
93
|
+
* harmless, but it is the same mistake and is fixed with the other two.
|
|
94
|
+
*/
|
|
34
95
|
const complianceSettings = await TeamComplianceSettingService.findBy({
|
|
35
96
|
query: {
|
|
36
97
|
teamId: teamId,
|
|
@@ -40,7 +101,7 @@ export default class TeamComplianceService {
|
|
|
40
101
|
ruleType: true,
|
|
41
102
|
enabled: true,
|
|
42
103
|
},
|
|
43
|
-
limit:
|
|
104
|
+
limit: LIMIT_PER_PROJECT,
|
|
44
105
|
skip: 0,
|
|
45
106
|
props: {
|
|
46
107
|
isRoot: true,
|
|
@@ -56,12 +117,24 @@ export default class TeamComplianceService {
|
|
|
56
117
|
userId: true,
|
|
57
118
|
_id: true,
|
|
58
119
|
},
|
|
59
|
-
limit:
|
|
120
|
+
limit: LIMIT_PER_PROJECT,
|
|
60
121
|
skip: 0,
|
|
61
122
|
props: {
|
|
62
123
|
isRoot: true,
|
|
63
124
|
},
|
|
64
125
|
});
|
|
126
|
+
/*
|
|
127
|
+
* LIMIT_PER_PROJECT is a ceiling, not a promise, and a page that hits it
|
|
128
|
+
* renders as fewer rows rather than as a warning - the 10,001st member is
|
|
129
|
+
* not reported non-compliant, they are absent, and an absent row reads as
|
|
130
|
+
* "no problem here". Ten thousand members on one team is not a shape any
|
|
131
|
+
* install has, which is why this is a log rather than a paging loop, but the
|
|
132
|
+
* day it happens the operator gets a sentence saying the page is incomplete
|
|
133
|
+
* instead of a table that quietly is.
|
|
134
|
+
*/
|
|
135
|
+
if (teamMembers.length >= LIMIT_PER_PROJECT) {
|
|
136
|
+
logger.error(`TeamComplianceService read ${LIMIT_PER_PROJECT} members of team ${teamId.toString()} in project ${projectId.toString()} and stopped. The compliance page for this team is INCOMPLETE: members past that ceiling are absent from it entirely, and absence reads as compliance.`);
|
|
137
|
+
}
|
|
65
138
|
const userIds = teamMembers
|
|
66
139
|
.map((member) => {
|
|
67
140
|
return member.userId;
|
|
@@ -78,43 +151,165 @@ export default class TeamComplianceService {
|
|
|
78
151
|
_id: true,
|
|
79
152
|
profilePictureId: true,
|
|
80
153
|
},
|
|
81
|
-
limit:
|
|
154
|
+
limit: LIMIT_PER_PROJECT,
|
|
82
155
|
skip: 0,
|
|
83
156
|
props: {
|
|
84
157
|
isRoot: true,
|
|
85
158
|
},
|
|
86
159
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
160
|
+
const settings = complianceSettings.map((setting) => {
|
|
161
|
+
return {
|
|
162
|
+
ruleType: setting.ruleType,
|
|
163
|
+
enabled: setting.enabled || false,
|
|
164
|
+
};
|
|
165
|
+
});
|
|
166
|
+
const readinessByUserId = await this.getReadinessByUserId(users.map((user) => {
|
|
167
|
+
return user.id;
|
|
168
|
+
}), projectId, settings);
|
|
169
|
+
/*
|
|
170
|
+
* Users are checked concurrently rather than one at a time - there is no
|
|
171
|
+
* reason for Ada's lookups to wait on Grace's - but concurrently is not the
|
|
172
|
+
* same as all at once. Each user's channel rules cost up to four existence
|
|
173
|
+
* checks, so a bare Promise.all over a 5,000-member team opens twenty
|
|
174
|
+
* thousand simultaneous queries and the page that was meant to be faster
|
|
175
|
+
* takes the pool down with it. The bounded map keeps the parallelism and
|
|
176
|
+
* caps the burst, and it assigns results by index so the table's rows do not
|
|
177
|
+
* shuffle.
|
|
178
|
+
*/
|
|
179
|
+
const userComplianceStatuses = await this.mapWithBoundedConcurrency(users, MAX_CONCURRENT_MEMBER_CHECKS, async (user) => {
|
|
180
|
+
var _a, _b, _c;
|
|
181
|
+
const complianceStatus = await this.checkUserCompliance(user.id, projectId, settings, readinessByUserId.get(user.id.toString()));
|
|
182
|
+
return Object.assign({ userId: user.id, userName: ((_a = user.name) === null || _a === void 0 ? void 0 : _a.toString()) || ((_b = user.email) === null || _b === void 0 ? void 0 : _b.toString()) || "Unknown User", userEmail: ((_c = user.email) === null || _c === void 0 ? void 0 : _c.toString()) || "", userProfilePictureId: user.profilePictureId }, complianceStatus);
|
|
183
|
+
});
|
|
98
184
|
return {
|
|
99
185
|
teamId: teamId,
|
|
100
186
|
teamName: team.name || "Unknown Team",
|
|
101
|
-
complianceSettings:
|
|
102
|
-
return {
|
|
103
|
-
ruleType: setting.ruleType,
|
|
104
|
-
enabled: setting.enabled || false,
|
|
105
|
-
};
|
|
106
|
-
}),
|
|
187
|
+
complianceSettings: settings,
|
|
107
188
|
userComplianceStatuses,
|
|
108
189
|
};
|
|
109
190
|
}
|
|
110
|
-
|
|
191
|
+
/*
|
|
192
|
+
* Readiness for a whole team, in AT MOST TWO readiness computations however
|
|
193
|
+
* many members the team has.
|
|
194
|
+
*
|
|
195
|
+
* The project-scope summary is asked for first and used as the source for
|
|
196
|
+
* everyone it happens to contain. It resolves every responder on every policy
|
|
197
|
+
* in the project in one batched pass, so for a team that exists because its
|
|
198
|
+
* members are on call - which is the only kind of team this page is really
|
|
199
|
+
* about - it answers for all of them at once, and it is very likely already
|
|
200
|
+
* warm in the readiness service's 60s cache because the On-Call banner and the
|
|
201
|
+
* readiness page request that same scope.
|
|
202
|
+
*
|
|
203
|
+
* Members the summary does not cover are those on no policy at all. They are
|
|
204
|
+
* still subject to the team's compliance rules, so they cannot be skipped -
|
|
205
|
+
* and they are now resolved in ONE batched `getReadinessForUsers` call rather
|
|
206
|
+
* than one `getReadinessForUser` per member.
|
|
207
|
+
*
|
|
208
|
+
* That distinction is the whole point of this function. `getReadinessForUser`
|
|
209
|
+
* resolves the project's ENTIRE responder set on every call, purely to work
|
|
210
|
+
* out which policies reach the one user it was asked about, so a 40-member
|
|
211
|
+
* team with 38 members on no policy used to cost 38 full project resolutions -
|
|
212
|
+
* hundreds of queries - to render one page. The batched entry point pays for
|
|
213
|
+
* that resolution once and answers for every member from it.
|
|
214
|
+
*
|
|
215
|
+
* A member the batch cannot resolve - somebody removed from the project
|
|
216
|
+
* between the member read above and this call - is simply absent from the map.
|
|
217
|
+
* They are NOT an error: one person leaving a team must not blank the page for
|
|
218
|
+
* the other thirty-nine. checkHasOnCallRules reports their on-call rules as
|
|
219
|
+
* unverified rather than as fine, because "we could not check" and "there is
|
|
220
|
+
* nothing wrong" are different answers and only one of them is true.
|
|
221
|
+
*
|
|
222
|
+
* Nothing is computed when neither on-call-rule setting is enabled: the
|
|
223
|
+
* channel rules do not consult readiness, so a team that only checks "has a
|
|
224
|
+
* verified email" must not pay for a project-wide readiness pass.
|
|
225
|
+
*/
|
|
226
|
+
static async getReadinessByUserId(userIds, projectId, settings) {
|
|
227
|
+
const readinessByUserId = new Map();
|
|
228
|
+
if (userIds.length === 0) {
|
|
229
|
+
return readinessByUserId;
|
|
230
|
+
}
|
|
231
|
+
const needsReadiness = settings.some((setting) => {
|
|
232
|
+
return (setting.enabled &&
|
|
233
|
+
(setting.ruleType === ComplianceRuleType.HasIncidentOnCallRules ||
|
|
234
|
+
setting.ruleType === ComplianceRuleType.HasAlertOnCallRules));
|
|
235
|
+
});
|
|
236
|
+
if (!needsReadiness) {
|
|
237
|
+
return readinessByUserId;
|
|
238
|
+
}
|
|
239
|
+
const wanted = new Set(userIds.map((userId) => {
|
|
240
|
+
return userId.toString();
|
|
241
|
+
}));
|
|
242
|
+
const summary = await OnCallReadinessService.getReadinessForProject(projectId);
|
|
243
|
+
for (const readiness of summary.users) {
|
|
244
|
+
const key = readiness.userId.toString();
|
|
245
|
+
if (wanted.has(key)) {
|
|
246
|
+
readinessByUserId.set(key, readiness);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const missing = userIds.filter((userId) => {
|
|
250
|
+
return !readinessByUserId.has(userId.toString());
|
|
251
|
+
});
|
|
252
|
+
if (missing.length === 0) {
|
|
253
|
+
return readinessByUserId;
|
|
254
|
+
}
|
|
255
|
+
/*
|
|
256
|
+
* One call, whatever `missing.length` is. The batch answers only for the
|
|
257
|
+
* users it can resolve, so its result is keyed back onto the ids it carries
|
|
258
|
+
* rather than zipped against `missing` by position - a batch that dropped a
|
|
259
|
+
* user would otherwise shift everybody after them onto the wrong readiness,
|
|
260
|
+
* which is the single worst thing this page could do.
|
|
261
|
+
*/
|
|
262
|
+
const filled = await OnCallReadinessService.getReadinessForUsers(missing, projectId);
|
|
263
|
+
for (const readiness of filled) {
|
|
264
|
+
readinessByUserId.set(readiness.userId.toString(), readiness);
|
|
265
|
+
}
|
|
266
|
+
return readinessByUserId;
|
|
267
|
+
}
|
|
268
|
+
/*
|
|
269
|
+
* Promise.all with a ceiling.
|
|
270
|
+
*
|
|
271
|
+
* Results are written into a pre-sized array by index rather than pushed, so
|
|
272
|
+
* the output order matches the input order no matter what order the workers
|
|
273
|
+
* happen to finish in. The table's rows are rendered in this order and a page
|
|
274
|
+
* whose rows reshuffle between renders is unreadable.
|
|
275
|
+
*
|
|
276
|
+
* Rejections are deliberately NOT swallowed here. A member whose data is
|
|
277
|
+
* merely absent is handled where that absence has meaning (see
|
|
278
|
+
* checkHasOnCallRules); a query that actually FAILS is an infrastructure
|
|
279
|
+
* fault, and turning it into "every member is non-compliant" would dress a
|
|
280
|
+
* database outage up as forty people misconfiguring their phones.
|
|
281
|
+
*/
|
|
282
|
+
static async mapWithBoundedConcurrency(items, maxConcurrency, mapper) {
|
|
283
|
+
const results = new Array(items.length);
|
|
284
|
+
let cursor = 0;
|
|
285
|
+
const runWorker = async () => {
|
|
286
|
+
while (cursor < items.length) {
|
|
287
|
+
const index = cursor;
|
|
288
|
+
cursor++;
|
|
289
|
+
results[index] = await mapper(items[index]);
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
const workers = [];
|
|
293
|
+
for (let worker = 0; worker < Math.min(maxConcurrency, items.length); worker++) {
|
|
294
|
+
workers.push(runWorker());
|
|
295
|
+
}
|
|
296
|
+
await Promise.all(workers);
|
|
297
|
+
return results;
|
|
298
|
+
}
|
|
299
|
+
/*
|
|
300
|
+
* `readiness` is required and may be undefined, matching checkRuleCompliance:
|
|
301
|
+
* undefined is the answer "the batch could not resolve this member", and an
|
|
302
|
+
* OPTIONAL parameter would let a future caller forget to thread it through and
|
|
303
|
+
* silently turn every member into that case.
|
|
304
|
+
*/
|
|
305
|
+
static async checkUserCompliance(userId, projectId, complianceSettings, readiness) {
|
|
111
306
|
const nonCompliantRules = [];
|
|
112
307
|
// Check each enabled compliance rule
|
|
113
308
|
for (const setting of complianceSettings) {
|
|
114
309
|
if (!setting.enabled) {
|
|
115
310
|
continue;
|
|
116
311
|
}
|
|
117
|
-
const isCompliant = await this.checkRuleCompliance(userId, projectId, setting.ruleType);
|
|
312
|
+
const isCompliant = await this.checkRuleCompliance(userId, projectId, setting.ruleType, readiness);
|
|
118
313
|
if (!isCompliant.compliant) {
|
|
119
314
|
nonCompliantRules.push({
|
|
120
315
|
ruleType: setting.ruleType,
|
|
@@ -127,7 +322,19 @@ export default class TeamComplianceService {
|
|
|
127
322
|
nonCompliantRules,
|
|
128
323
|
};
|
|
129
324
|
}
|
|
130
|
-
|
|
325
|
+
/*
|
|
326
|
+
* `readiness` is the caller's already-resolved UserReadiness for this user.
|
|
327
|
+
*
|
|
328
|
+
* It is a required parameter that may be undefined, rather than an optional
|
|
329
|
+
* one, and the difference matters: undefined means "the batch could not
|
|
330
|
+
* resolve this person", which is an answer, whereas an omitted argument would
|
|
331
|
+
* mean "the caller forgot" and used to be repaired by fetching readiness right
|
|
332
|
+
* here. That repair was a per-user, per-RULE fan-out hiding inside a function
|
|
333
|
+
* that looks like a pure predicate - the on-call rules are two of the six, so
|
|
334
|
+
* a team with both enabled paid for it twice per member - and it is gone. The
|
|
335
|
+
* only source of readiness is now the batch in getReadinessByUserId.
|
|
336
|
+
*/
|
|
337
|
+
static async checkRuleCompliance(userId, projectId, ruleType, readiness) {
|
|
131
338
|
switch (ruleType) {
|
|
132
339
|
case ComplianceRuleType.HasNotificationEmailMethod:
|
|
133
340
|
return await this.checkHasNotificationEmail(userId, projectId);
|
|
@@ -137,10 +344,23 @@ export default class TeamComplianceService {
|
|
|
137
344
|
return await this.checkHasNotificationCall(userId, projectId);
|
|
138
345
|
case ComplianceRuleType.HasNotificationPushMethod:
|
|
139
346
|
return await this.checkHasNotificationPush(userId, projectId);
|
|
347
|
+
/*
|
|
348
|
+
* Not awaited: checkHasOnCallRules reads an array it was handed and makes
|
|
349
|
+
* no query at all, so there is nothing to wait for. An async wrapper would
|
|
350
|
+
* only make it look as though there were.
|
|
351
|
+
*/
|
|
140
352
|
case ComplianceRuleType.HasIncidentOnCallRules:
|
|
141
|
-
return
|
|
353
|
+
return this.checkHasOnCallRules({
|
|
354
|
+
notificationRuleType: NotificationRuleType.ON_CALL_EXECUTED_INCIDENT,
|
|
355
|
+
severityKind: "incident",
|
|
356
|
+
readiness: readiness,
|
|
357
|
+
});
|
|
142
358
|
case ComplianceRuleType.HasAlertOnCallRules:
|
|
143
|
-
return
|
|
359
|
+
return this.checkHasOnCallRules({
|
|
360
|
+
notificationRuleType: NotificationRuleType.ON_CALL_EXECUTED_ALERT,
|
|
361
|
+
severityKind: "alert",
|
|
362
|
+
readiness: readiness,
|
|
363
|
+
});
|
|
144
364
|
default:
|
|
145
365
|
return { compliant: true, reason: "" };
|
|
146
366
|
}
|
|
@@ -239,141 +459,73 @@ export default class TeamComplianceService {
|
|
|
239
459
|
reason: hasPush ? "" : "No verified push notification device configured",
|
|
240
460
|
};
|
|
241
461
|
}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
rule.userEmailId ||
|
|
291
|
-
rule.userPushId);
|
|
292
|
-
});
|
|
293
|
-
if (!hasNotificationMethod) {
|
|
294
|
-
const severity = incidentSeverities.find((s) => {
|
|
295
|
-
var _a;
|
|
296
|
-
return ((_a = s._id) === null || _a === void 0 ? void 0 : _a.toString()) === severityId.toString();
|
|
297
|
-
});
|
|
298
|
-
const severityName = (severity === null || severity === void 0 ? void 0 : severity.name) || severityId.toString();
|
|
299
|
-
missingSeverities.push(severityName);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
if (missingSeverities.length > 0) {
|
|
462
|
+
/*
|
|
463
|
+
* Both on-call-rule compliance rules, answered off one readiness coverage
|
|
464
|
+
* array. A coverage cell is one (ruleType, severity) pair with the readiness
|
|
465
|
+
* service's verdict on it, which is what closes all four defects at once:
|
|
466
|
+
*
|
|
467
|
+
* - the cell is keyed BY ruleType, so a rule that only fires when the user
|
|
468
|
+
* goes off call can no longer be counted as incident coverage;
|
|
469
|
+
* - `hasRule` is true for a rule on any of the seven channels, so a responder
|
|
470
|
+
* whose only method is Telegram, WhatsApp or a webhook is no longer
|
|
471
|
+
* reported as having nothing;
|
|
472
|
+
* - the severities behind the cells are read with LIMIT_PER_PROJECT for both
|
|
473
|
+
* kinds, so the incident and alert halves can no longer disagree about how
|
|
474
|
+
* many severities a project may have;
|
|
475
|
+
* - and the whole array arrives from one batched read, rather than one findBy
|
|
476
|
+
* per severity per user.
|
|
477
|
+
*
|
|
478
|
+
* `isOptOut` is honoured as coverage, not as a gap. An opt-out row is the user
|
|
479
|
+
* saying "never notify me for this" on purpose; reporting that as a compliance
|
|
480
|
+
* failure would send an owner to fix something that is already the way it was
|
|
481
|
+
* asked to be. It matches the readiness contract, where Ready means every cell
|
|
482
|
+
* is covered OR explicitly muted.
|
|
483
|
+
*
|
|
484
|
+
* Readiness also reports cells for the two EPISODE rule types, and the
|
|
485
|
+
* ruleType filter drops them here. That is not an oversight: ComplianceRuleType
|
|
486
|
+
* has no episode rule, so the team's compliance settings never ask about
|
|
487
|
+
* episode coverage, and silently folding it into the incident or alert verdict
|
|
488
|
+
* would fail a team against a rule its owner never turned on. Episode coverage
|
|
489
|
+
* is visible on the readiness surfaces, where it is not gated by an opt-in
|
|
490
|
+
* per-team setting at all.
|
|
491
|
+
*
|
|
492
|
+
* The reason string names the missing severities in the order the readiness
|
|
493
|
+
* service reports them and falls back to the severity id when a severity has
|
|
494
|
+
* no name, because the owner reading it has to be able to act on it without
|
|
495
|
+
* opening anyone's settings.
|
|
496
|
+
*
|
|
497
|
+
* NO READINESS AT ALL is its own answer, and it is deliberately not a pass.
|
|
498
|
+
* The batch omits a user when it cannot resolve them - the ordinary cause
|
|
499
|
+
* being that they were removed from the project between the member read and
|
|
500
|
+
* the readiness read - and there are only two honest things to do with that:
|
|
501
|
+
* fail the whole page for everybody, or report the one row as unchecked. This
|
|
502
|
+
* feature exists because a responder can be silently unreachable, so reporting
|
|
503
|
+
* an unchecked responder as compliant would be the exact failure it was built
|
|
504
|
+
* to prevent, and failing the page over one departed member would take the
|
|
505
|
+
* other thirty-nine rows with it.
|
|
506
|
+
*/
|
|
507
|
+
static checkHasOnCallRules(data) {
|
|
508
|
+
const userReadiness = data.readiness;
|
|
509
|
+
if (!userReadiness) {
|
|
303
510
|
return {
|
|
304
511
|
compliant: false,
|
|
305
|
-
reason: `
|
|
512
|
+
reason: `Could not check ${data.severityKind} notification rules for this user - they may no longer be a member of this project`,
|
|
306
513
|
};
|
|
307
514
|
}
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
projectId: projectId,
|
|
318
|
-
},
|
|
319
|
-
select: {
|
|
320
|
-
_id: true,
|
|
321
|
-
name: true,
|
|
322
|
-
},
|
|
323
|
-
props: {
|
|
324
|
-
isRoot: true,
|
|
325
|
-
},
|
|
326
|
-
limit: 100, // Assuming reasonable limit for severities
|
|
327
|
-
skip: 0,
|
|
328
|
-
});
|
|
329
|
-
if (alertSeverities.length === 0) {
|
|
330
|
-
return { compliant: true, reason: "" }; // No alert severities configured
|
|
331
|
-
}
|
|
332
|
-
// Check if user has notification rules for all alert severities
|
|
333
|
-
const severityIds = alertSeverities.map((severity) => {
|
|
334
|
-
return severity._id;
|
|
515
|
+
const missingSeverities = userReadiness.coverage
|
|
516
|
+
.filter((cell) => {
|
|
517
|
+
return (cell.ruleType === data.notificationRuleType &&
|
|
518
|
+
!cell.hasRule &&
|
|
519
|
+
!cell.isOptOut);
|
|
520
|
+
})
|
|
521
|
+
.map((cell) => {
|
|
522
|
+
var _a;
|
|
523
|
+
return cell.severityName || ((_a = cell.severityId) === null || _a === void 0 ? void 0 : _a.toString()) || "";
|
|
335
524
|
});
|
|
336
|
-
const missingSeverities = [];
|
|
337
|
-
for (const severityId of severityIds) {
|
|
338
|
-
const notificationRules = await UserNotificationRuleService.findBy({
|
|
339
|
-
query: {
|
|
340
|
-
userId: userId,
|
|
341
|
-
projectId: projectId,
|
|
342
|
-
alertSeverityId: severityId,
|
|
343
|
-
},
|
|
344
|
-
select: {
|
|
345
|
-
_id: true,
|
|
346
|
-
userCallId: true,
|
|
347
|
-
userSmsId: true,
|
|
348
|
-
userEmailId: true,
|
|
349
|
-
userPushId: true,
|
|
350
|
-
},
|
|
351
|
-
props: {
|
|
352
|
-
isRoot: true,
|
|
353
|
-
},
|
|
354
|
-
limit: 1,
|
|
355
|
-
skip: 0,
|
|
356
|
-
});
|
|
357
|
-
// Check if user has at least one notification method configured for this severity
|
|
358
|
-
const hasNotificationMethod = notificationRules.some((rule) => {
|
|
359
|
-
return (rule.userCallId ||
|
|
360
|
-
rule.userSmsId ||
|
|
361
|
-
rule.userEmailId ||
|
|
362
|
-
rule.userPushId);
|
|
363
|
-
});
|
|
364
|
-
if (!hasNotificationMethod) {
|
|
365
|
-
const severity = alertSeverities.find((s) => {
|
|
366
|
-
var _a;
|
|
367
|
-
return ((_a = s._id) === null || _a === void 0 ? void 0 : _a.toString()) === severityId.toString();
|
|
368
|
-
});
|
|
369
|
-
const severityName = (severity === null || severity === void 0 ? void 0 : severity.name) || severityId.toString();
|
|
370
|
-
missingSeverities.push(severityName);
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
525
|
if (missingSeverities.length > 0) {
|
|
374
526
|
return {
|
|
375
527
|
compliant: false,
|
|
376
|
-
reason: `Missing notification rules for
|
|
528
|
+
reason: `Missing notification rules for ${data.severityKind} severities: ${missingSeverities.join(", ")}`,
|
|
377
529
|
};
|
|
378
530
|
}
|
|
379
531
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamComplianceService.js","sourceRoot":"","sources":["../../../../Server/Services/TeamComplianceService.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"TeamComplianceService.js","sourceRoot":"","sources":["../../../../Server/Services/TeamComplianceService.ts"],"names":[],"mappings":"AAAA,OAAO,sBAIN,MAAM,0BAA0B,CAAC;AAClC,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,OAAO,kBAAkB,MAAM,qCAAqC,CAAC;AACrE,OAAO,oBAAoB,MAAM,mDAAmD,CAAC;AACrF,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,mCAAmC,CAAC;AACzD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AA2BlE;;;;;;;GAOG;AACH,MAAM,4BAA4B,GAAW,EAAE,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAqB;IACjC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CACzC,MAAgB,EAChB,SAAmB;QAEnB;;;;;;;;;WASG;QACH,MAAM,IAAI,GAAyB,MAAM,WAAW,CAAC,SAAS,CAAC;YAC7D,KAAK,EAAE;gBACL,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACtB,SAAS,EAAE,SAAS;aACrB;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,GAAG,EAAE,IAAI;aACV;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC/C,CAAC;QAED;;;;;;;WAOG;QACH,MAAM,kBAAkB,GAGnB,MAAM,4BAA4B,CAAC,MAAM,CAAC;YAC7C,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;aACrB;YACD,MAAM,EAAE;gBACN,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;aACd;YACD,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,mBAAmB;QACnB,MAAM,WAAW,GAAsB,MAAM,iBAAiB,CAAC,MAAM,CAAC;YACpE,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;aACrB;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,IAAI;aACV;YACD,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH;;;;;;;;WAQG;QACH,IAAI,WAAW,CAAC,MAAM,IAAI,iBAAiB,EAAE,CAAC;YAC5C,MAAM,CAAC,KAAK,CACV,8BAA8B,iBAAiB,oBAAoB,MAAM,CAAC,QAAQ,EAAE,eAAe,SAAS,CAAC,QAAQ,EAAE,wJAAwJ,CAChR,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAoB,WAAW;aACzC,GAAG,CAAC,CAAC,MAAkB,EAAY,EAAE;YACpC,OAAO,MAAM,CAAC,MAAO,CAAC;QACxB,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,mBAAmB;QACnB,MAAM,KAAK,GAAgB,MAAM,WAAW,CAAC,MAAM,CAAC;YAClD,KAAK,EAAE;gBACL,GAAG,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC;aAC3B;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;gBACX,GAAG,EAAE,IAAI;gBACT,gBAAgB,EAAE,IAAI;aACvB;YACD,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GACZ,kBAAkB,CAAC,GAAG,CACpB,CAAC,OAGA,EAAsD,EAAE;YACvD,OAAO;gBACL,QAAQ,EAAE,OAAO,CAAC,QAAS;gBAC3B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;aAClC,CAAC;QACJ,CAAC,CACF,CAAC;QAEJ,MAAM,iBAAiB,GACrB,MAAM,IAAI,CAAC,oBAAoB,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAU,EAAY,EAAE;YACjC,OAAO,IAAI,CAAC,EAAG,CAAC;QAClB,CAAC,CAAC,EACF,SAAS,EACT,QAAQ,CACT,CAAC;QAEJ;;;;;;;;;WASG;QACH,MAAM,sBAAsB,GAC1B,MAAM,IAAI,CAAC,yBAAyB,CAClC,KAAK,EACL,4BAA4B,EAC5B,KAAK,EAAE,IAAU,EAAiC,EAAE;;YAClD,MAAM,gBAAgB,GAMlB,MAAM,IAAI,CAAC,mBAAmB,CAChC,IAAI,CAAC,EAAG,EACR,SAAS,EACT,QAAQ,EACR,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAG,CAAC,QAAQ,EAAE,CAAC,CAC3C,CAAC;YAEF,uBACE,MAAM,EAAE,IAAI,CAAC,EAAG,EAChB,QAAQ,EACN,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,QAAQ,EAAE,MAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,EAAE,CAAA,IAAI,cAAc,EACnE,SAAS,EAAE,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,EAAE,KAAI,EAAE,EACvC,oBAAoB,EAAE,IAAI,CAAC,gBAAgB,IACxC,gBAAgB,EACnB;QACJ,CAAC,CACF,CAAC;QAEJ,OAAO;YACL,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,cAAc;YACrC,kBAAkB,EAAE,QAAQ;YAC5B,sBAAsB;SACvB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACK,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,OAAwB,EACxB,SAAmB,EACnB,QAAmE;QAEnE,MAAM,iBAAiB,GAA+B,IAAI,GAAG,EAG1D,CAAC;QAEJ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,MAAM,cAAc,GAAY,QAAQ,CAAC,IAAI,CAC3C,CAAC,OAGA,EAAW,EAAE;YACZ,OAAO,CACL,OAAO,CAAC,OAAO;gBACf,CAAC,OAAO,CAAC,QAAQ,KAAK,kBAAkB,CAAC,sBAAsB;oBAC7D,OAAO,CAAC,QAAQ,KAAK,kBAAkB,CAAC,mBAAmB,CAAC,CAC/D,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,MAAM,MAAM,GAAgB,IAAI,GAAG,CACjC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAgB,EAAU,EAAE;YACvC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CACH,CAAC;QAEF,MAAM,OAAO,GACX,MAAM,sBAAsB,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAEjE,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,GAAG,GAAW,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAChD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAoB,OAAO,CAAC,MAAM,CAC7C,CAAC,MAAgB,EAAW,EAAE;YAC5B,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC,CACF,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED;;;;;;WAMG;QACH,MAAM,MAAM,GACV,MAAM,sBAAsB,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAExE,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YAC/B,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;QAChE,CAAC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAC5C,KAAoB,EACpB,cAAsB,EACtB,MAA0C;QAE1C,MAAM,OAAO,GAAmB,IAAI,KAAK,CAAU,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,MAAM,GAAW,CAAC,CAAC;QAEvB,MAAM,SAAS,GAAwB,KAAK,IAAmB,EAAE;YAC/D,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAW,MAAM,CAAC;gBAC7B,MAAM,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,GAAyB,EAAE,CAAC;QAEzC,KACE,IAAI,MAAM,GAAW,CAAC,EACtB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,EAC/C,MAAM,EAAE,EACR,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAE3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACtC,MAAgB,EAChB,SAAmB,EACnB,kBAGE,EACF,SAAoC;QAKpC,MAAM,iBAAiB,GAGlB,EAAE,CAAC;QAER,qCAAqC;QACrC,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GACf,MAAM,IAAI,CAAC,mBAAmB,CAC5B,MAAM,EACN,SAAS,EACT,OAAO,CAAC,QAAQ,EAChB,SAAS,CACV,CAAC;YAEJ,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC3B,iBAAiB,CAAC,IAAI,CAAC;oBACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;iBAC3B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,WAAW,EAAE,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAC3C,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACK,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACtC,MAAgB,EAChB,SAAmB,EACnB,QAA4B,EAC5B,SAAoC;QAEpC,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,kBAAkB,CAAC,0BAA0B;gBAChD,OAAO,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEjE,KAAK,kBAAkB,CAAC,wBAAwB;gBAC9C,OAAO,MAAM,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAE/D,KAAK,kBAAkB,CAAC,yBAAyB;gBAC/C,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEhE,KAAK,kBAAkB,CAAC,yBAAyB;gBAC/C,OAAO,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAEhE;;;;eAIG;YACH,KAAK,kBAAkB,CAAC,sBAAsB;gBAC5C,OAAO,IAAI,CAAC,mBAAmB,CAAC;oBAC9B,oBAAoB,EAAE,oBAAoB,CAAC,yBAAyB;oBACpE,YAAY,EAAE,UAAU;oBACxB,SAAS,EAAE,SAAS;iBACrB,CAAC,CAAC;YAEL,KAAK,kBAAkB,CAAC,mBAAmB;gBACzC,OAAO,IAAI,CAAC,mBAAmB,CAAC;oBAC9B,oBAAoB,EAAE,oBAAoB,CAAC,sBAAsB;oBACjE,YAAY,EAAE,OAAO;oBACrB,SAAS,EAAE,SAAS;iBACrB,CAAC,CAAC;YAEL;gBACE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAC5C,MAAgB,EAChB,SAAmB;QAEnB,MAAM,UAAU,GAA4B,MAAM,gBAAgB,CAAC,MAAM,CAAC;YACxE,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,IAAI;aACjB;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;aACV;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAY,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAChD,OAAO;YACL,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,QAAQ;gBACd,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,wDAAwD;SAC7D,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAC1C,MAAgB,EAChB,SAAmB;QAEnB,MAAM,OAAO,GAA4B,MAAM,cAAc,CAAC,MAAM,CAAC;YACnE,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,IAAI;aACjB;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;aACV;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,MAAM,MAAM,GAAY,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,OAAO;YACL,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,MAAM;gBACZ,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,2DAA2D;SAChE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAC3C,MAAgB,EAChB,SAAmB;QAEnB,MAAM,SAAS,GAA4B,MAAM,eAAe,CAAC,MAAM,CAAC;YACtE,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,IAAI;aACjB;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;aACV;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,MAAM,OAAO,GAAY,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9C,OAAO;YACL,SAAS,EAAE,OAAO;YAClB,MAAM,EAAE,OAAO;gBACb,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,4DAA4D;SACjE,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAC3C,MAAgB,EAChB,SAAmB;QAEnB,MAAM,QAAQ,GAA4B,MAAM,eAAe,CAAC,MAAM,CAAC;YACrE,KAAK,EAAE;gBACL,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;gBACpB,UAAU,EAAE,IAAI;aACjB;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;aACV;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,MAAM,OAAO,GAAY,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC7C,OAAO;YACL,SAAS,EAAE,OAAO;YAClB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iDAAiD;SACzE,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4CG;IACK,MAAM,CAAC,mBAAmB,CAAC,IAIlC;QACC,MAAM,aAAa,GAA8B,IAAI,CAAC,SAAS,CAAC;QAEhE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,mBAAmB,IAAI,CAAC,YAAY,oFAAoF;aACjI,CAAC;QACJ,CAAC;QAED,MAAM,iBAAiB,GAAkB,aAAa,CAAC,QAAQ;aAC5D,MAAM,CAAC,CAAC,IAA2B,EAAW,EAAE;YAC/C,OAAO,CACL,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,oBAAoB;gBAC3C,CAAC,IAAI,CAAC,OAAO;gBACb,CAAC,IAAI,CAAC,QAAQ,CACf,CAAC;QACJ,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAA2B,EAAU,EAAE;;YAC3C,OAAO,IAAI,CAAC,YAAY,KAAI,MAAA,IAAI,CAAC,UAAU,0CAAE,QAAQ,EAAE,CAAA,IAAI,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;QAEL,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,kCAAkC,IAAI,CAAC,YAAY,gBAAgB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC1G,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;CACF"}
|