@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
|
@@ -12,7 +12,6 @@ import Response from "../Utils/Response";
|
|
|
12
12
|
import BaseAPI from "./BaseAPI";
|
|
13
13
|
import CommonAPI from "./CommonAPI";
|
|
14
14
|
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
15
|
-
import BadDataException from "../../Types/Exception/BadDataException";
|
|
16
15
|
import ObjectID from "../../Types/ObjectID";
|
|
17
16
|
import Team from "../../Models/DatabaseModels/Team";
|
|
18
17
|
import TeamService, {
|
|
@@ -20,6 +19,44 @@ import TeamService, {
|
|
|
20
19
|
} from "../Services/TeamService";
|
|
21
20
|
import ComplianceRuleType from "../../Types/Team/ComplianceRuleType";
|
|
22
21
|
|
|
22
|
+
/*
|
|
23
|
+
* `/team/compliance-status/:teamId` - who on this team cannot be paged, and why.
|
|
24
|
+
*
|
|
25
|
+
* AUTHORISATION, and why it is written out here rather than assumed.
|
|
26
|
+
*
|
|
27
|
+
* This route is mounted with UserMiddleware.getUserMiddleware, and that
|
|
28
|
+
* middleware is not an authorisation gate: it admits an unauthenticated request
|
|
29
|
+
* as UserType.Public and calls next(), and the tenant id it attaches is read
|
|
30
|
+
* from the caller-supplied `tenantid` header before any authorisation runs.
|
|
31
|
+
* Everything underneath then reads with `isRoot: true`, because a compliance
|
|
32
|
+
* page necessarily reports on people the reader may not be permitted to read
|
|
33
|
+
* individually. The handler is therefore the only gate that exists.
|
|
34
|
+
*
|
|
35
|
+
* Until this change the handler checked only that the header carried SOME
|
|
36
|
+
* project id, so anyone at all could send a `tenantid` and a team id and be told
|
|
37
|
+
* which of that team's responders are unreachable, by name and email. That is a
|
|
38
|
+
* roster of who to phone during an outage and who will never pick up, and it
|
|
39
|
+
* predates Phase 2 - it is not a regression introduced by the readiness work,
|
|
40
|
+
* but the readiness work rebuilt this service, so it is closed here.
|
|
41
|
+
*
|
|
42
|
+
* Two assertions now, in this order:
|
|
43
|
+
*
|
|
44
|
+
* 1. the caller is a logged-in member of the project they named
|
|
45
|
+
* (CommonAPI.assertAuthenticatedProjectMember), and
|
|
46
|
+
* 2. the team in the path belongs to that same project - otherwise a member of
|
|
47
|
+
* project A reads project B's roster simply by sending their own header
|
|
48
|
+
* alongside a borrowed team id.
|
|
49
|
+
*
|
|
50
|
+
* TeamComplianceService scopes its own team read to the project as well, and the
|
|
51
|
+
* duplication is deliberate for the same reason OnCallReadinessAPI duplicates
|
|
52
|
+
* its service's guards: the service's scoping answers "no such team" (a 400),
|
|
53
|
+
* whereas a member of project A reaching for project B's team id is an
|
|
54
|
+
* authorisation failure and should be answered as one - and an endpoint's
|
|
55
|
+
* authorisation should be legible in the endpoint, not inferred from what some
|
|
56
|
+
* service happens to do today. The wording of the refusal is identical to the
|
|
57
|
+
* one a nonexistent team gets, so the route cannot be used to enumerate team ids
|
|
58
|
+
* across tenants.
|
|
59
|
+
*/
|
|
23
60
|
export default class TeamComplianceAPI extends BaseAPI<Team, TeamServiceType> {
|
|
24
61
|
public constructor() {
|
|
25
62
|
super(Team, TeamService);
|
|
@@ -33,25 +70,40 @@ export default class TeamComplianceAPI extends BaseAPI<Team, TeamServiceType> {
|
|
|
33
70
|
const databaseProps: DatabaseCommonInteractionProps =
|
|
34
71
|
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
35
72
|
|
|
36
|
-
const projectId: ObjectID =
|
|
73
|
+
const projectId: ObjectID =
|
|
74
|
+
CommonAPI.assertAuthenticatedProjectMember(databaseProps);
|
|
37
75
|
|
|
38
|
-
|
|
76
|
+
/*
|
|
77
|
+
* ObjectID's constructor accepts any string, so an unparseable path
|
|
78
|
+
* segment would otherwise travel all the way to a query that matches
|
|
79
|
+
* nothing and be reported as "this team does not exist" rather than as
|
|
80
|
+
* "you sent nonsense". The guard this replaces was `if (!teamId)`,
|
|
81
|
+
* which could never fire: `new ObjectID(...)` is always truthy, so a
|
|
82
|
+
* malformed id was accepted silently.
|
|
83
|
+
*/
|
|
84
|
+
const rawTeamId: string = (req.params["teamId"] as string) || "";
|
|
85
|
+
ObjectID.validateUUID(rawTeamId);
|
|
86
|
+
const teamId: ObjectID = new ObjectID(rawTeamId);
|
|
39
87
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
88
|
+
/*
|
|
89
|
+
* The team id arrives from the caller and everything downstream reads
|
|
90
|
+
* as root, so the team's OWN projectId - not the header - is what has
|
|
91
|
+
* to agree with the project the caller was authorised for.
|
|
92
|
+
*/
|
|
93
|
+
const team: Team | null = await TeamService.findOneById({
|
|
94
|
+
id: teamId,
|
|
95
|
+
select: {
|
|
96
|
+
projectId: true,
|
|
97
|
+
},
|
|
98
|
+
props: {
|
|
99
|
+
isRoot: true,
|
|
100
|
+
},
|
|
101
|
+
});
|
|
47
102
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
new BadDataException("Invalid teamId."),
|
|
53
|
-
);
|
|
54
|
-
}
|
|
103
|
+
CommonAPI.assertResourceBelongsToProject({
|
|
104
|
+
resourceProjectId: team?.projectId,
|
|
105
|
+
projectId: projectId,
|
|
106
|
+
});
|
|
55
107
|
|
|
56
108
|
const complianceStatus: TeamComplianceStatus =
|
|
57
109
|
await TeamComplianceService.getTeamComplianceStatus(
|
|
@@ -47,6 +47,7 @@ import ExceptionAggregationService, {
|
|
|
47
47
|
import MetricAggregationService, {
|
|
48
48
|
FacetValue as MetricFacetValue,
|
|
49
49
|
FacetRequest as MetricFacetRequest,
|
|
50
|
+
MetricForTraceItem,
|
|
50
51
|
} from "../Services/MetricAggregationService";
|
|
51
52
|
import ProfileAggregationService, {
|
|
52
53
|
FlamegraphRequest,
|
|
@@ -61,6 +62,7 @@ import ProfileAggregationService, {
|
|
|
61
62
|
DiffFlamegraphNode,
|
|
62
63
|
ServiceActivityRequest,
|
|
63
64
|
ServiceActivityItem,
|
|
65
|
+
TracePresenceResult,
|
|
64
66
|
} from "../Services/ProfileAggregationService";
|
|
65
67
|
import PprofEncoder, {
|
|
66
68
|
PprofProfile,
|
|
@@ -445,6 +447,10 @@ router.post(
|
|
|
445
447
|
? (body["spanIds"] as Array<string>)
|
|
446
448
|
: undefined;
|
|
447
449
|
|
|
450
|
+
const sessionIds: Array<string> | undefined = body["sessionIds"]
|
|
451
|
+
? (body["sessionIds"] as Array<string>)
|
|
452
|
+
: undefined;
|
|
453
|
+
|
|
448
454
|
const attributes: Record<string, string | Array<string>> | undefined =
|
|
449
455
|
body["attributes"]
|
|
450
456
|
? (body["attributes"] as Record<string, string | Array<string>>)
|
|
@@ -461,6 +467,7 @@ router.post(
|
|
|
461
467
|
bodySearchText,
|
|
462
468
|
traceIds,
|
|
463
469
|
spanIds,
|
|
470
|
+
sessionIds,
|
|
464
471
|
attributes,
|
|
465
472
|
};
|
|
466
473
|
|
|
@@ -540,6 +547,10 @@ router.post(
|
|
|
540
547
|
? (body["spanIds"] as Array<string>)
|
|
541
548
|
: undefined;
|
|
542
549
|
|
|
550
|
+
const sessionIds: Array<string> | undefined = body["sessionIds"]
|
|
551
|
+
? (body["sessionIds"] as Array<string>)
|
|
552
|
+
: undefined;
|
|
553
|
+
|
|
543
554
|
const attributes: Record<string, string> | undefined = body["attributes"]
|
|
544
555
|
? (body["attributes"] as Record<string, string>)
|
|
545
556
|
: undefined;
|
|
@@ -585,6 +596,7 @@ router.post(
|
|
|
585
596
|
bodySearchText,
|
|
586
597
|
traceIds,
|
|
587
598
|
spanIds,
|
|
599
|
+
sessionIds,
|
|
588
600
|
attributes,
|
|
589
601
|
};
|
|
590
602
|
const values: Array<FacetValue> =
|
|
@@ -1625,6 +1637,73 @@ router.post(
|
|
|
1625
1637
|
},
|
|
1626
1638
|
);
|
|
1627
1639
|
|
|
1640
|
+
// --- Metrics For Trace (reverse exemplar lookup) Endpoint ---
|
|
1641
|
+
|
|
1642
|
+
router.post(
|
|
1643
|
+
"/telemetry/metrics/for-trace",
|
|
1644
|
+
...requireMetricReadAccess,
|
|
1645
|
+
async (
|
|
1646
|
+
req: ExpressRequest,
|
|
1647
|
+
res: ExpressResponse,
|
|
1648
|
+
next: NextFunction,
|
|
1649
|
+
): Promise<void> => {
|
|
1650
|
+
try {
|
|
1651
|
+
const databaseProps: DatabaseCommonInteractionProps =
|
|
1652
|
+
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
1653
|
+
|
|
1654
|
+
if (!databaseProps?.tenantId) {
|
|
1655
|
+
return Response.sendErrorResponse(
|
|
1656
|
+
req,
|
|
1657
|
+
res,
|
|
1658
|
+
new BadDataException("Invalid Project ID"),
|
|
1659
|
+
);
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
const body: JSONObject = req.body as JSONObject;
|
|
1663
|
+
|
|
1664
|
+
const traceId: string | undefined =
|
|
1665
|
+
body["traceId"] && typeof body["traceId"] === "string"
|
|
1666
|
+
? (body["traceId"] as string)
|
|
1667
|
+
: undefined;
|
|
1668
|
+
|
|
1669
|
+
if (!traceId) {
|
|
1670
|
+
return Response.sendErrorResponse(
|
|
1671
|
+
req,
|
|
1672
|
+
res,
|
|
1673
|
+
new BadDataException("traceId is required"),
|
|
1674
|
+
);
|
|
1675
|
+
}
|
|
1676
|
+
|
|
1677
|
+
const spanIds: Array<string> | undefined = Array.isArray(body["spanIds"])
|
|
1678
|
+
? (body["spanIds"] as Array<string>).filter(
|
|
1679
|
+
(s: unknown): s is string => {
|
|
1680
|
+
return typeof s === "string" && s.length > 0;
|
|
1681
|
+
},
|
|
1682
|
+
)
|
|
1683
|
+
: undefined;
|
|
1684
|
+
|
|
1685
|
+
const limit: number | undefined =
|
|
1686
|
+
typeof body["limit"] === "number"
|
|
1687
|
+
? (body["limit"] as number)
|
|
1688
|
+
: undefined;
|
|
1689
|
+
|
|
1690
|
+
const items: Array<MetricForTraceItem> =
|
|
1691
|
+
await MetricAggregationService.getMetricsForTrace({
|
|
1692
|
+
projectId: databaseProps.tenantId,
|
|
1693
|
+
traceId,
|
|
1694
|
+
...(spanIds !== undefined && spanIds.length > 0 && { spanIds }),
|
|
1695
|
+
...(limit !== undefined && { limit }),
|
|
1696
|
+
});
|
|
1697
|
+
|
|
1698
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
1699
|
+
items: items as unknown as JSONObject,
|
|
1700
|
+
});
|
|
1701
|
+
} catch (err: unknown) {
|
|
1702
|
+
next(err);
|
|
1703
|
+
}
|
|
1704
|
+
},
|
|
1705
|
+
);
|
|
1706
|
+
|
|
1628
1707
|
// --- Log Analytics Endpoint ---
|
|
1629
1708
|
|
|
1630
1709
|
router.post(
|
|
@@ -1705,6 +1784,10 @@ router.post(
|
|
|
1705
1784
|
? (body["spanIds"] as Array<string>)
|
|
1706
1785
|
: undefined;
|
|
1707
1786
|
|
|
1787
|
+
const sessionIds: Array<string> | undefined = body["sessionIds"]
|
|
1788
|
+
? (body["sessionIds"] as Array<string>)
|
|
1789
|
+
: undefined;
|
|
1790
|
+
|
|
1708
1791
|
const groupBy: Array<string> | undefined = body["groupBy"]
|
|
1709
1792
|
? (body["groupBy"] as Array<string>)
|
|
1710
1793
|
: undefined;
|
|
@@ -1731,6 +1814,7 @@ router.post(
|
|
|
1731
1814
|
bodySearchText,
|
|
1732
1815
|
traceIds,
|
|
1733
1816
|
spanIds,
|
|
1817
|
+
sessionIds,
|
|
1734
1818
|
limit,
|
|
1735
1819
|
};
|
|
1736
1820
|
|
|
@@ -1823,6 +1907,10 @@ router.post(
|
|
|
1823
1907
|
? (body["spanIds"] as Array<string>)
|
|
1824
1908
|
: undefined;
|
|
1825
1909
|
|
|
1910
|
+
const sessionIds: Array<string> | undefined = body["sessionIds"]
|
|
1911
|
+
? (body["sessionIds"] as Array<string>)
|
|
1912
|
+
: undefined;
|
|
1913
|
+
|
|
1826
1914
|
const rows: Array<JSONObject> = await LogAggregationService.getExportLogs(
|
|
1827
1915
|
{
|
|
1828
1916
|
projectId: databaseProps.tenantId,
|
|
@@ -1834,6 +1922,7 @@ router.post(
|
|
|
1834
1922
|
bodySearchText,
|
|
1835
1923
|
traceIds,
|
|
1836
1924
|
spanIds,
|
|
1925
|
+
sessionIds,
|
|
1837
1926
|
},
|
|
1838
1927
|
);
|
|
1839
1928
|
|
|
@@ -1927,6 +2016,10 @@ router.post(
|
|
|
1927
2016
|
|
|
1928
2017
|
const count: number = (body["count"] as number) || 5;
|
|
1929
2018
|
|
|
2019
|
+
const sessionIds: Array<string> | undefined = body["sessionIds"]
|
|
2020
|
+
? (body["sessionIds"] as Array<string>)
|
|
2021
|
+
: undefined;
|
|
2022
|
+
|
|
1930
2023
|
const result: {
|
|
1931
2024
|
before: Array<JSONObject>;
|
|
1932
2025
|
after: Array<JSONObject>;
|
|
@@ -1936,6 +2029,7 @@ router.post(
|
|
|
1936
2029
|
time: OneUptimeDate.fromString(time),
|
|
1937
2030
|
logId,
|
|
1938
2031
|
count,
|
|
2032
|
+
sessionIds,
|
|
1939
2033
|
});
|
|
1940
2034
|
|
|
1941
2035
|
return Response.sendJsonObjectResponse(req, res, {
|
|
@@ -2121,12 +2215,29 @@ router.post(
|
|
|
2121
2215
|
)
|
|
2122
2216
|
: undefined;
|
|
2123
2217
|
|
|
2124
|
-
|
|
2218
|
+
const traceId: string | undefined =
|
|
2219
|
+
body["traceId"] && typeof body["traceId"] === "string"
|
|
2220
|
+
? (body["traceId"] as string)
|
|
2221
|
+
: undefined;
|
|
2222
|
+
|
|
2223
|
+
const spanIds: Array<string> | undefined = Array.isArray(body["spanIds"])
|
|
2224
|
+
? (body["spanIds"] as Array<string>).filter(
|
|
2225
|
+
(s: unknown): s is string => {
|
|
2226
|
+
return typeof s === "string" && s.length > 0;
|
|
2227
|
+
},
|
|
2228
|
+
)
|
|
2229
|
+
: undefined;
|
|
2230
|
+
|
|
2231
|
+
/*
|
|
2232
|
+
* A traceId bounds the read as tightly as a profileId (bloom-indexed
|
|
2233
|
+
* point lookup), so it also satisfies the scoping requirement.
|
|
2234
|
+
*/
|
|
2235
|
+
if (!profileId && !startTime && !traceId) {
|
|
2125
2236
|
return Response.sendErrorResponse(
|
|
2126
2237
|
req,
|
|
2127
2238
|
res,
|
|
2128
2239
|
new BadDataException(
|
|
2129
|
-
"Either profileId or
|
|
2240
|
+
"Either profileId, startTime, or traceId must be provided",
|
|
2130
2241
|
),
|
|
2131
2242
|
);
|
|
2132
2243
|
}
|
|
@@ -2140,6 +2251,8 @@ router.post(
|
|
|
2140
2251
|
...(profileType !== undefined && { profileType }),
|
|
2141
2252
|
...(profileTypes !== undefined &&
|
|
2142
2253
|
profileTypes.length > 0 && { profileTypes }),
|
|
2254
|
+
...(traceId !== undefined && { traceId }),
|
|
2255
|
+
...(spanIds !== undefined && spanIds.length > 0 && { spanIds }),
|
|
2143
2256
|
};
|
|
2144
2257
|
|
|
2145
2258
|
const result: FlamegraphResult =
|
|
@@ -2183,30 +2296,43 @@ router.post(
|
|
|
2183
2296
|
? (body["profileId"] as string)
|
|
2184
2297
|
: undefined;
|
|
2185
2298
|
|
|
2299
|
+
const traceId: string | undefined =
|
|
2300
|
+
body["traceId"] && typeof body["traceId"] === "string"
|
|
2301
|
+
? (body["traceId"] as string)
|
|
2302
|
+
: undefined;
|
|
2303
|
+
|
|
2304
|
+
const spanIds: Array<string> | undefined = Array.isArray(body["spanIds"])
|
|
2305
|
+
? (body["spanIds"] as Array<string>).filter(
|
|
2306
|
+
(s: unknown): s is string => {
|
|
2307
|
+
return typeof s === "string" && s.length > 0;
|
|
2308
|
+
},
|
|
2309
|
+
)
|
|
2310
|
+
: undefined;
|
|
2311
|
+
|
|
2186
2312
|
/*
|
|
2187
|
-
* Only default the window when
|
|
2188
|
-
* samples are bounded by the profile itself
|
|
2189
|
-
* last-hour window would
|
|
2190
|
-
* before the window started.
|
|
2313
|
+
* Only default the window when neither profileId nor traceId is
|
|
2314
|
+
* given: a profile's samples are bounded by the profile itself (and
|
|
2315
|
+
* a trace's by the trace), so a defaulted last-hour window would
|
|
2316
|
+
* silently exclude anything captured before the window started.
|
|
2191
2317
|
*/
|
|
2192
2318
|
const startTime: Date | undefined = body["startTime"]
|
|
2193
2319
|
? OneUptimeDate.fromString(body["startTime"] as string)
|
|
2194
|
-
: profileId
|
|
2320
|
+
: profileId || traceId
|
|
2195
2321
|
? undefined
|
|
2196
2322
|
: OneUptimeDate.addRemoveHours(OneUptimeDate.getCurrentDate(), -1);
|
|
2197
2323
|
|
|
2198
2324
|
const endTime: Date | undefined = body["endTime"]
|
|
2199
2325
|
? OneUptimeDate.fromString(body["endTime"] as string)
|
|
2200
|
-
: profileId
|
|
2326
|
+
: profileId || traceId
|
|
2201
2327
|
? undefined
|
|
2202
2328
|
: OneUptimeDate.getCurrentDate();
|
|
2203
2329
|
|
|
2204
|
-
if (!profileId && !startTime) {
|
|
2330
|
+
if (!profileId && !startTime && !traceId) {
|
|
2205
2331
|
return Response.sendErrorResponse(
|
|
2206
2332
|
req,
|
|
2207
2333
|
res,
|
|
2208
2334
|
new BadDataException(
|
|
2209
|
-
"Either profileId or
|
|
2335
|
+
"Either profileId, startTime, or traceId must be provided",
|
|
2210
2336
|
),
|
|
2211
2337
|
);
|
|
2212
2338
|
}
|
|
@@ -2249,6 +2375,8 @@ router.post(
|
|
|
2249
2375
|
...(profileType !== undefined && { profileType }),
|
|
2250
2376
|
...(profileTypes !== undefined &&
|
|
2251
2377
|
profileTypes.length > 0 && { profileTypes }),
|
|
2378
|
+
...(traceId !== undefined && { traceId }),
|
|
2379
|
+
...(spanIds !== undefined && spanIds.length > 0 && { spanIds }),
|
|
2252
2380
|
...(limit !== undefined && { limit }),
|
|
2253
2381
|
...(sortBy !== undefined && { sortBy }),
|
|
2254
2382
|
};
|
|
@@ -2647,12 +2775,29 @@ router.post(
|
|
|
2647
2775
|
)
|
|
2648
2776
|
: undefined;
|
|
2649
2777
|
|
|
2650
|
-
|
|
2778
|
+
const traceId: string | undefined =
|
|
2779
|
+
body["traceId"] && typeof body["traceId"] === "string"
|
|
2780
|
+
? (body["traceId"] as string)
|
|
2781
|
+
: undefined;
|
|
2782
|
+
|
|
2783
|
+
const spanIds: Array<string> | undefined = Array.isArray(body["spanIds"])
|
|
2784
|
+
? (body["spanIds"] as Array<string>).filter(
|
|
2785
|
+
(s: unknown): s is string => {
|
|
2786
|
+
return typeof s === "string" && s.length > 0;
|
|
2787
|
+
},
|
|
2788
|
+
)
|
|
2789
|
+
: undefined;
|
|
2790
|
+
|
|
2791
|
+
/*
|
|
2792
|
+
* A traceId bounds the read as tightly as a profileId (bloom-indexed
|
|
2793
|
+
* point lookup), so it also satisfies the scoping requirement.
|
|
2794
|
+
*/
|
|
2795
|
+
if (!profileId && !startTime && !traceId) {
|
|
2651
2796
|
return Response.sendErrorResponse(
|
|
2652
2797
|
req,
|
|
2653
2798
|
res,
|
|
2654
2799
|
new BadDataException(
|
|
2655
|
-
"Either profileId or
|
|
2800
|
+
"Either profileId, startTime, or traceId must be provided",
|
|
2656
2801
|
),
|
|
2657
2802
|
);
|
|
2658
2803
|
}
|
|
@@ -2668,6 +2813,8 @@ router.post(
|
|
|
2668
2813
|
...(profileType !== undefined && { profileType }),
|
|
2669
2814
|
...(profileTypes !== undefined &&
|
|
2670
2815
|
profileTypes.length > 0 && { profileTypes }),
|
|
2816
|
+
...(traceId !== undefined && { traceId }),
|
|
2817
|
+
...(spanIds !== undefined && spanIds.length > 0 && { spanIds }),
|
|
2671
2818
|
};
|
|
2672
2819
|
|
|
2673
2820
|
const result: FunctionFocusResult =
|
|
@@ -2791,6 +2938,67 @@ router.post(
|
|
|
2791
2938
|
},
|
|
2792
2939
|
);
|
|
2793
2940
|
|
|
2941
|
+
// --- Profile Trace Presence Endpoint ---
|
|
2942
|
+
|
|
2943
|
+
router.post(
|
|
2944
|
+
"/telemetry/profiles/trace-presence",
|
|
2945
|
+
...requireProfileReadAccess,
|
|
2946
|
+
async (
|
|
2947
|
+
req: ExpressRequest,
|
|
2948
|
+
res: ExpressResponse,
|
|
2949
|
+
next: NextFunction,
|
|
2950
|
+
): Promise<void> => {
|
|
2951
|
+
try {
|
|
2952
|
+
const databaseProps: DatabaseCommonInteractionProps =
|
|
2953
|
+
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
2954
|
+
|
|
2955
|
+
if (!databaseProps?.tenantId) {
|
|
2956
|
+
return Response.sendErrorResponse(
|
|
2957
|
+
req,
|
|
2958
|
+
res,
|
|
2959
|
+
new BadDataException("Invalid Project ID"),
|
|
2960
|
+
);
|
|
2961
|
+
}
|
|
2962
|
+
|
|
2963
|
+
const body: JSONObject = req.body as JSONObject;
|
|
2964
|
+
|
|
2965
|
+
const traceId: string | undefined =
|
|
2966
|
+
body["traceId"] && typeof body["traceId"] === "string"
|
|
2967
|
+
? (body["traceId"] as string)
|
|
2968
|
+
: undefined;
|
|
2969
|
+
|
|
2970
|
+
if (!traceId) {
|
|
2971
|
+
return Response.sendErrorResponse(
|
|
2972
|
+
req,
|
|
2973
|
+
res,
|
|
2974
|
+
new BadDataException("traceId is required"),
|
|
2975
|
+
);
|
|
2976
|
+
}
|
|
2977
|
+
|
|
2978
|
+
const spanIds: Array<string> | undefined = Array.isArray(body["spanIds"])
|
|
2979
|
+
? (body["spanIds"] as Array<string>).filter(
|
|
2980
|
+
(s: unknown): s is string => {
|
|
2981
|
+
return typeof s === "string" && s.length > 0;
|
|
2982
|
+
},
|
|
2983
|
+
)
|
|
2984
|
+
: undefined;
|
|
2985
|
+
|
|
2986
|
+
const result: TracePresenceResult =
|
|
2987
|
+
await ProfileAggregationService.getTracePresence({
|
|
2988
|
+
projectId: databaseProps.tenantId,
|
|
2989
|
+
traceId,
|
|
2990
|
+
...(spanIds !== undefined && spanIds.length > 0 && { spanIds }),
|
|
2991
|
+
});
|
|
2992
|
+
|
|
2993
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
2994
|
+
sampleCount: result.sampleCount,
|
|
2995
|
+
});
|
|
2996
|
+
} catch (err: unknown) {
|
|
2997
|
+
next(err);
|
|
2998
|
+
}
|
|
2999
|
+
},
|
|
3000
|
+
);
|
|
3001
|
+
|
|
2794
3002
|
/*
|
|
2795
3003
|
* ---------------------------------------------------------------------
|
|
2796
3004
|
* Session replay playback
|
package/Server/API/UserAPI.ts
CHANGED
|
@@ -53,10 +53,25 @@ export default class UserAPI extends BaseAPI<User, UserServiceType> {
|
|
|
53
53
|
* the gate; the read below runs as root because a master admin is not a
|
|
54
54
|
* member of the projects being listed and so has no tenant permissions to
|
|
55
55
|
* read them with.
|
|
56
|
+
*
|
|
57
|
+
* The gate accepts the instance-wide master API key as well as a
|
|
58
|
+
* master-admin session, because the caller asking "which projects is this
|
|
59
|
+
* person in?" is typically a script rather than somebody with a browser
|
|
60
|
+
* open. That is a widening, so it is worth being explicit about why it is
|
|
61
|
+
* the right one HERE and not on the routes below: this endpoint only reads,
|
|
62
|
+
* and it reads nothing the key does not already reach through
|
|
63
|
+
* POST /team-member/get-list, which any master-key caller can call today
|
|
64
|
+
* (untenanted, so cross-project) to assemble the same answer one membership
|
|
65
|
+
* at a time. The key buys convenience and correct paging, not new reach.
|
|
66
|
+
*
|
|
67
|
+
* The writes below stay on the session-only middleware. A leaked static key
|
|
68
|
+
* that can list memberships is a disclosure of what it could already
|
|
69
|
+
* disclose; one that can remove a user from a project, set their password or
|
|
70
|
+
* mail them a reset link is a headless account takeover.
|
|
56
71
|
*/
|
|
57
72
|
this.router.post(
|
|
58
73
|
`${new this.entityType().getCrudApiPath()?.toString()}/:userId/projects`,
|
|
59
|
-
MasterAdminAuthorization.
|
|
74
|
+
MasterAdminAuthorization.isAuthorizedMasterAdminOrMasterApiKeyMiddleware,
|
|
60
75
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
61
76
|
try {
|
|
62
77
|
const userId: ObjectID = UserAPI.getUserIdFromParams(req);
|
|
@@ -597,6 +597,58 @@ export const HttpProtocol: Protocol =
|
|
|
597
597
|
|
|
598
598
|
export const Host: string = process.env["HOST"] || "";
|
|
599
599
|
|
|
600
|
+
/*
|
|
601
|
+
* How many reverse proxies that WE control sit in front of this process and
|
|
602
|
+
* append to X-Forwarded-For.
|
|
603
|
+
*
|
|
604
|
+
* X-Forwarded-For is caller-supplied on its left-hand end: every proxy appends
|
|
605
|
+
* the address it accepted the connection from, and our Nginx uses
|
|
606
|
+
* `$proxy_add_x_forwarded_for` (Nginx/default.conf.template), which keeps
|
|
607
|
+
* whatever the caller sent and adds to it. Only entries that one of our own
|
|
608
|
+
* proxies wrote mean anything, and those are at the RIGHT-hand end. This
|
|
609
|
+
* number says how far in from the right the real client sits, so IP
|
|
610
|
+
* allowlists and IP-keyed rate limits read an entry a caller cannot choose.
|
|
611
|
+
*
|
|
612
|
+
* 1 is correct for every topology this repo ships -- Docker Compose and the
|
|
613
|
+
* Helm chart both put exactly one Nginx (the `ingress` gateway) in front of
|
|
614
|
+
* the app, and the Kubernetes Service in front of that is L4 and does not
|
|
615
|
+
* touch the header.
|
|
616
|
+
*
|
|
617
|
+
* RAISE IT if you have added HTTP proxies of your own: a CDN or WAF that
|
|
618
|
+
* appends to X-Forwarded-For (Cloudflare, an AWS ALB, an external
|
|
619
|
+
* ingress-nginx) makes this 2, and each further appending hop adds one. Set it
|
|
620
|
+
* too low and you attribute requests to your own proxy; set it too high and
|
|
621
|
+
* you read an entry the caller controls.
|
|
622
|
+
*
|
|
623
|
+
* 0 ignores X-Forwarded-For entirely and uses only the TCP peer address --
|
|
624
|
+
* correct when the app is exposed directly with no proxy in front.
|
|
625
|
+
*/
|
|
626
|
+
export const TrustedProxyHops: number = ((): number => {
|
|
627
|
+
const rawValue: string | undefined = process.env["TRUSTED_PROXY_HOPS"];
|
|
628
|
+
|
|
629
|
+
if (rawValue === undefined || rawValue.trim() === "") {
|
|
630
|
+
return 1;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
const parsedValue: number = Number(rawValue.trim());
|
|
634
|
+
|
|
635
|
+
/*
|
|
636
|
+
* Anything that is not a whole, non-negative, finite count is a
|
|
637
|
+
* misconfiguration. Fall back to the shipped topology rather than to 0:
|
|
638
|
+
* 0 would silently attribute every request to the gateway's own address,
|
|
639
|
+
* which does not fail closed so much as make allowlists useless.
|
|
640
|
+
*/
|
|
641
|
+
if (
|
|
642
|
+
!Number.isFinite(parsedValue) ||
|
|
643
|
+
!Number.isInteger(parsedValue) ||
|
|
644
|
+
parsedValue < 0
|
|
645
|
+
) {
|
|
646
|
+
return 1;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
return parsedValue;
|
|
650
|
+
})();
|
|
651
|
+
|
|
600
652
|
export const ProvisionSsl: boolean = process.env["PROVISION_SSL"] === "true";
|
|
601
653
|
|
|
602
654
|
export const CaptchaEnabled: boolean =
|
|
@@ -40,6 +40,28 @@ const dataSourceOptions: DataSourceOptions = {
|
|
|
40
40
|
* dedicated migrate Job owns migrations). See RunDatabaseMigrationsOnBoot.
|
|
41
41
|
*/
|
|
42
42
|
migrationsRun: RunDatabaseMigrationsOnBoot,
|
|
43
|
+
/*
|
|
44
|
+
* Run each migration in its own transaction rather than wrapping the whole
|
|
45
|
+
* set in one (TypeORM's "all" default).
|
|
46
|
+
*
|
|
47
|
+
* An empty database — every new install, and the Postgres Schema Drift job —
|
|
48
|
+
* applies all 500+ migrations at once. Under "all", every table, index and
|
|
49
|
+
* foreign key those migrations create holds a lock for the entire run, and
|
|
50
|
+
* the total outgrew Postgres's default lock table
|
|
51
|
+
* (max_locks_per_transaction * max_connections), so the run aborted with
|
|
52
|
+
* "out of shared memory ... increase max_locks_per_transaction". "each"
|
|
53
|
+
* commits after every migration, so peak lock usage is one migration's worth
|
|
54
|
+
* instead of the whole history's, and it no longer scales with the number of
|
|
55
|
+
* migrations.
|
|
56
|
+
*
|
|
57
|
+
* Safe for every existing migration: none use CREATE INDEX CONCURRENTLY (it
|
|
58
|
+
* cannot run inside a transaction block, which is just as true per-migration
|
|
59
|
+
* as it was for the single wrapping transaction), and each migration is still
|
|
60
|
+
* atomic on its own. It is also more correct for the migrations that
|
|
61
|
+
* `SET LOCAL lock_timeout`, which is transaction-scoped and under "all" would
|
|
62
|
+
* have leaked into every migration that ran after them.
|
|
63
|
+
*/
|
|
64
|
+
migrationsTransactionMode: "each",
|
|
43
65
|
entities: Entities,
|
|
44
66
|
applicationName: "oneuptime",
|
|
45
67
|
ssl: ShouldDatabaseSslEnable
|
|
@@ -70,10 +70,10 @@ import { MigrationInterface, QueryRunner } from "typeorm";
|
|
|
70
70
|
*
|
|
71
71
|
* NOT CONCURRENT, DELIBERATELY
|
|
72
72
|
*
|
|
73
|
-
* DataSourceOptions sets
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
73
|
+
* DataSourceOptions sets `migrationsTransactionMode: "each"`, so every migration
|
|
74
|
+
* runs inside its own transaction. `CREATE INDEX CONCURRENTLY` cannot run inside
|
|
75
|
+
* a transaction block and would abort the run. A plain CREATE INDEX takes a
|
|
76
|
+
* SHARE lock that blocks writes to Service
|
|
77
77
|
* for the duration, which is milliseconds at this table's size (thousands of
|
|
78
78
|
* live rows).
|
|
79
79
|
*
|
package/Server/Infrastructure/Postgres/SchemaMigrations/1786200000000-RestoreDroppedUniqueIndexes.ts
CHANGED
|
@@ -74,11 +74,11 @@ import { MigrationInterface, QueryRunner } from "typeorm";
|
|
|
74
74
|
*
|
|
75
75
|
* NOT CONCURRENT
|
|
76
76
|
*
|
|
77
|
-
* DataSourceOptions sets
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
77
|
+
* DataSourceOptions sets `migrationsTransactionMode: "each"`, so every migration
|
|
78
|
+
* runs inside its own transaction. CREATE INDEX CONCURRENTLY cannot run inside a
|
|
79
|
+
* transaction block and would abort the run. These tables are small
|
|
80
|
+
* (infrastructure inventory, not telemetry), so the brief SHARE lock is not a
|
|
81
|
+
* concern.
|
|
82
82
|
*
|
|
83
83
|
* HAND-WRITTEN
|
|
84
84
|
*
|