@oneuptime/common 12.0.7 → 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} +184 -9
- package/Models/DatabaseModels/InventoryItemCustomField.ts +434 -0
- package/Models/DatabaseModels/{TelemetryEntityRelationship.ts → InventoryItemRelationship.ts} +33 -7
- 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/WorkflowLog.ts +38 -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/API/UserAPI.ts +16 -1
- 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/1786551733814-MigrationName.ts +41 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.ts +17 -0
- 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 +24 -0
- package/Server/Infrastructure/Queue.ts +78 -13
- package/Server/Middleware/MasterAdminAuthorization.ts +11 -6
- 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} +7 -4
- package/Server/Services/{TelemetryEntityService.ts → InventoryItemService.ts} +203 -21
- 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/API/Utils.ts +44 -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/Types/Workflow/TriggerCode.ts +12 -0
- package/Server/Types/Workflow/Workflow.ts +5 -0
- 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 +689 -0
- package/Server/Utils/Telemetry/TelemetryEntity.ts +160 -52
- package/Server/Utils/VM/VMAPI.ts +56 -8
- 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/MonitorCriteriaAttributeFilter.test.tsx +574 -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/API/UserProjectsAPI.test.ts +478 -4
- 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/InventoryItemManualCreate.test.ts +248 -0
- 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/ApiComponentHeaders.test.ts +192 -0
- 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/AnalyticsDatabase/QuerySettingsHelper.test.ts +152 -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 +322 -0
- package/Tests/Server/Utils/Telemetry/TelemetryEntity.test.ts +356 -39
- package/Tests/Server/Utils/VM/VMAPISubstitution.test.ts +243 -0
- 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/SerializableObjectDictionaryImportCycle.test.ts +197 -0
- package/Tests/Types/Telemetry/EntityTypeGroups.test.ts +140 -0
- 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/StepTrace.test.ts +235 -0
- package/Tests/Types/Workflow/TemplateSyntax.test.ts +491 -0
- package/Tests/Types/Workflow/Templates.test.ts +1218 -0
- package/Tests/UI/Components/ActiveFilterChipsOpenRoute.test.tsx +82 -0
- package/Tests/UI/Components/ComponentsModal.test.tsx +564 -7
- package/Tests/UI/Components/CustomTimeRangeModal.test.tsx +459 -0
- package/Tests/UI/Components/DictionaryAttributeFilterRow.test.tsx +477 -0
- package/Tests/UI/Components/Forms/AnchoredFieldPopupKeyboard.test.tsx +382 -0
- package/Tests/UI/Components/Forms/ColorPickerPicking.test.tsx +569 -0
- package/Tests/UI/Components/Forms/ValidationJSON.test.ts +241 -0
- package/Tests/UI/Components/KeyboardShortcut.test.tsx +95 -0
- package/Tests/UI/Components/LogDetailsPanelCrossSignal.test.tsx +448 -0
- package/Tests/UI/Components/LogTimeRangePicker.test.tsx +42 -0
- package/Tests/UI/Components/LogsTableCrossLinks.test.tsx +263 -0
- package/Tests/UI/Components/ModalPortalDismissal.test.tsx +90 -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/TelemetryTimeRangePicker.test.tsx +49 -7
- package/Tests/UI/Components/TimeRangePickerDropdown.test.tsx +325 -0
- package/Tests/UI/Components/Workflow/GraphLint.test.ts +893 -0
- package/Tests/UI/Components/Workflow/GraphLintSummary.test.ts +755 -0
- package/Tests/UI/Components/Workflow/ModelColumnEditor.test.ts +522 -0
- package/Tests/UI/Components/Workflow/ModelColumnEditorServerContract.test.ts +193 -0
- package/Tests/UI/Components/Workflow/ModelSchema.test.ts +388 -0
- package/Tests/UI/Components/Workflow/RunStatusWatcher.test.ts +210 -0
- 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/Utils.test.ts +192 -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/Monitor/MonitorStepCriteriaView.test.tsx +432 -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/NetworkDeviceRoleUtil.test.ts +514 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +727 -0
- package/Tests/Utils/Schema/AnalyticsModelSchema.test.ts +469 -0
- package/Tests/Utils/Schema/ModelSchema.test.ts +268 -0
- package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +698 -0
- package/Tests/Utils/Telemetry/EntityKeyNonTelemetry.test.ts +193 -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 +80 -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/SerializableObjectDictionary.ts +133 -39
- package/Types/Telemetry/EntityRelationshipType.ts +1 -1
- package/Types/Telemetry/EntitySource.ts +40 -0
- package/Types/Telemetry/EntityType.ts +28 -1
- package/Types/Telemetry/EntityTypeGroups.ts +65 -0
- package/Types/Workflow/Component.ts +29 -0
- package/Types/Workflow/Components/API.ts +35 -0
- package/Types/Workflow/Components/BaseModel.ts +77 -27
- 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/StepTrace.ts +181 -0
- package/Types/Workflow/TemplateSyntax.ts +543 -0
- package/Types/Workflow/Templates.ts +2368 -0
- 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/Date/CustomTimeRangeModal.tsx +278 -0
- package/UI/Components/Date/TimeRangePickerDropdown.tsx +250 -0
- package/UI/Components/Dictionary/Dictionary.tsx +71 -15
- package/UI/Components/FormModal/BasicFormModal.tsx +2 -1
- package/UI/Components/Forms/Fields/ColorPicker.tsx +66 -10
- package/UI/Components/Forms/Fields/IconPicker.tsx +48 -10
- package/UI/Components/Forms/Types/Field.ts +7 -0
- package/UI/Components/Forms/Validation.ts +63 -1
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +53 -3
- package/UI/Components/Input/Input.tsx +32 -3
- 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/LogTimeRangePicker.tsx +11 -216
- 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/Modal/Modal.tsx +37 -4
- 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/TelemetryViewer/components/TelemetryTimeRangePicker.tsx +11 -210
- package/UI/Components/Workflow/ArgumentsForm.tsx +341 -8
- package/UI/Components/Workflow/Component.tsx +28 -26
- package/UI/Components/Workflow/ComponentReturnValueViewer.tsx +26 -0
- package/UI/Components/Workflow/ComponentSettingsModal.tsx +79 -9
- 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 +628 -0
- package/UI/Components/Workflow/GraphLintSummary.ts +390 -0
- package/UI/Components/Workflow/ModelColumnEditor.tsx +528 -0
- package/UI/Components/Workflow/ModelSchema.ts +278 -0
- package/UI/Components/Workflow/RunForm.tsx +41 -7
- package/UI/Components/Workflow/RunStatusWatcher.ts +122 -0
- package/UI/Components/Workflow/StepTraceViewer.tsx +186 -0
- package/UI/Components/Workflow/UseRunWatch.ts +212 -0
- package/UI/Components/Workflow/Utils.ts +93 -1
- package/UI/Components/Workflow/VariableModal.tsx +6 -2
- package/UI/Components/Workflow/Workflow.tsx +126 -7
- 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/Types/LayeredDismissal.ts +31 -0
- package/UI/Types/UseAnchoredFieldPopup.ts +99 -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/NetworkDeviceRoleUtil.ts +533 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +917 -155
- package/Utils/Telemetry/CrossSignalScope.ts +502 -0
- package/Utils/Telemetry/EntityKey.ts +71 -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} +212 -29
- 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} +52 -25
- 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/WorkflowLog.js +39 -0
- package/build/dist/Models/DatabaseModels/WorkflowLog.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/API/UserAPI.js +16 -1
- package/build/dist/Server/API/UserAPI.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/1786551733814-MigrationName.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786551733814-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786559879134-AddWorkflowLogStepTrace.js.map +1 -0
- 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 +24 -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/MasterAdminAuthorization.js +11 -6
- package/build/dist/Server/Middleware/MasterAdminAuthorization.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} +9 -6
- package/build/dist/Server/Services/InventoryItemRelationshipService.js.map +1 -0
- package/build/dist/Server/Services/{TelemetryEntityService.js → InventoryItemService.js} +158 -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/API/Utils.js +28 -0
- package/build/dist/Server/Types/Workflow/Components/API/Utils.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/Types/Workflow/TriggerCode.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 +507 -0
- package/build/dist/Server/Utils/Telemetry/InventoryEntityRegistry.js.map +1 -0
- 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/VM/VMAPI.js +51 -4
- package/build/dist/Server/Utils/VM/VMAPI.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/SerializableObjectDictionary.js +133 -39
- package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityRelationshipType.js +1 -1
- package/build/dist/Types/Telemetry/EntitySource.js +39 -0
- package/build/dist/Types/Telemetry/EntitySource.js.map +1 -0
- package/build/dist/Types/Telemetry/EntityType.js +28 -1
- package/build/dist/Types/Telemetry/EntityType.js.map +1 -1
- package/build/dist/Types/Telemetry/EntityTypeGroups.js +57 -0
- package/build/dist/Types/Telemetry/EntityTypeGroups.js.map +1 -0
- package/build/dist/Types/Workflow/Component.js +21 -0
- package/build/dist/Types/Workflow/Component.js.map +1 -1
- package/build/dist/Types/Workflow/Components/API.js +35 -0
- package/build/dist/Types/Workflow/Components/API.js.map +1 -1
- package/build/dist/Types/Workflow/Components/BaseModel.js +68 -26
- 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/StepTrace.js +104 -0
- package/build/dist/Types/Workflow/StepTrace.js.map +1 -0
- package/build/dist/Types/Workflow/TemplateSyntax.js +338 -0
- package/build/dist/Types/Workflow/TemplateSyntax.js.map +1 -0
- package/build/dist/Types/Workflow/Templates.js +2111 -0
- package/build/dist/Types/Workflow/Templates.js.map +1 -0
- 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/Date/CustomTimeRangeModal.js +126 -0
- package/build/dist/UI/Components/Date/CustomTimeRangeModal.js.map +1 -0
- package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js +123 -0
- package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js.map +1 -0
- package/build/dist/UI/Components/Dictionary/Dictionary.js +47 -17
- 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/Forms/Fields/ColorPicker.js +52 -13
- package/build/dist/UI/Components/Forms/Fields/ColorPicker.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/IconPicker.js +28 -12
- package/build/dist/UI/Components/Forms/Fields/IconPicker.js.map +1 -1
- package/build/dist/UI/Components/Forms/Validation.js +44 -0
- package/build/dist/UI/Components/Forms/Validation.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 +13 -4
- 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/LogTimeRangePicker.js +5 -108
- package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.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/Modal/Modal.js +31 -5
- package/build/dist/UI/Components/Modal/Modal.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/TelemetryViewer/components/TelemetryTimeRangePicker.js +5 -105
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryTimeRangePicker.js.map +1 -1
- package/build/dist/UI/Components/Workflow/ArgumentsForm.js +261 -14
- package/build/dist/UI/Components/Workflow/ArgumentsForm.js.map +1 -1
- package/build/dist/UI/Components/Workflow/Component.js +20 -19
- package/build/dist/UI/Components/Workflow/Component.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 +35 -7
- 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 +425 -0
- package/build/dist/UI/Components/Workflow/GraphLint.js.map +1 -0
- 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 +320 -0
- package/build/dist/UI/Components/Workflow/ModelColumnEditor.js.map +1 -0
- package/build/dist/UI/Components/Workflow/ModelSchema.js +156 -0
- package/build/dist/UI/Components/Workflow/ModelSchema.js.map +1 -0
- package/build/dist/UI/Components/Workflow/RunForm.js +22 -6
- package/build/dist/UI/Components/Workflow/RunForm.js.map +1 -1
- package/build/dist/UI/Components/Workflow/RunStatusWatcher.js +76 -0
- package/build/dist/UI/Components/Workflow/RunStatusWatcher.js.map +1 -0
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js +76 -0
- package/build/dist/UI/Components/Workflow/StepTraceViewer.js.map +1 -0
- 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/Utils.js +73 -1
- package/build/dist/UI/Components/Workflow/Utils.js.map +1 -1
- 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 +92 -7
- 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/Types/LayeredDismissal.js +21 -0
- package/build/dist/UI/Types/LayeredDismissal.js.map +1 -0
- package/build/dist/UI/Types/UseAnchoredFieldPopup.js +74 -1
- package/build/dist/UI/Types/UseAnchoredFieldPopup.js.map +1 -1
- 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/NetworkDeviceRoleUtil.js +386 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +661 -126
- 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 +57 -5
- package/build/dist/Utils/Telemetry/EntityKey.js.map +1 -1
- 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
|
@@ -35,44 +35,391 @@ import NotificationRuleType from "../../Types/NotificationRule/NotificationRuleT
|
|
|
35
35
|
import ObjectID from "../../Types/ObjectID";
|
|
36
36
|
import Permission from "../../Types/Permission";
|
|
37
37
|
import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
|
|
38
|
+
/*
|
|
39
|
+
* Who, other than the owner, may look at a member's paging configuration, and
|
|
40
|
+
* who may repair it. Named once and spread everywhere so the table-level gate
|
|
41
|
+
* and the per-column gates cannot drift apart - a column quietly narrower than
|
|
42
|
+
* its table is how a required field becomes unwritable by the very permission
|
|
43
|
+
* that was supposed to be able to write it.
|
|
44
|
+
*/
|
|
45
|
+
const ADMIN_READ_PERMISSIONS = [
|
|
46
|
+
Permission.ProjectOwner,
|
|
47
|
+
Permission.ProjectAdmin,
|
|
48
|
+
Permission.ReadProjectUserNotificationRule,
|
|
49
|
+
];
|
|
50
|
+
const ADMIN_WRITE_PERMISSIONS = [
|
|
51
|
+
Permission.ProjectOwner,
|
|
52
|
+
Permission.ProjectAdmin,
|
|
53
|
+
Permission.EditProjectUserNotificationRule,
|
|
54
|
+
];
|
|
55
|
+
/*
|
|
56
|
+
* Two audiences, one table, and the difference between them is decided by which
|
|
57
|
+
* permission let the caller through rather than by two different endpoints.
|
|
58
|
+
*
|
|
59
|
+
* Permission.CurrentUser stays first in every list and
|
|
60
|
+
* @CurrentUserCanAccessRecordBy("userId") stays on the class, because together
|
|
61
|
+
* they are what keeps an ordinary member scoped. TenantPermission
|
|
62
|
+
* .isAccessGrantedOnlyByCurrentUser intersects what the caller holds with what
|
|
63
|
+
* the model accepts: a plain member matches nothing here but the auto-granted
|
|
64
|
+
* CurrentUser, so addCurrentUserScopeToQuery rewrites their query to
|
|
65
|
+
* `userId = me` and rejects outright any attempt to name somebody else. Adding
|
|
66
|
+
* the admin entries below does not weaken that - a member holds none of them,
|
|
67
|
+
* so their intersection is unchanged.
|
|
68
|
+
*
|
|
69
|
+
* For a caller who DOES hold one of them the intersection is no longer
|
|
70
|
+
* CurrentUser alone, the ownership predicate is not applied, and they can read
|
|
71
|
+
* and repair another member's rules. TeamMember already carries exactly this
|
|
72
|
+
* combination and behaves the same way, which is the reason to reuse the
|
|
73
|
+
* mechanism here rather than invent a second one.
|
|
74
|
+
*
|
|
75
|
+
* That capability is the entire point of this table being reachable by an
|
|
76
|
+
* administrator at all. An on-call policy can say "page the engineer on duty",
|
|
77
|
+
* but whether that page arrives is decided by rows in THIS table, and until now
|
|
78
|
+
* nobody but the engineer themselves could see them. A member with no matching
|
|
79
|
+
* rule was silently unpageable, and the only person able to notice was the
|
|
80
|
+
* person who was not being notified.
|
|
81
|
+
*
|
|
82
|
+
* ProjectOwner and ProjectAdmin are listed ALONGSIDE the granular permissions,
|
|
83
|
+
* not instead of them, and that is load-bearing rather than belt-and-braces.
|
|
84
|
+
* Existing project teams are seeded with ROLES only, so a brand-new granular
|
|
85
|
+
* permission is held by literally nobody on the day it ships; a list containing
|
|
86
|
+
* only EditProjectUserNotificationRule would leave the feature dead on arrival
|
|
87
|
+
* for every project that already exists.
|
|
88
|
+
*
|
|
89
|
+
* Note the asymmetry with the seven notification-method models this rule points
|
|
90
|
+
* at (UserEmail, UserSMS, UserCall, UserPush, UserWhatsApp, UserTelegram,
|
|
91
|
+
* UserWebhook). There, only `read` is widened. An administrator may see which
|
|
92
|
+
* methods a member has and repair the rules that route to them, but may never
|
|
93
|
+
* create or edit a method on somebody else's behalf. Letting them would hand
|
|
94
|
+
* any administrator a paging-hijack primitive - add a phone number or webhook
|
|
95
|
+
* you control, point the victim's rules at it, and their pages arrive at your
|
|
96
|
+
* device - and it would not even solve the problem it appears to solve, because
|
|
97
|
+
* a member with no methods needs to verify a device THEY own. The lever for
|
|
98
|
+
* that case is a reminder, not a keyboard.
|
|
99
|
+
*/
|
|
38
100
|
let UserNotificationRule = class UserNotificationRule extends BaseModel {
|
|
39
101
|
constructor() {
|
|
40
102
|
super(...arguments);
|
|
103
|
+
/*
|
|
104
|
+
* Writable at create, readable by an administrator, and permanently frozen
|
|
105
|
+
* afterwards - see the essay on `userId` below, which applies to this column
|
|
106
|
+
* for the same reason. A rule that could be moved between projects would
|
|
107
|
+
* escape the tenant scope it was created under.
|
|
108
|
+
*/
|
|
41
109
|
this.project = undefined;
|
|
110
|
+
/*
|
|
111
|
+
* update: [] - deliberately, and not merely inherited from the shape this
|
|
112
|
+
* model had before administrators could touch it. See `userId`.
|
|
113
|
+
*/
|
|
42
114
|
this.projectId = undefined;
|
|
115
|
+
/*
|
|
116
|
+
* The rule type, together with the severity relations further down, is the
|
|
117
|
+
* ADDRESS of this rule - the cell in the grid it occupies. Changing it would
|
|
118
|
+
* silently move a rule from one cell to another, which reads as an edit but
|
|
119
|
+
* behaves as a delete plus a create, so it stays create-only for everybody.
|
|
120
|
+
* An administrator repairing a member's setup adds and removes rules; they do
|
|
121
|
+
* not slide an existing one sideways.
|
|
122
|
+
*/
|
|
43
123
|
this.ruleType = undefined;
|
|
124
|
+
/*
|
|
125
|
+
* The relation spelling of the ownership column. It is `update: []` for the
|
|
126
|
+
* same reason `userId` is, and it has to be stated separately because the two
|
|
127
|
+
* are different decorated members over one physical column: an update
|
|
128
|
+
* expressed as `user: { _id }` is resolved by TypeORM to the same join column
|
|
129
|
+
* that `userId` writes. Closing one spelling and leaving the other open would
|
|
130
|
+
* close nothing at all.
|
|
131
|
+
*/
|
|
44
132
|
this.user = undefined;
|
|
133
|
+
/*
|
|
134
|
+
* READ THIS BEFORE WIDENING `update` HERE.
|
|
135
|
+
*
|
|
136
|
+
* This column is the ownership column - the one @CurrentUserCanAccessRecordBy
|
|
137
|
+
* points at, and therefore the one that decides whose pages this rule is
|
|
138
|
+
* consulted for. It is writable at CREATE, because provisioning a rule on
|
|
139
|
+
* behalf of a member who has none is the entire point of the administrator
|
|
140
|
+
* capability; it is writable at UPDATE by nobody, including the
|
|
141
|
+
* administrators who may otherwise rewrite every other field on the row.
|
|
142
|
+
*
|
|
143
|
+
* The temptation to mirror the widened lists onto this column is strong and
|
|
144
|
+
* wrong. An administrator who can re-point an EXISTING rule's userId does not
|
|
145
|
+
* gain a convenience, they gain a paging hijack: take a rule that already
|
|
146
|
+
* points at their own verified phone, move its userId to a colleague, and the
|
|
147
|
+
* colleague's pages now ring the administrator's handset - or take the
|
|
148
|
+
* colleague's rule and hand it to themselves. Nothing about that is
|
|
149
|
+
* distinguishable from a legitimate edit at the row level, and it is exactly
|
|
150
|
+
* the hole the create-side ownership gate was written to close
|
|
151
|
+
* (Common/Server/Types/Database/Permissions/CreatePermission.ts), reopened
|
|
152
|
+
* through a different verb.
|
|
153
|
+
*
|
|
154
|
+
* Create is safe by comparison only because it is guarded: the create gate
|
|
155
|
+
* defers to a real role permission rather than stamping the caller, and the
|
|
156
|
+
* service layer verifies that the supplied userId is a member of
|
|
157
|
+
* props.tenantId before the row is written. A rule pointed at a stranger from
|
|
158
|
+
* another project is refused there, not here.
|
|
159
|
+
*
|
|
160
|
+
* The correct way for an administrator to move a rule to a different member is
|
|
161
|
+
* to delete it and create another. That leaves two audit events instead of a
|
|
162
|
+
* silent mutation, which is the behaviour we want.
|
|
163
|
+
*/
|
|
45
164
|
this.userId = undefined;
|
|
165
|
+
/*
|
|
166
|
+
* Read is widened but create is not, because this column is stamped
|
|
167
|
+
* server-side from props.userId after the permission checks have run and is
|
|
168
|
+
* never accepted from a request body. Widening the read matters for a reason
|
|
169
|
+
* beyond completeness: it is what lets a member see that a rule on their own
|
|
170
|
+
* account was written by an administrator rather than by themselves.
|
|
171
|
+
*/
|
|
46
172
|
this.createdByUser = undefined;
|
|
47
173
|
this.createdByUserId = undefined;
|
|
48
174
|
this.deletedByUser = undefined;
|
|
49
175
|
this.deletedByUserId = undefined;
|
|
176
|
+
/*
|
|
177
|
+
* THE SEVEN METHOD RELATIONS BELOW ARE THE MOST DANGEROUS COLUMNS ON THIS
|
|
178
|
+
* MODEL. What follows applies to every one of them - userCall, userPush,
|
|
179
|
+
* userSms, userWhatsApp, userTelegram, userWebhook and userEmail, in both
|
|
180
|
+
* their relation and their `*Id` spelling - and is written out once here
|
|
181
|
+
* rather than fourteen times.
|
|
182
|
+
*
|
|
183
|
+
* A rule is a pair: the ownership column decides WHOSE pages select the row,
|
|
184
|
+
* and the method relation decides WHERE those pages are delivered. The two
|
|
185
|
+
* halves are read from different tables and nothing in the schema requires
|
|
186
|
+
* them to agree. A row owned by a victim and pointing at an administrator's
|
|
187
|
+
* own webhook or email is perfectly well-formed, and it silently redirects the
|
|
188
|
+
* victim's pages to the administrator's device. That is the whole hijack, and
|
|
189
|
+
* it needs no other bug to work.
|
|
190
|
+
*
|
|
191
|
+
* The `*Id` columns are open to UPDATE because repairing a member's routing is
|
|
192
|
+
* the capability this phase exists to provide: "your rules point at an email
|
|
193
|
+
* you never verified" is only actionable if somebody can re-point them at one
|
|
194
|
+
* the member did verify. But THIS ACCESS CONTROL LIST IS NOT WHAT MAKES THAT
|
|
195
|
+
* SAFE. A column list answers "may this caller write this column at all"; it
|
|
196
|
+
* never sees the VALUE being written, so it cannot tell a repair from a
|
|
197
|
+
* redirect.
|
|
198
|
+
*
|
|
199
|
+
* What makes it safe is a service-layer assertion: whenever one of these FKs
|
|
200
|
+
* is written, on create or on update, the referenced method row must belong to
|
|
201
|
+
* the same user as the rule's own userId - and on update that userId is
|
|
202
|
+
* re-read from the database rather than taken from the request body, because
|
|
203
|
+
* the body is exactly what an attacker controls. DO NOT REMOVE THAT ASSERTION
|
|
204
|
+
* BELIEVING THIS DECORATOR COVERS IT. It does not, and the failure is silent:
|
|
205
|
+
* everything keeps working, pages just start arriving somewhere else.
|
|
206
|
+
*
|
|
207
|
+
* The relation spellings stay `update: []` while the `*Id` spellings open.
|
|
208
|
+
* That is not an oversight. They are two decorated members over one physical
|
|
209
|
+
* join column, so leaving both writable would give the same hijack two
|
|
210
|
+
* different shapes to arrive in, and the ownership assertion would have to
|
|
211
|
+
* recognise both to be complete. One spelling in, one spelling out, and the
|
|
212
|
+
* check has exactly one form to validate.
|
|
213
|
+
*/
|
|
214
|
+
/*
|
|
215
|
+
* READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
|
|
216
|
+
*
|
|
217
|
+
* Widening the relation would re-open the exposure that reverting the seven
|
|
218
|
+
* method models was meant to close, by a different route. A read of this
|
|
219
|
+
* table is NOT pinned to the caller's own rows for an administrator - that is
|
|
220
|
+
* the whole point of the phase - and QueryPermission.checkRelationQueryPermission
|
|
221
|
+
* authorises each nested field with relatedModel.hasReadPermissions, a
|
|
222
|
+
* name-intersection in which Permission.CurrentUser is auto-granted to every
|
|
223
|
+
* authenticated caller. So `select: { userCall: { phone: true } }` on somebody
|
|
224
|
+
* else's rule would hand back their raw phone number with no row scope
|
|
225
|
+
* anywhere in the path.
|
|
226
|
+
*
|
|
227
|
+
* The FK below stays admin-readable: an id is not sensitive, and it is what
|
|
228
|
+
* correlates a rule with the masked entry in OnCallReadinessService's
|
|
229
|
+
* ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
|
|
230
|
+
* That masked payload is the administrator's sanctioned view of a method.
|
|
231
|
+
*/
|
|
50
232
|
this.userCall = undefined;
|
|
233
|
+
// Re-pointable by an administrator. Read the essay above `userCall` first.
|
|
51
234
|
this.userCallId = undefined;
|
|
235
|
+
/*
|
|
236
|
+
* READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
|
|
237
|
+
*
|
|
238
|
+
* Widening the relation would re-open the exposure that reverting the seven
|
|
239
|
+
* method models was meant to close, by a different route. A read of this
|
|
240
|
+
* table is NOT pinned to the caller's own rows for an administrator - that is
|
|
241
|
+
* the whole point of the phase - and QueryPermission.checkRelationQueryPermission
|
|
242
|
+
* authorises each nested field with relatedModel.hasReadPermissions, a
|
|
243
|
+
* name-intersection in which Permission.CurrentUser is auto-granted to every
|
|
244
|
+
* authenticated caller. So `select: { userPush: { deviceToken: true } }` on somebody
|
|
245
|
+
* else's rule would hand back their raw device token with no row scope
|
|
246
|
+
* anywhere in the path.
|
|
247
|
+
*
|
|
248
|
+
* The FK below stays admin-readable: an id is not sensitive, and it is what
|
|
249
|
+
* correlates a rule with the masked entry in OnCallReadinessService's
|
|
250
|
+
* ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
|
|
251
|
+
* That masked payload is the administrator's sanctioned view of a method.
|
|
252
|
+
*/
|
|
52
253
|
this.userPush = undefined;
|
|
254
|
+
// Re-pointable by an administrator. Read the essay above `userCall` first.
|
|
53
255
|
this.userPushId = undefined;
|
|
256
|
+
/*
|
|
257
|
+
* READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
|
|
258
|
+
*
|
|
259
|
+
* Widening the relation would re-open the exposure that reverting the seven
|
|
260
|
+
* method models was meant to close, by a different route. A read of this
|
|
261
|
+
* table is NOT pinned to the caller's own rows for an administrator - that is
|
|
262
|
+
* the whole point of the phase - and QueryPermission.checkRelationQueryPermission
|
|
263
|
+
* authorises each nested field with relatedModel.hasReadPermissions, a
|
|
264
|
+
* name-intersection in which Permission.CurrentUser is auto-granted to every
|
|
265
|
+
* authenticated caller. So `select: { userSms: { phone: true } }` on somebody
|
|
266
|
+
* else's rule would hand back their raw phone number with no row scope
|
|
267
|
+
* anywhere in the path.
|
|
268
|
+
*
|
|
269
|
+
* The FK below stays admin-readable: an id is not sensitive, and it is what
|
|
270
|
+
* correlates a rule with the masked entry in OnCallReadinessService's
|
|
271
|
+
* ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
|
|
272
|
+
* That masked payload is the administrator's sanctioned view of a method.
|
|
273
|
+
*/
|
|
54
274
|
this.userSms = undefined;
|
|
275
|
+
// Re-pointable by an administrator. Read the essay above `userCall` first.
|
|
55
276
|
this.userSmsId = undefined;
|
|
277
|
+
/*
|
|
278
|
+
* READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
|
|
279
|
+
*
|
|
280
|
+
* Widening the relation would re-open the exposure that reverting the seven
|
|
281
|
+
* method models was meant to close, by a different route. A read of this
|
|
282
|
+
* table is NOT pinned to the caller's own rows for an administrator - that is
|
|
283
|
+
* the whole point of the phase - and QueryPermission.checkRelationQueryPermission
|
|
284
|
+
* authorises each nested field with relatedModel.hasReadPermissions, a
|
|
285
|
+
* name-intersection in which Permission.CurrentUser is auto-granted to every
|
|
286
|
+
* authenticated caller. So `select: { userWhatsApp: { phone: true } }` on somebody
|
|
287
|
+
* else's rule would hand back their raw phone number with no row scope
|
|
288
|
+
* anywhere in the path.
|
|
289
|
+
*
|
|
290
|
+
* The FK below stays admin-readable: an id is not sensitive, and it is what
|
|
291
|
+
* correlates a rule with the masked entry in OnCallReadinessService's
|
|
292
|
+
* ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
|
|
293
|
+
* That masked payload is the administrator's sanctioned view of a method.
|
|
294
|
+
*/
|
|
56
295
|
this.userWhatsApp = undefined;
|
|
296
|
+
// Re-pointable by an administrator. Read the essay above `userCall` first.
|
|
57
297
|
this.userWhatsAppId = undefined;
|
|
298
|
+
/*
|
|
299
|
+
* READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
|
|
300
|
+
*
|
|
301
|
+
* Widening the relation would re-open the exposure that reverting the seven
|
|
302
|
+
* method models was meant to close, by a different route. A read of this
|
|
303
|
+
* table is NOT pinned to the caller's own rows for an administrator - that is
|
|
304
|
+
* the whole point of the phase - and QueryPermission.checkRelationQueryPermission
|
|
305
|
+
* authorises each nested field with relatedModel.hasReadPermissions, a
|
|
306
|
+
* name-intersection in which Permission.CurrentUser is auto-granted to every
|
|
307
|
+
* authenticated caller. So `select: { userTelegram: { telegramChatId: true } }` on somebody
|
|
308
|
+
* else's rule would hand back their raw Telegram chat id with no row scope
|
|
309
|
+
* anywhere in the path.
|
|
310
|
+
*
|
|
311
|
+
* The FK below stays admin-readable: an id is not sensitive, and it is what
|
|
312
|
+
* correlates a rule with the masked entry in OnCallReadinessService's
|
|
313
|
+
* ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
|
|
314
|
+
* That masked payload is the administrator's sanctioned view of a method.
|
|
315
|
+
*/
|
|
58
316
|
this.userTelegram = undefined;
|
|
317
|
+
// Re-pointable by an administrator. Read the essay above `userCall` first.
|
|
59
318
|
this.userTelegramId = undefined;
|
|
319
|
+
/*
|
|
320
|
+
* READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
|
|
321
|
+
*
|
|
322
|
+
* Widening the relation would re-open the exposure that reverting the seven
|
|
323
|
+
* method models was meant to close, by a different route. A read of this
|
|
324
|
+
* table is NOT pinned to the caller's own rows for an administrator - that is
|
|
325
|
+
* the whole point of the phase - and QueryPermission.checkRelationQueryPermission
|
|
326
|
+
* authorises each nested field with relatedModel.hasReadPermissions, a
|
|
327
|
+
* name-intersection in which Permission.CurrentUser is auto-granted to every
|
|
328
|
+
* authenticated caller. So `select: { userWebhook: { webhookUrl: true } }` on somebody
|
|
329
|
+
* else's rule would hand back their raw webhook URL with no row scope
|
|
330
|
+
* anywhere in the path.
|
|
331
|
+
*
|
|
332
|
+
* The FK below stays admin-readable: an id is not sensitive, and it is what
|
|
333
|
+
* correlates a rule with the masked entry in OnCallReadinessService's
|
|
334
|
+
* ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
|
|
335
|
+
* That masked payload is the administrator's sanctioned view of a method.
|
|
336
|
+
*/
|
|
60
337
|
this.userWebhook = undefined;
|
|
338
|
+
// Re-pointable by an administrator. Read the essay above `userCall` first.
|
|
61
339
|
this.userWebhookId = undefined;
|
|
340
|
+
/*
|
|
341
|
+
* READ IS OWNER-ONLY ON THE RELATION, EVEN THOUGH THIS TABLE IS ADMIN-READABLE.
|
|
342
|
+
*
|
|
343
|
+
* Widening the relation would re-open the exposure that reverting the seven
|
|
344
|
+
* method models was meant to close, by a different route. A read of this
|
|
345
|
+
* table is NOT pinned to the caller's own rows for an administrator - that is
|
|
346
|
+
* the whole point of the phase - and QueryPermission.checkRelationQueryPermission
|
|
347
|
+
* authorises each nested field with relatedModel.hasReadPermissions, a
|
|
348
|
+
* name-intersection in which Permission.CurrentUser is auto-granted to every
|
|
349
|
+
* authenticated caller. So `select: { userEmail: { email: true } }` on somebody
|
|
350
|
+
* else's rule would hand back their raw email address with no row scope
|
|
351
|
+
* anywhere in the path.
|
|
352
|
+
*
|
|
353
|
+
* The FK below stays admin-readable: an id is not sensitive, and it is what
|
|
354
|
+
* correlates a rule with the masked entry in OnCallReadinessService's
|
|
355
|
+
* ReadinessMethod { methodId, methodType, maskedIdentifier, isVerified }.
|
|
356
|
+
* That masked payload is the administrator's sanctioned view of a method.
|
|
357
|
+
*/
|
|
62
358
|
this.userEmail = undefined;
|
|
359
|
+
// Re-pointable by an administrator. Read the essay above `userCall` first.
|
|
63
360
|
this.userEmailId = undefined;
|
|
361
|
+
/*
|
|
362
|
+
* The escalation delay, and one of only two plain preference columns an
|
|
363
|
+
* administrator may rewrite. It is here rather than frozen because "you are
|
|
364
|
+
* on the escalation policy but your first rule waits thirty minutes" is a
|
|
365
|
+
* real, common misconfiguration, and correcting a number carries none of the
|
|
366
|
+
* redirect risk the method relations do - the page still goes to the same
|
|
367
|
+
* place, it just goes sooner.
|
|
368
|
+
*/
|
|
64
369
|
this.notifyAfterMinutes = undefined;
|
|
370
|
+
/*
|
|
371
|
+
* Part of the rule's address, like `ruleType` - create-only for everybody.
|
|
372
|
+
*/
|
|
65
373
|
this.incidentSeverity = undefined;
|
|
66
374
|
this.incidentSeverityId = undefined;
|
|
67
375
|
// alert severity.
|
|
68
376
|
this.alertSeverity = undefined;
|
|
69
377
|
this.alertSeverityId = undefined;
|
|
378
|
+
/*
|
|
379
|
+
* An opt-out row is a rule that exists in order to send nothing. It carries a
|
|
380
|
+
* `ruleType` and a severity exactly like a normal rule, sets `isOptOut` to true, and
|
|
381
|
+
* holds NO notification-method relation at all — there is no userEmail, userSms,
|
|
382
|
+
* userCall, userPush, userWhatsApp, userTelegram or userWebhook on it, and that
|
|
383
|
+
* absence is the point rather than a misconfiguration.
|
|
384
|
+
*
|
|
385
|
+
* It exists because "this user has zero rules matching this ruleType and severity" is
|
|
386
|
+
* otherwise two completely different situations wearing the same clothes. Almost
|
|
387
|
+
* always it means the user never configured anything for that cell — a severity added
|
|
388
|
+
* after they joined, an episode rule type they never opened the page for — and a page
|
|
389
|
+
* routed to them must still land somewhere. Occasionally it means the user genuinely
|
|
390
|
+
* asked not to be woken for that cell, and paging them anyway would be the bug.
|
|
391
|
+
*
|
|
392
|
+
* Before this column the runtime could not tell those apart, so it chose the safe-
|
|
393
|
+
* looking option and delivered nothing, which is how pages were being lost silently.
|
|
394
|
+
* Making deliberate silence expressible as a row is the precondition for the fallback:
|
|
395
|
+
* once "do not page me" has somewhere to live, the remaining zero-row cases can be
|
|
396
|
+
* treated as misconfiguration and rescued by notifying the user on whatever verified
|
|
397
|
+
* method they do have.
|
|
398
|
+
*
|
|
399
|
+
* Note the `update` permission below. Every column on this model except
|
|
400
|
+
* `notifyAfterMinutes` is `update: []`, so copying a neighbour's access control would
|
|
401
|
+
* have left this flag writable only at create time — a user could opt out but never
|
|
402
|
+
* opt back in without deleting and recreating the row. Muting and unmuting is exactly
|
|
403
|
+
* the kind of preference that gets toggled, so it is explicitly updatable by its owner.
|
|
404
|
+
*
|
|
405
|
+
* An administrator may toggle it too, and that deserves a word because it looks
|
|
406
|
+
* like the one place where the admin capability could be used to silence somebody.
|
|
407
|
+
* It could - but an administrator who wanted a colleague unpageable has a far
|
|
408
|
+
* blunter tool available in the same breath, which is to delete their rules
|
|
409
|
+
* outright, and that is a capability nobody proposes withholding. The reason
|
|
410
|
+
* this direction matters more is the opposite one: a member who opted out of a
|
|
411
|
+
* severity months ago and forgot is precisely the invisible gap this phase
|
|
412
|
+
* exists to close, and leaving an administrator able to SEE the opt-out but not
|
|
413
|
+
* lift it would stop one step short of the fix. Both directions are audited
|
|
414
|
+
* against props.userId, so a suppression an administrator made is attributable.
|
|
415
|
+
*/
|
|
416
|
+
this.isOptOut = undefined;
|
|
70
417
|
}
|
|
71
418
|
};
|
|
72
419
|
__decorate([
|
|
73
420
|
ColumnAccessControl({
|
|
74
|
-
create: [Permission.CurrentUser],
|
|
75
|
-
read: [Permission.CurrentUser],
|
|
421
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
422
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
76
423
|
update: [],
|
|
77
424
|
}),
|
|
78
425
|
TableColumn({
|
|
@@ -95,8 +442,8 @@ __decorate([
|
|
|
95
442
|
], UserNotificationRule.prototype, "project", void 0);
|
|
96
443
|
__decorate([
|
|
97
444
|
ColumnAccessControl({
|
|
98
|
-
create: [Permission.CurrentUser],
|
|
99
|
-
read: [Permission.CurrentUser],
|
|
445
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
446
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
100
447
|
update: [],
|
|
101
448
|
}),
|
|
102
449
|
Index(),
|
|
@@ -117,8 +464,8 @@ __decorate([
|
|
|
117
464
|
], UserNotificationRule.prototype, "projectId", void 0);
|
|
118
465
|
__decorate([
|
|
119
466
|
ColumnAccessControl({
|
|
120
|
-
create: [Permission.CurrentUser],
|
|
121
|
-
read: [Permission.CurrentUser],
|
|
467
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
468
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
122
469
|
update: [],
|
|
123
470
|
}),
|
|
124
471
|
TableColumn({
|
|
@@ -139,8 +486,8 @@ __decorate([
|
|
|
139
486
|
], UserNotificationRule.prototype, "ruleType", void 0);
|
|
140
487
|
__decorate([
|
|
141
488
|
ColumnAccessControl({
|
|
142
|
-
create: [Permission.CurrentUser],
|
|
143
|
-
read: [Permission.CurrentUser],
|
|
489
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
490
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
144
491
|
update: [],
|
|
145
492
|
}),
|
|
146
493
|
TableColumn({
|
|
@@ -163,8 +510,8 @@ __decorate([
|
|
|
163
510
|
], UserNotificationRule.prototype, "user", void 0);
|
|
164
511
|
__decorate([
|
|
165
512
|
ColumnAccessControl({
|
|
166
|
-
create: [Permission.CurrentUser],
|
|
167
|
-
read: [Permission.CurrentUser],
|
|
513
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
514
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
168
515
|
update: [],
|
|
169
516
|
}),
|
|
170
517
|
TableColumn({
|
|
@@ -184,7 +531,7 @@ __decorate([
|
|
|
184
531
|
__decorate([
|
|
185
532
|
ColumnAccessControl({
|
|
186
533
|
create: [Permission.CurrentUser],
|
|
187
|
-
read: [Permission.CurrentUser],
|
|
534
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
188
535
|
update: [],
|
|
189
536
|
}),
|
|
190
537
|
TableColumn({
|
|
@@ -208,7 +555,7 @@ __decorate([
|
|
|
208
555
|
__decorate([
|
|
209
556
|
ColumnAccessControl({
|
|
210
557
|
create: [Permission.CurrentUser],
|
|
211
|
-
read: [Permission.CurrentUser],
|
|
558
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
212
559
|
update: [],
|
|
213
560
|
}),
|
|
214
561
|
TableColumn({
|
|
@@ -270,7 +617,7 @@ __decorate([
|
|
|
270
617
|
], UserNotificationRule.prototype, "deletedByUserId", void 0);
|
|
271
618
|
__decorate([
|
|
272
619
|
ColumnAccessControl({
|
|
273
|
-
create: [Permission.CurrentUser],
|
|
620
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
274
621
|
read: [Permission.CurrentUser],
|
|
275
622
|
update: [],
|
|
276
623
|
}),
|
|
@@ -294,9 +641,9 @@ __decorate([
|
|
|
294
641
|
], UserNotificationRule.prototype, "userCall", void 0);
|
|
295
642
|
__decorate([
|
|
296
643
|
ColumnAccessControl({
|
|
297
|
-
create: [Permission.CurrentUser],
|
|
298
|
-
read: [Permission.CurrentUser],
|
|
299
|
-
update: [],
|
|
644
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
645
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
646
|
+
update: [...ADMIN_WRITE_PERMISSIONS],
|
|
300
647
|
}),
|
|
301
648
|
Index(),
|
|
302
649
|
TableColumn({
|
|
@@ -316,7 +663,7 @@ __decorate([
|
|
|
316
663
|
], UserNotificationRule.prototype, "userCallId", void 0);
|
|
317
664
|
__decorate([
|
|
318
665
|
ColumnAccessControl({
|
|
319
|
-
create: [Permission.CurrentUser],
|
|
666
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
320
667
|
read: [Permission.CurrentUser],
|
|
321
668
|
update: [],
|
|
322
669
|
}),
|
|
@@ -340,9 +687,9 @@ __decorate([
|
|
|
340
687
|
], UserNotificationRule.prototype, "userPush", void 0);
|
|
341
688
|
__decorate([
|
|
342
689
|
ColumnAccessControl({
|
|
343
|
-
create: [Permission.CurrentUser],
|
|
344
|
-
read: [Permission.CurrentUser],
|
|
345
|
-
update: [],
|
|
690
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
691
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
692
|
+
update: [...ADMIN_WRITE_PERMISSIONS],
|
|
346
693
|
}),
|
|
347
694
|
Index(),
|
|
348
695
|
TableColumn({
|
|
@@ -362,7 +709,7 @@ __decorate([
|
|
|
362
709
|
], UserNotificationRule.prototype, "userPushId", void 0);
|
|
363
710
|
__decorate([
|
|
364
711
|
ColumnAccessControl({
|
|
365
|
-
create: [Permission.CurrentUser],
|
|
712
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
366
713
|
read: [Permission.CurrentUser],
|
|
367
714
|
update: [],
|
|
368
715
|
}),
|
|
@@ -386,9 +733,9 @@ __decorate([
|
|
|
386
733
|
], UserNotificationRule.prototype, "userSms", void 0);
|
|
387
734
|
__decorate([
|
|
388
735
|
ColumnAccessControl({
|
|
389
|
-
create: [Permission.CurrentUser],
|
|
390
|
-
read: [Permission.CurrentUser],
|
|
391
|
-
update: [],
|
|
736
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
737
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
738
|
+
update: [...ADMIN_WRITE_PERMISSIONS],
|
|
392
739
|
}),
|
|
393
740
|
Index(),
|
|
394
741
|
TableColumn({
|
|
@@ -408,7 +755,7 @@ __decorate([
|
|
|
408
755
|
], UserNotificationRule.prototype, "userSmsId", void 0);
|
|
409
756
|
__decorate([
|
|
410
757
|
ColumnAccessControl({
|
|
411
|
-
create: [Permission.CurrentUser],
|
|
758
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
412
759
|
read: [Permission.CurrentUser],
|
|
413
760
|
update: [],
|
|
414
761
|
}),
|
|
@@ -432,9 +779,9 @@ __decorate([
|
|
|
432
779
|
], UserNotificationRule.prototype, "userWhatsApp", void 0);
|
|
433
780
|
__decorate([
|
|
434
781
|
ColumnAccessControl({
|
|
435
|
-
create: [Permission.CurrentUser],
|
|
436
|
-
read: [Permission.CurrentUser],
|
|
437
|
-
update: [],
|
|
782
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
783
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
784
|
+
update: [...ADMIN_WRITE_PERMISSIONS],
|
|
438
785
|
}),
|
|
439
786
|
Index(),
|
|
440
787
|
TableColumn({
|
|
@@ -454,7 +801,7 @@ __decorate([
|
|
|
454
801
|
], UserNotificationRule.prototype, "userWhatsAppId", void 0);
|
|
455
802
|
__decorate([
|
|
456
803
|
ColumnAccessControl({
|
|
457
|
-
create: [Permission.CurrentUser],
|
|
804
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
458
805
|
read: [Permission.CurrentUser],
|
|
459
806
|
update: [],
|
|
460
807
|
}),
|
|
@@ -478,9 +825,9 @@ __decorate([
|
|
|
478
825
|
], UserNotificationRule.prototype, "userTelegram", void 0);
|
|
479
826
|
__decorate([
|
|
480
827
|
ColumnAccessControl({
|
|
481
|
-
create: [Permission.CurrentUser],
|
|
482
|
-
read: [Permission.CurrentUser],
|
|
483
|
-
update: [],
|
|
828
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
829
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
830
|
+
update: [...ADMIN_WRITE_PERMISSIONS],
|
|
484
831
|
}),
|
|
485
832
|
Index(),
|
|
486
833
|
TableColumn({
|
|
@@ -500,7 +847,7 @@ __decorate([
|
|
|
500
847
|
], UserNotificationRule.prototype, "userTelegramId", void 0);
|
|
501
848
|
__decorate([
|
|
502
849
|
ColumnAccessControl({
|
|
503
|
-
create: [Permission.CurrentUser],
|
|
850
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
504
851
|
read: [Permission.CurrentUser],
|
|
505
852
|
update: [],
|
|
506
853
|
}),
|
|
@@ -524,9 +871,9 @@ __decorate([
|
|
|
524
871
|
], UserNotificationRule.prototype, "userWebhook", void 0);
|
|
525
872
|
__decorate([
|
|
526
873
|
ColumnAccessControl({
|
|
527
|
-
create: [Permission.CurrentUser],
|
|
528
|
-
read: [Permission.CurrentUser],
|
|
529
|
-
update: [],
|
|
874
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
875
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
876
|
+
update: [...ADMIN_WRITE_PERMISSIONS],
|
|
530
877
|
}),
|
|
531
878
|
Index(),
|
|
532
879
|
TableColumn({
|
|
@@ -546,7 +893,7 @@ __decorate([
|
|
|
546
893
|
], UserNotificationRule.prototype, "userWebhookId", void 0);
|
|
547
894
|
__decorate([
|
|
548
895
|
ColumnAccessControl({
|
|
549
|
-
create: [Permission.CurrentUser],
|
|
896
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
550
897
|
read: [Permission.CurrentUser],
|
|
551
898
|
update: [],
|
|
552
899
|
}),
|
|
@@ -570,9 +917,9 @@ __decorate([
|
|
|
570
917
|
], UserNotificationRule.prototype, "userEmail", void 0);
|
|
571
918
|
__decorate([
|
|
572
919
|
ColumnAccessControl({
|
|
573
|
-
create: [Permission.CurrentUser],
|
|
574
|
-
read: [Permission.CurrentUser],
|
|
575
|
-
update: [],
|
|
920
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
921
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
922
|
+
update: [...ADMIN_WRITE_PERMISSIONS],
|
|
576
923
|
}),
|
|
577
924
|
Index(),
|
|
578
925
|
TableColumn({
|
|
@@ -592,9 +939,9 @@ __decorate([
|
|
|
592
939
|
], UserNotificationRule.prototype, "userEmailId", void 0);
|
|
593
940
|
__decorate([
|
|
594
941
|
ColumnAccessControl({
|
|
595
|
-
create: [Permission.CurrentUser],
|
|
596
|
-
read: [Permission.CurrentUser],
|
|
597
|
-
update: [Permission.CurrentUser],
|
|
942
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
943
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
944
|
+
update: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
598
945
|
}),
|
|
599
946
|
Index(),
|
|
600
947
|
TableColumn({
|
|
@@ -615,8 +962,8 @@ __decorate([
|
|
|
615
962
|
], UserNotificationRule.prototype, "notifyAfterMinutes", void 0);
|
|
616
963
|
__decorate([
|
|
617
964
|
ColumnAccessControl({
|
|
618
|
-
create: [Permission.CurrentUser],
|
|
619
|
-
read: [Permission.CurrentUser],
|
|
965
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
966
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
620
967
|
update: [],
|
|
621
968
|
}),
|
|
622
969
|
TableColumn({
|
|
@@ -639,8 +986,8 @@ __decorate([
|
|
|
639
986
|
], UserNotificationRule.prototype, "incidentSeverity", void 0);
|
|
640
987
|
__decorate([
|
|
641
988
|
ColumnAccessControl({
|
|
642
|
-
create: [Permission.CurrentUser],
|
|
643
|
-
read: [Permission.CurrentUser],
|
|
989
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
990
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
644
991
|
update: [],
|
|
645
992
|
}),
|
|
646
993
|
Index(),
|
|
@@ -661,8 +1008,8 @@ __decorate([
|
|
|
661
1008
|
], UserNotificationRule.prototype, "incidentSeverityId", void 0);
|
|
662
1009
|
__decorate([
|
|
663
1010
|
ColumnAccessControl({
|
|
664
|
-
create: [Permission.CurrentUser],
|
|
665
|
-
read: [Permission.CurrentUser],
|
|
1011
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
1012
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
666
1013
|
update: [],
|
|
667
1014
|
}),
|
|
668
1015
|
TableColumn({
|
|
@@ -685,8 +1032,8 @@ __decorate([
|
|
|
685
1032
|
], UserNotificationRule.prototype, "alertSeverity", void 0);
|
|
686
1033
|
__decorate([
|
|
687
1034
|
ColumnAccessControl({
|
|
688
|
-
create: [Permission.CurrentUser],
|
|
689
|
-
read: [Permission.CurrentUser],
|
|
1035
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
1036
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
690
1037
|
update: [],
|
|
691
1038
|
}),
|
|
692
1039
|
Index(),
|
|
@@ -705,13 +1052,35 @@ __decorate([
|
|
|
705
1052
|
}),
|
|
706
1053
|
__metadata("design:type", ObjectID)
|
|
707
1054
|
], UserNotificationRule.prototype, "alertSeverityId", void 0);
|
|
1055
|
+
__decorate([
|
|
1056
|
+
ColumnAccessControl({
|
|
1057
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
1058
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
1059
|
+
update: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
1060
|
+
}),
|
|
1061
|
+
TableColumn({
|
|
1062
|
+
type: TableColumnType.Boolean,
|
|
1063
|
+
required: false,
|
|
1064
|
+
isDefaultValueColumn: true,
|
|
1065
|
+
title: "Opt Out of Notifications",
|
|
1066
|
+
description: "When true, this rule deliberately suppresses notifications for its rule type and severity instead of delivering any. A rule with this set carries no notification method.",
|
|
1067
|
+
defaultValue: false,
|
|
1068
|
+
example: false,
|
|
1069
|
+
}),
|
|
1070
|
+
Column({
|
|
1071
|
+
type: ColumnType.Boolean,
|
|
1072
|
+
nullable: true,
|
|
1073
|
+
default: false,
|
|
1074
|
+
}),
|
|
1075
|
+
__metadata("design:type", Boolean)
|
|
1076
|
+
], UserNotificationRule.prototype, "isOptOut", void 0);
|
|
708
1077
|
UserNotificationRule = __decorate([
|
|
709
1078
|
TenantColumn("projectId"),
|
|
710
1079
|
TableAccessControl({
|
|
711
|
-
create: [Permission.CurrentUser],
|
|
712
|
-
read: [Permission.CurrentUser],
|
|
713
|
-
delete: [Permission.CurrentUser],
|
|
714
|
-
update: [Permission.CurrentUser],
|
|
1080
|
+
create: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
1081
|
+
read: [Permission.CurrentUser, ...ADMIN_READ_PERMISSIONS],
|
|
1082
|
+
delete: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
1083
|
+
update: [Permission.CurrentUser, ...ADMIN_WRITE_PERMISSIONS],
|
|
715
1084
|
}),
|
|
716
1085
|
CrudApiEndpoint(new Route("/user-notification-rule")),
|
|
717
1086
|
Entity({
|