@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import DatabaseService from "./DatabaseService";
|
|
2
|
-
import Model from "../../Models/DatabaseModels/
|
|
2
|
+
import Model from "../../Models/DatabaseModels/InventoryItem";
|
|
3
3
|
import Service from "../../Models/DatabaseModels/Service";
|
|
4
4
|
import ServiceService from "./ServiceService";
|
|
5
5
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
@@ -8,8 +8,19 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
8
8
|
import OneUptimeDate from "../../Types/Date";
|
|
9
9
|
import ColumnLength from "../../Types/Database/ColumnLength";
|
|
10
10
|
import QueryDeepPartialEntity from "../../Types/Database/PartialEntity";
|
|
11
|
+
import CreateBy from "../Types/Database/CreateBy";
|
|
12
|
+
import { OnCreate } from "../Types/Database/Hooks";
|
|
13
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
14
|
+
import Dictionary from "../../Types/Dictionary";
|
|
11
15
|
import { JSONObject } from "../../Types/JSON";
|
|
16
|
+
import EntitySource from "../../Types/Telemetry/EntitySource";
|
|
12
17
|
import EntityType from "../../Types/Telemetry/EntityType";
|
|
18
|
+
import { MANUAL_ENTITY_TYPES } from "../../Types/Telemetry/EntityTypeGroups";
|
|
19
|
+
import {
|
|
20
|
+
canonicalizeEntityValue,
|
|
21
|
+
computeEntityKey,
|
|
22
|
+
MANUAL_ENTITY_IDENTITY_ATTRIBUTE,
|
|
23
|
+
} from "../../Utils/Telemetry/EntityKey";
|
|
13
24
|
import logger from "../Utils/Logger";
|
|
14
25
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
15
26
|
import { ExtractedEntity } from "../Utils/Telemetry/TelemetryEntity";
|
|
@@ -20,11 +31,96 @@ import {
|
|
|
20
31
|
shouldWarnEntityBudgetOnce,
|
|
21
32
|
} from "../Utils/Telemetry/EntityRegistry";
|
|
22
33
|
|
|
23
|
-
export class
|
|
34
|
+
export class InventoryItemService extends DatabaseService<Model> {
|
|
24
35
|
public constructor() {
|
|
25
36
|
super(Model);
|
|
26
37
|
}
|
|
27
38
|
|
|
39
|
+
/**
|
|
40
|
+
* Completes a manually created CI.
|
|
41
|
+
*
|
|
42
|
+
* Every machine writer — the ingest reconciler and the inventory mirror —
|
|
43
|
+
* computes `entityKey` itself and passes an explicit `source`, because
|
|
44
|
+
* both derive identity from something the user never sees (a canonicalized
|
|
45
|
+
* semconv attribute set, or the owning row's id). A create arriving
|
|
46
|
+
* WITHOUT a key is therefore a user create by construction, and this hook
|
|
47
|
+
* is what turns the two fields a human can reasonably supply (type and
|
|
48
|
+
* name) into the identity the registry needs.
|
|
49
|
+
*
|
|
50
|
+
* Deriving the key here rather than in the dashboard keeps it enforced for
|
|
51
|
+
* API clients too, and keeps the one identity rule — canonicalize, then
|
|
52
|
+
* hash — in the module that owns it.
|
|
53
|
+
*/
|
|
54
|
+
@CaptureSpan()
|
|
55
|
+
protected override async onBeforeCreate(
|
|
56
|
+
createBy: CreateBy<Model>,
|
|
57
|
+
): Promise<OnCreate<Model>> {
|
|
58
|
+
const data: Model = createBy.data;
|
|
59
|
+
|
|
60
|
+
if (!data.entityKey) {
|
|
61
|
+
data.source = EntitySource.Manual;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (data.source !== EntitySource.Manual) {
|
|
65
|
+
return { createBy, carryForward: null };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (!data.projectId) {
|
|
69
|
+
throw new BadDataException("Project ID is required.");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (!data.entityType) {
|
|
73
|
+
throw new BadDataException("Entity Type is required.");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* Confined to the manual-only vocabulary. A hand-made row of an
|
|
78
|
+
* observable type would key off the manual identity attribute and so
|
|
79
|
+
* could never converge with the row ingest derives for the same thing —
|
|
80
|
+
* it would just sit beside it forever. See MANUAL_ENTITY_TYPES.
|
|
81
|
+
*/
|
|
82
|
+
if (!MANUAL_ENTITY_TYPES.has(data.entityType)) {
|
|
83
|
+
throw new BadDataException(
|
|
84
|
+
`Entities of type ${data.entityType} are discovered automatically and cannot be created manually. Manually creatable types are: ${Array.from(
|
|
85
|
+
MANUAL_ENTITY_TYPES,
|
|
86
|
+
).join(", ")}.`,
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const displayName: string = (data.displayName || "").trim();
|
|
91
|
+
|
|
92
|
+
if (!displayName) {
|
|
93
|
+
throw new BadDataException(
|
|
94
|
+
"Name is required for a manually created entity.",
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
data.displayName = displayName.substring(0, ColumnLength.ShortText);
|
|
99
|
+
|
|
100
|
+
const identifyingAttributes: Dictionary<string> = {
|
|
101
|
+
[MANUAL_ENTITY_IDENTITY_ATTRIBUTE]: canonicalizeEntityValue(displayName),
|
|
102
|
+
};
|
|
103
|
+
data.identifyingAttributes = identifyingAttributes as JSONObject;
|
|
104
|
+
|
|
105
|
+
data.entityKey = computeEntityKey({
|
|
106
|
+
projectId: data.projectId.toString(),
|
|
107
|
+
entityType: data.entityType,
|
|
108
|
+
identifyingAttributes,
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
/*
|
|
112
|
+
* Stamped so the explorer can sort manual CIs alongside discovered ones
|
|
113
|
+
* on the same columns. `lastSeenAt` never moves again for these rows —
|
|
114
|
+
* it means "created", not "observed" — which is exactly why the prune
|
|
115
|
+
* sweep excludes them.
|
|
116
|
+
*/
|
|
117
|
+
const now: Date = OneUptimeDate.getCurrentDate();
|
|
118
|
+
data.firstSeenAt = data.firstSeenAt || now;
|
|
119
|
+
data.lastSeenAt = data.lastSeenAt || now;
|
|
120
|
+
|
|
121
|
+
return { createBy, carryForward: null };
|
|
122
|
+
}
|
|
123
|
+
|
|
28
124
|
/**
|
|
29
125
|
* Forward-only registry reconciliation: upsert a catalog row per
|
|
30
126
|
* discovered entity, bump `lastSeenAt`, merge descriptive attributes
|
|
@@ -65,7 +161,7 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
65
161
|
});
|
|
66
162
|
} catch (err) {
|
|
67
163
|
logger.error(
|
|
68
|
-
`
|
|
164
|
+
`InventoryItemService: failed to upsert entity ${entity.entityType}/${entity.entityKey}:`,
|
|
69
165
|
);
|
|
70
166
|
logger.error(err as Error);
|
|
71
167
|
}
|
|
@@ -88,7 +184,7 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
88
184
|
if (data.entity.entityType !== EntityType.Service) {
|
|
89
185
|
return null;
|
|
90
186
|
}
|
|
91
|
-
const name: string =
|
|
187
|
+
const name: string = InventoryItemService.deriveDisplayName(data.entity);
|
|
92
188
|
if (!name) {
|
|
93
189
|
return null;
|
|
94
190
|
}
|
|
@@ -110,7 +206,7 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
110
206
|
return service?._id ? new ObjectID(service._id.toString()) : null;
|
|
111
207
|
} catch (err) {
|
|
112
208
|
logger.error(
|
|
113
|
-
`
|
|
209
|
+
`InventoryItemService: failed to resolve Service row for entity name "${name}":`,
|
|
114
210
|
);
|
|
115
211
|
logger.error(err as Error);
|
|
116
212
|
return null;
|
|
@@ -138,10 +234,15 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
138
234
|
lastSeenAt: now,
|
|
139
235
|
describe: `entity ${entity.entityType}/${entity.entityKey}`,
|
|
140
236
|
rowFenceId: `${projectId.toString()}:${entity.entityType}:${entity.entityKey}`,
|
|
141
|
-
select: {
|
|
237
|
+
select: {
|
|
238
|
+
displayName: true,
|
|
239
|
+
descriptiveAttributes: true,
|
|
240
|
+
labels: true,
|
|
241
|
+
resourceId: true,
|
|
242
|
+
},
|
|
142
243
|
buildUpdate: (existing: Model): QueryDeepPartialEntity<Model> => {
|
|
143
244
|
const update: QueryDeepPartialEntity<Model> =
|
|
144
|
-
|
|
245
|
+
InventoryItemService.buildDescriptiveUpdate(entity, existing);
|
|
145
246
|
/*
|
|
146
247
|
* Stamp / refresh the pointer on the throttled bump too, so
|
|
147
248
|
* pre-existing rows converge and a deleted+recreated Service
|
|
@@ -169,7 +270,18 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
169
270
|
if (count === undefined) {
|
|
170
271
|
count = (
|
|
171
272
|
await this.countBy({
|
|
172
|
-
query: {
|
|
273
|
+
query: {
|
|
274
|
+
projectId,
|
|
275
|
+
entityType: entity.entityType,
|
|
276
|
+
/*
|
|
277
|
+
* The budget exists to bound rows minted by ingest, so it
|
|
278
|
+
* counts only those. Manual CIs and inventory mirrors are
|
|
279
|
+
* bounded by their own creators and must not consume it —
|
|
280
|
+
* otherwise registering enough devices could stop new
|
|
281
|
+
* telemetry entities being recorded at all.
|
|
282
|
+
*/
|
|
283
|
+
source: EntitySource.Discovered,
|
|
284
|
+
},
|
|
173
285
|
props: { isRoot: true },
|
|
174
286
|
})
|
|
175
287
|
).toNumber();
|
|
@@ -188,7 +300,7 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
188
300
|
})
|
|
189
301
|
) {
|
|
190
302
|
logger.warn(
|
|
191
|
-
`
|
|
303
|
+
`InventoryItemService: entity budget reached for project ${projectId.toString()} type ${entity.entityType} (${count} >= ${budget}); skipping new registry rows. Membership keys still flow on signals.`,
|
|
192
304
|
);
|
|
193
305
|
}
|
|
194
306
|
return false;
|
|
@@ -198,6 +310,12 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
198
310
|
model.projectId = projectId;
|
|
199
311
|
model.entityType = entity.entityType;
|
|
200
312
|
model.entityKey = entity.entityKey;
|
|
313
|
+
/*
|
|
314
|
+
* Explicit rather than leaning on the column default: this is the
|
|
315
|
+
* flag that makes the row eligible for stale-entity pruning, and a
|
|
316
|
+
* silently-defaulted value is a poor way to carry that.
|
|
317
|
+
*/
|
|
318
|
+
model.source = EntitySource.Discovered;
|
|
201
319
|
model.identifyingAttributes = entity.identifyingAttributes;
|
|
202
320
|
if (
|
|
203
321
|
entity.descriptiveAttributes &&
|
|
@@ -206,10 +324,10 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
206
324
|
model.descriptiveAttributes = entity.descriptiveAttributes;
|
|
207
325
|
}
|
|
208
326
|
if (entity.labels && entity.labels.length > 0) {
|
|
209
|
-
model.labels =
|
|
327
|
+
model.labels = InventoryItemService.normalizeLabels(entity.labels);
|
|
210
328
|
}
|
|
211
329
|
// varchar(ShortText) column; k8s names can run to 253 chars.
|
|
212
|
-
model.displayName =
|
|
330
|
+
model.displayName = InventoryItemService.deriveDisplayName(
|
|
213
331
|
entity,
|
|
214
332
|
).substring(0, ColumnLength.ShortText);
|
|
215
333
|
if (serviceResourceId) {
|
|
@@ -224,11 +342,11 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
224
342
|
}
|
|
225
343
|
|
|
226
344
|
/**
|
|
227
|
-
* Extra fields for the `lastSeenAt` bump on an existing row:
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
* update (no jsonb churn).
|
|
345
|
+
* Extra fields for the `lastSeenAt` bump on an existing row: a legacy
|
|
346
|
+
* generated Kubernetes fallback display name can converge to the resource
|
|
347
|
+
* name, descriptive attributes merge last-writer-wins per key, and labels
|
|
348
|
+
* merge as a set union. Each is written ONLY when it actually changes, so a
|
|
349
|
+
* stable resource keeps its bump a one-column update (no text/jsonb churn).
|
|
232
350
|
*/
|
|
233
351
|
private static buildDescriptiveUpdate(
|
|
234
352
|
entity: ExtractedEntity,
|
|
@@ -240,10 +358,45 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
240
358
|
* recursive JSONObject mapping (TS2589).
|
|
241
359
|
*/
|
|
242
360
|
const update: {
|
|
361
|
+
displayName?: string;
|
|
243
362
|
descriptiveAttributes?: JSONObject;
|
|
244
363
|
labels?: Array<string>;
|
|
245
364
|
} = {};
|
|
246
365
|
|
|
366
|
+
const preferredNameKey: string | undefined =
|
|
367
|
+
InventoryItemService.preferredDisplayNameAttributeByType[
|
|
368
|
+
entity.entityType
|
|
369
|
+
];
|
|
370
|
+
/*
|
|
371
|
+
* Existing inventory display names may be user-edited. Only migrate a
|
|
372
|
+
* pod/node row when its current value is exactly the value the old generic
|
|
373
|
+
* algorithm generated. A sparse observation cannot erase a learned name,
|
|
374
|
+
* and an unrelated entity type never has its display name reconciled here.
|
|
375
|
+
*/
|
|
376
|
+
const preferredName: string | undefined = preferredNameKey
|
|
377
|
+
? entity.descriptiveAttributes?.[preferredNameKey] ||
|
|
378
|
+
entity.identifyingAttributes?.[preferredNameKey]
|
|
379
|
+
: undefined;
|
|
380
|
+
if (preferredName) {
|
|
381
|
+
const desiredDisplayName: string = preferredName.substring(
|
|
382
|
+
0,
|
|
383
|
+
ColumnLength.ShortText,
|
|
384
|
+
);
|
|
385
|
+
const legacyDisplayName: string =
|
|
386
|
+
InventoryItemService.deriveFallbackDisplayName(entity).substring(
|
|
387
|
+
0,
|
|
388
|
+
ColumnLength.ShortText,
|
|
389
|
+
);
|
|
390
|
+
const existingDisplayName: string = existing.displayName || "";
|
|
391
|
+
|
|
392
|
+
if (
|
|
393
|
+
existingDisplayName !== desiredDisplayName &&
|
|
394
|
+
(!existingDisplayName || existingDisplayName === legacyDisplayName)
|
|
395
|
+
) {
|
|
396
|
+
update.displayName = desiredDisplayName;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
247
400
|
const incoming: Record<string, string> = entity.descriptiveAttributes || {};
|
|
248
401
|
if (Object.keys(incoming).length > 0) {
|
|
249
402
|
const current: Record<string, unknown> =
|
|
@@ -271,7 +424,7 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
271
424
|
});
|
|
272
425
|
|
|
273
426
|
if (hasNew) {
|
|
274
|
-
update.labels =
|
|
427
|
+
update.labels = InventoryItemService.normalizeLabels([
|
|
275
428
|
...currentLabels,
|
|
276
429
|
...incomingLabels,
|
|
277
430
|
]);
|
|
@@ -286,13 +439,42 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
286
439
|
return Array.from(new Set<string>(labels)).sort();
|
|
287
440
|
}
|
|
288
441
|
|
|
442
|
+
private static readonly preferredDisplayNameAttributeByType: Partial<
|
|
443
|
+
Record<EntityType, string>
|
|
444
|
+
> = {
|
|
445
|
+
[EntityType.KubernetesNode]: "k8s.node.name",
|
|
446
|
+
[EntityType.KubernetesPod]: "k8s.pod.name",
|
|
447
|
+
};
|
|
448
|
+
|
|
289
449
|
/**
|
|
290
|
-
* Best-effort human-readable name for
|
|
291
|
-
*
|
|
292
|
-
*
|
|
450
|
+
* Best-effort human-readable name for Inventory. Prefer the name belonging
|
|
451
|
+
* to this exact entity type, including a descriptive name paired with a
|
|
452
|
+
* stable UID identity (the normal Kubernetes pod/node shape). Falling back
|
|
453
|
+
* to the longest identifying `*.name` preserves the behaviour for types
|
|
454
|
+
* without a dedicated display-name rule.
|
|
293
455
|
*/
|
|
294
456
|
public static deriveDisplayName(entity: ExtractedEntity): string {
|
|
295
457
|
const id: Record<string, string> = entity.identifyingAttributes || {};
|
|
458
|
+
const descriptive: Record<string, string> =
|
|
459
|
+
entity.descriptiveAttributes || {};
|
|
460
|
+
const preferredKey: string | undefined =
|
|
461
|
+
this.preferredDisplayNameAttributeByType[entity.entityType];
|
|
462
|
+
|
|
463
|
+
if (preferredKey) {
|
|
464
|
+
const preferredValue: string | undefined =
|
|
465
|
+
descriptive[preferredKey] || id[preferredKey];
|
|
466
|
+
if (preferredValue) {
|
|
467
|
+
return preferredValue;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
return this.deriveFallbackDisplayName(entity);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
/** The generic display-name algorithm used before type-aware K8s names. */
|
|
475
|
+
private static deriveFallbackDisplayName(entity: ExtractedEntity): string {
|
|
476
|
+
const id: Record<string, string> = entity.identifyingAttributes || {};
|
|
477
|
+
|
|
296
478
|
const nameKeys: Array<string> = Object.keys(id)
|
|
297
479
|
.filter((k: string) => {
|
|
298
480
|
return k.endsWith(".name");
|
|
@@ -314,4 +496,4 @@ export class TelemetryEntityService extends DatabaseService<Model> {
|
|
|
314
496
|
}
|
|
315
497
|
}
|
|
316
498
|
|
|
317
|
-
export default new
|
|
499
|
+
export default new InventoryItemService();
|
|
@@ -31,6 +31,7 @@ export interface HistogramRequest {
|
|
|
31
31
|
bodySearchText?: string | undefined;
|
|
32
32
|
traceIds?: Array<string> | undefined;
|
|
33
33
|
spanIds?: Array<string> | undefined;
|
|
34
|
+
sessionIds?: Array<string> | undefined;
|
|
34
35
|
attributes?: LogAttributeFilters | undefined;
|
|
35
36
|
}
|
|
36
37
|
|
|
@@ -52,6 +53,7 @@ export interface FacetRequest {
|
|
|
52
53
|
bodySearchText?: string | undefined;
|
|
53
54
|
traceIds?: Array<string> | undefined;
|
|
54
55
|
spanIds?: Array<string> | undefined;
|
|
56
|
+
sessionIds?: Array<string> | undefined;
|
|
55
57
|
attributes?: LogAttributeFilters | undefined;
|
|
56
58
|
}
|
|
57
59
|
|
|
@@ -72,6 +74,7 @@ export interface AnalyticsRequest {
|
|
|
72
74
|
bodySearchText?: string | undefined;
|
|
73
75
|
traceIds?: Array<string> | undefined;
|
|
74
76
|
spanIds?: Array<string> | undefined;
|
|
77
|
+
sessionIds?: Array<string> | undefined;
|
|
75
78
|
limit?: number | undefined;
|
|
76
79
|
}
|
|
77
80
|
|
|
@@ -765,6 +768,7 @@ export class LogAggregationService {
|
|
|
765
768
|
| "bodySearchText"
|
|
766
769
|
| "traceIds"
|
|
767
770
|
| "spanIds"
|
|
771
|
+
| "sessionIds"
|
|
768
772
|
| "attributes"
|
|
769
773
|
>,
|
|
770
774
|
): void {
|
|
@@ -817,6 +821,15 @@ export class LogAggregationService {
|
|
|
817
821
|
);
|
|
818
822
|
}
|
|
819
823
|
|
|
824
|
+
if (request.sessionIds && request.sessionIds.length > 0) {
|
|
825
|
+
statement.append(
|
|
826
|
+
SQL` AND sessionId IN (${{
|
|
827
|
+
type: TableColumnType.Text,
|
|
828
|
+
value: new Includes(request.sessionIds),
|
|
829
|
+
}})`,
|
|
830
|
+
);
|
|
831
|
+
}
|
|
832
|
+
|
|
820
833
|
if (request.bodySearchText && request.bodySearchText.trim().length > 0) {
|
|
821
834
|
statement.append(
|
|
822
835
|
SQL` AND body ILIKE ${{
|
|
@@ -876,6 +889,7 @@ export class LogAggregationService {
|
|
|
876
889
|
bodySearchText?: string | undefined;
|
|
877
890
|
traceIds?: Array<string> | undefined;
|
|
878
891
|
spanIds?: Array<string> | undefined;
|
|
892
|
+
sessionIds?: Array<string> | undefined;
|
|
879
893
|
attributes?: Record<string, string> | undefined;
|
|
880
894
|
}): Promise<Array<JSONObject>> {
|
|
881
895
|
const maxLimit: number = Math.min(request.limit || 10000, 10000);
|
|
@@ -942,6 +956,7 @@ export class LogAggregationService {
|
|
|
942
956
|
time: Date;
|
|
943
957
|
logId: string;
|
|
944
958
|
count: number;
|
|
959
|
+
sessionIds?: Array<string> | undefined;
|
|
945
960
|
}): Promise<{ before: Array<JSONObject>; after: Array<JSONObject> }> {
|
|
946
961
|
const count: number = Math.min(request.count || 5, 20);
|
|
947
962
|
|
|
@@ -975,11 +990,6 @@ export class LogAggregationService {
|
|
|
975
990
|
value: request.logId,
|
|
976
991
|
}}
|
|
977
992
|
AND retentionDate >= now()
|
|
978
|
-
ORDER BY time DESC, timeUnixNano DESC
|
|
979
|
-
LIMIT ${{
|
|
980
|
-
type: TableColumnType.Number,
|
|
981
|
-
value: count,
|
|
982
|
-
}}
|
|
983
993
|
`;
|
|
984
994
|
|
|
985
995
|
const afterStatement: Statement = SQL`
|
|
@@ -1012,12 +1022,39 @@ export class LogAggregationService {
|
|
|
1012
1022
|
value: request.logId,
|
|
1013
1023
|
}}
|
|
1014
1024
|
AND retentionDate >= now()
|
|
1015
|
-
|
|
1025
|
+
`;
|
|
1026
|
+
|
|
1027
|
+
/*
|
|
1028
|
+
* Session scoping keeps "surrounding" logs within the same RUM
|
|
1029
|
+
* session instead of interleaving every session the service handled
|
|
1030
|
+
* at that instant.
|
|
1031
|
+
*/
|
|
1032
|
+
if (request.sessionIds && request.sessionIds.length > 0) {
|
|
1033
|
+
for (const contextStatement of [beforeStatement, afterStatement]) {
|
|
1034
|
+
contextStatement.append(
|
|
1035
|
+
SQL` AND sessionId IN (${{
|
|
1036
|
+
type: TableColumnType.Text,
|
|
1037
|
+
value: new Includes(request.sessionIds),
|
|
1038
|
+
}})`,
|
|
1039
|
+
);
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
beforeStatement.append(
|
|
1044
|
+
SQL` ORDER BY time DESC, timeUnixNano DESC
|
|
1016
1045
|
LIMIT ${{
|
|
1017
1046
|
type: TableColumnType.Number,
|
|
1018
1047
|
value: count,
|
|
1019
|
-
}}
|
|
1020
|
-
|
|
1048
|
+
}}`,
|
|
1049
|
+
);
|
|
1050
|
+
|
|
1051
|
+
afterStatement.append(
|
|
1052
|
+
SQL` ORDER BY time ASC, timeUnixNano ASC
|
|
1053
|
+
LIMIT ${{
|
|
1054
|
+
type: TableColumnType.Number,
|
|
1055
|
+
value: count,
|
|
1056
|
+
}}`,
|
|
1057
|
+
);
|
|
1021
1058
|
|
|
1022
1059
|
const [beforeResult, afterResult] = await Promise.all([
|
|
1023
1060
|
LogDatabaseService.executeQuery(beforeStatement),
|
|
@@ -31,6 +31,25 @@ export interface FacetRequest extends MetricFilters {
|
|
|
31
31
|
limit?: number | undefined;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
export interface MetricsForTraceRequest {
|
|
35
|
+
projectId: ObjectID;
|
|
36
|
+
/** Exemplar traceId stamped on Metric rows (bloom-indexed). */
|
|
37
|
+
traceId: string;
|
|
38
|
+
/** Optional span-level narrowing within the trace (bloom-indexed). */
|
|
39
|
+
spanIds?: Array<string> | undefined;
|
|
40
|
+
limit?: number | undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export interface MetricForTraceItem {
|
|
44
|
+
name: string;
|
|
45
|
+
time: string;
|
|
46
|
+
value: number;
|
|
47
|
+
spanId: string;
|
|
48
|
+
/** primaryEntityId of the row, stringified for the wire. */
|
|
49
|
+
serviceId: string;
|
|
50
|
+
attributes: JSONObject;
|
|
51
|
+
}
|
|
52
|
+
|
|
34
53
|
/*
|
|
35
54
|
* Facet aggregation for the Metrics page sidebar. Same shape as
|
|
36
55
|
* TraceAggregationService / LogAggregationService — per-facet GROUP BY on
|
|
@@ -61,6 +80,108 @@ export class MetricAggregationService {
|
|
|
61
80
|
]);
|
|
62
81
|
private static readonly ATTRIBUTE_KEY_PATTERN: RegExp = /^[a-zA-Z0-9._:/-]+$/;
|
|
63
82
|
private static readonly MAX_FACET_KEY_LENGTH: number = 256;
|
|
83
|
+
/**
|
|
84
|
+
* Cap on rows returned by the reverse exemplar lookup. A single trace
|
|
85
|
+
* rarely stamps more than a handful of exemplars, so hitting this cap
|
|
86
|
+
* means a pathological instrumentation loop — truncating is safe.
|
|
87
|
+
*/
|
|
88
|
+
private static readonly MAX_METRICS_FOR_TRACE_LIMIT: number = 500;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Reverse exemplar lookup: every Metric row whose exemplar traceId
|
|
92
|
+
* matches the given trace (optionally narrowed to specific spans).
|
|
93
|
+
* Drives the "Metrics" tab on the trace detail view. traceId and
|
|
94
|
+
* spanId both carry bloom-filter skip indexes, so the read touches
|
|
95
|
+
* only the granules the index cannot rule out.
|
|
96
|
+
*/
|
|
97
|
+
@CaptureSpan()
|
|
98
|
+
public static async getMetricsForTrace(
|
|
99
|
+
request: MetricsForTraceRequest,
|
|
100
|
+
): Promise<Array<MetricForTraceItem>> {
|
|
101
|
+
const statement: Statement =
|
|
102
|
+
MetricAggregationService.buildMetricsForTraceStatement(request);
|
|
103
|
+
|
|
104
|
+
const dbResult: Results = await MetricService.executeQuery(statement);
|
|
105
|
+
const response: DbJSONResponse = await dbResult.json<{
|
|
106
|
+
data?: Array<JSONObject>;
|
|
107
|
+
}>();
|
|
108
|
+
|
|
109
|
+
const rows: Array<JSONObject> = response.data || [];
|
|
110
|
+
|
|
111
|
+
return rows.map((row: JSONObject): MetricForTraceItem => {
|
|
112
|
+
return {
|
|
113
|
+
name: String(row["name"] || ""),
|
|
114
|
+
time: String(row["time"] || ""),
|
|
115
|
+
value: Number(row["value"] || 0),
|
|
116
|
+
spanId: String(row["spanId"] || ""),
|
|
117
|
+
serviceId: String(row["serviceId"] || ""),
|
|
118
|
+
attributes: (row["attributes"] as JSONObject) || {},
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
private static buildMetricsForTraceStatement(
|
|
124
|
+
request: MetricsForTraceRequest,
|
|
125
|
+
): Statement {
|
|
126
|
+
const limit: number = Math.min(
|
|
127
|
+
request.limit || MetricAggregationService.MAX_METRICS_FOR_TRACE_LIMIT,
|
|
128
|
+
MetricAggregationService.MAX_METRICS_FOR_TRACE_LIMIT,
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
const statement: Statement = SQL`
|
|
132
|
+
SELECT
|
|
133
|
+
name,
|
|
134
|
+
time,
|
|
135
|
+
toFloat64(value) AS value,
|
|
136
|
+
spanId,
|
|
137
|
+
toString(primaryEntityId) AS serviceId,
|
|
138
|
+
attributes
|
|
139
|
+
FROM ${MetricAggregationService.TABLE_NAME}
|
|
140
|
+
WHERE projectId = ${{
|
|
141
|
+
type: TableColumnType.ObjectID,
|
|
142
|
+
value: request.projectId,
|
|
143
|
+
}}
|
|
144
|
+
AND traceId = ${{
|
|
145
|
+
type: TableColumnType.Text,
|
|
146
|
+
value: request.traceId,
|
|
147
|
+
}}
|
|
148
|
+
`;
|
|
149
|
+
|
|
150
|
+
if (request.spanIds && request.spanIds.length > 0) {
|
|
151
|
+
statement.append(
|
|
152
|
+
SQL` AND spanId IN (${{
|
|
153
|
+
type: TableColumnType.Text,
|
|
154
|
+
value: new Includes(request.spanIds),
|
|
155
|
+
}})`,
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/*
|
|
160
|
+
* Read-side retention filter: rows past their per-service retention
|
|
161
|
+
* stay in their part until the whole part drops (ttl_only_drop_parts).
|
|
162
|
+
*/
|
|
163
|
+
statement.append(" AND retentionDate >= now()");
|
|
164
|
+
|
|
165
|
+
statement.append(
|
|
166
|
+
SQL` ORDER BY time ASC LIMIT ${{
|
|
167
|
+
type: TableColumnType.Number,
|
|
168
|
+
value: limit,
|
|
169
|
+
}}`,
|
|
170
|
+
);
|
|
171
|
+
|
|
172
|
+
/*
|
|
173
|
+
* Cap runtime below the client's 58s request_timeout; 'break' yields
|
|
174
|
+
* partial rows rather than holding a pool connection.
|
|
175
|
+
*/
|
|
176
|
+
statement.append(
|
|
177
|
+
getQuerySettings({
|
|
178
|
+
maxExecutionTimeInSeconds: 45,
|
|
179
|
+
timeoutOverflowMode: "break",
|
|
180
|
+
}),
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
return statement;
|
|
184
|
+
}
|
|
64
185
|
|
|
65
186
|
@CaptureSpan()
|
|
66
187
|
public static async getFacetValues(
|
|
@@ -30,8 +30,8 @@ import {
|
|
|
30
30
|
import { keyForContainer } from "../Utils/Telemetry/TelemetryEntity";
|
|
31
31
|
import { getEntityBudget } from "../Utils/Telemetry/EntityRegistry";
|
|
32
32
|
import { EntityScopeQueryValue } from "../Utils/AnalyticsDatabase/StatementGenerator";
|
|
33
|
-
import
|
|
34
|
-
import
|
|
33
|
+
import InventoryItemService from "./InventoryItemService";
|
|
34
|
+
import InventoryItem from "../../Models/DatabaseModels/InventoryItem";
|
|
35
35
|
import EntityType from "../../Types/Telemetry/EntityType";
|
|
36
36
|
import ObjectID from "../../Types/ObjectID";
|
|
37
37
|
import PositiveNumber from "../../Types/PositiveNumber";
|
|
@@ -298,7 +298,7 @@ export class MetricService extends AnalyticsDatabaseService<Metric> {
|
|
|
298
298
|
|
|
299
299
|
/**
|
|
300
300
|
* All serviceEntityKeys the ingest pipeline can have stamped for rows
|
|
301
|
-
* reporting this `service.name`, from the Postgres
|
|
301
|
+
* reporting this `service.name`, from the Postgres InventoryItem
|
|
302
302
|
* registry. Service identity folds `service.namespace` into the key
|
|
303
303
|
* when the resource carries one (see the service resolver in
|
|
304
304
|
* Common/Server/Utils/Telemetry/TelemetryEntity), so one name maps to
|
|
@@ -324,7 +324,7 @@ export class MetricService extends AnalyticsDatabaseService<Metric> {
|
|
|
324
324
|
try {
|
|
325
325
|
const canonicalName: string = canonicalizeEntityValue(serviceName);
|
|
326
326
|
|
|
327
|
-
const rows: Array<
|
|
327
|
+
const rows: Array<InventoryItem> = await InventoryItemService.findBy({
|
|
328
328
|
query: {
|
|
329
329
|
projectId: new ObjectID(projectId),
|
|
330
330
|
entityType: EntityType.Service,
|
|
@@ -358,7 +358,7 @@ export class MetricService extends AnalyticsDatabaseService<Metric> {
|
|
|
358
358
|
/*
|
|
359
359
|
* Budget-capped projects must not route. At/over the per-type
|
|
360
360
|
* entity budget, ingest stops minting NEW Service registry rows
|
|
361
|
-
* forever (
|
|
361
|
+
* forever (InventoryItemService.beforeCreate) while namespaced
|
|
362
362
|
* serviceEntityKeys keep flowing on signal rows — so a non-empty
|
|
363
363
|
* registry key set may be PERMANENTLY missing identity variants,
|
|
364
364
|
* and a routed `serviceEntityKey IN (...)` would silently return
|
|
@@ -368,7 +368,7 @@ export class MetricService extends AnalyticsDatabaseService<Metric> {
|
|
|
368
368
|
* countBy amortizes to one per (project, service name) per minute.
|
|
369
369
|
*/
|
|
370
370
|
const serviceEntityCount: PositiveNumber =
|
|
371
|
-
await
|
|
371
|
+
await InventoryItemService.countBy({
|
|
372
372
|
query: {
|
|
373
373
|
projectId: new ObjectID(projectId),
|
|
374
374
|
entityType: EntityType.Service,
|
|
@@ -2220,7 +2220,7 @@ export class MetricService extends AnalyticsDatabaseService<Metric> {
|
|
|
2220
2220
|
* attributes == {resource.service.name: v}
|
|
2221
2221
|
* -> MetricItemAggMV1mByService, serviceEntityKey IN (<registry key set>)
|
|
2222
2222
|
* The key set is resolved asynchronously in aggregateBy() from
|
|
2223
|
-
* the Postgres
|
|
2223
|
+
* the Postgres InventoryItem registry — service identity folds
|
|
2224
2224
|
* service.namespace into the key at ingest, so one name can map
|
|
2225
2225
|
* to several keys. No registry rows -> NO routing (raw path).
|
|
2226
2226
|
* entityScope only, attributeKey in {host/k8s-cluster/container} and
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/NetworkDeviceLinkRule";
|
|
3
|
+
|
|
4
|
+
export class Service extends DatabaseService<Model> {
|
|
5
|
+
public constructor() {
|
|
6
|
+
super(Model);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export default new Service();
|