@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
|
@@ -76,7 +76,14 @@ export interface LLMUsage {
|
|
|
76
76
|
export interface LLMCompletionResponse {
|
|
77
77
|
content: string;
|
|
78
78
|
toolCalls?: Array<LLMToolCall> | undefined;
|
|
79
|
-
|
|
79
|
+
/*
|
|
80
|
+
* "length" means the provider cut generation off at the output-token cap —
|
|
81
|
+
* the content is incomplete and must not be presented as a finished answer.
|
|
82
|
+
* Every wire branch maps its provider-specific truncation signal here
|
|
83
|
+
* (OpenAI-style finish_reason "length", Anthropic stop_reason "max_tokens",
|
|
84
|
+
* Ollama done_reason "length").
|
|
85
|
+
*/
|
|
86
|
+
stopReason?: "stop" | "tool_use" | "length" | undefined;
|
|
80
87
|
usage: LLMUsage | undefined;
|
|
81
88
|
}
|
|
82
89
|
|
|
@@ -792,6 +799,24 @@ export default class LLMService {
|
|
|
792
799
|
const toolCalls: Array<LLMToolCall> | undefined =
|
|
793
800
|
this.parseOpenAIToolCalls(message);
|
|
794
801
|
|
|
802
|
+
/*
|
|
803
|
+
* finish_reason "length" means the model hit the output-token cap, so the
|
|
804
|
+
* content (or a trailing tool call) is truncated. It takes precedence over
|
|
805
|
+
* the tool-call heuristic: executing a cut-off tool call or presenting a
|
|
806
|
+
* cut-off answer as complete would be wrong either way. Otherwise the
|
|
807
|
+
* presence of tool calls decides — some OpenAI-compatible servers report
|
|
808
|
+
* finish_reason "stop" even when they emitted tool calls.
|
|
809
|
+
*/
|
|
810
|
+
const finishReason: string = (choices[0]!["finish_reason"] as string) || "";
|
|
811
|
+
|
|
812
|
+
let stopReason: "stop" | "tool_use" | "length" = "stop";
|
|
813
|
+
|
|
814
|
+
if (finishReason === "length") {
|
|
815
|
+
stopReason = "length";
|
|
816
|
+
} else if (toolCalls && toolCalls.length > 0) {
|
|
817
|
+
stopReason = "tool_use";
|
|
818
|
+
}
|
|
819
|
+
|
|
795
820
|
/*
|
|
796
821
|
* OpenAI (and Azure OpenAI) automatically cache a stable prompt prefix
|
|
797
822
|
* once it is long enough and report the cache hit under
|
|
@@ -806,7 +831,7 @@ export default class LLMService {
|
|
|
806
831
|
return {
|
|
807
832
|
content: (message["content"] as string) || "",
|
|
808
833
|
toolCalls: toolCalls,
|
|
809
|
-
stopReason:
|
|
834
|
+
stopReason: stopReason,
|
|
810
835
|
usage: usage
|
|
811
836
|
? {
|
|
812
837
|
promptTokens: usage["prompt_tokens"] as number,
|
|
@@ -960,8 +985,14 @@ export default class LLMService {
|
|
|
960
985
|
[LlmType.Mistral]: "https://api.mistral.ai/v1",
|
|
961
986
|
};
|
|
962
987
|
|
|
988
|
+
/*
|
|
989
|
+
* gpt-5.1 is a reasoning model: REASONING_MODEL_NAME_REGEX matches it, so
|
|
990
|
+
* the first request already goes out with max_completion_tokens instead
|
|
991
|
+
* of the legacy max_tokens, and any sampling params it rejects are
|
|
992
|
+
* dropped by the error-driven retry.
|
|
993
|
+
*/
|
|
963
994
|
const defaultModels: Record<string, string> = {
|
|
964
|
-
[LlmType.OpenAI]: "gpt-
|
|
995
|
+
[LlmType.OpenAI]: "gpt-5.1",
|
|
965
996
|
[LlmType.Groq]: "llama-3.3-70b-versatile",
|
|
966
997
|
[LlmType.Mistral]: "mistral-large-latest",
|
|
967
998
|
};
|
|
@@ -971,7 +1002,7 @@ export default class LLMService {
|
|
|
971
1002
|
defaultBaseUrls[config.llmType] ||
|
|
972
1003
|
"https://api.openai.com/v1";
|
|
973
1004
|
const modelName: string =
|
|
974
|
-
config.modelName || defaultModels[config.llmType] || "gpt-
|
|
1005
|
+
config.modelName || defaultModels[config.llmType] || "gpt-5.1";
|
|
975
1006
|
const response: HTTPErrorResponse | HTTPResponse<JSONObject> =
|
|
976
1007
|
await this.postOpenAIChatCompletion({
|
|
977
1008
|
requestUrl: this.buildOpenAICompatibleChatCompletionsUrl(baseUrl),
|
|
@@ -1049,6 +1080,15 @@ export default class LLMService {
|
|
|
1049
1080
|
);
|
|
1050
1081
|
}
|
|
1051
1082
|
|
|
1083
|
+
/*
|
|
1084
|
+
* On Azure the model field is the DEPLOYMENT NAME the operator chose —
|
|
1085
|
+
* not a model id. Keep the long-standing "gpt-4o" guess for tenants who
|
|
1086
|
+
* left it blank: existing deployments named after the old default keep
|
|
1087
|
+
* working, and Azure deployment names cannot contain dots, so a
|
|
1088
|
+
* "gpt-5.1"-style id would never match a real deployment. The
|
|
1089
|
+
* error-driven parameter adaptation corrects token-param mismatches
|
|
1090
|
+
* either way.
|
|
1091
|
+
*/
|
|
1052
1092
|
const modelName: string = config.modelName || "gpt-4o";
|
|
1053
1093
|
const requestUrl: string = LLMService.buildAzureOpenAIChatCompletionsUrl(
|
|
1054
1094
|
config.baseUrl,
|
|
@@ -1198,7 +1238,11 @@ export default class LLMService {
|
|
|
1198
1238
|
}
|
|
1199
1239
|
|
|
1200
1240
|
const baseUrl: string = config.baseUrl || "https://api.anthropic.com/v1";
|
|
1201
|
-
|
|
1241
|
+
/*
|
|
1242
|
+
* Current Sonnet alias. The dated claude-sonnet-4-20250514 ID this used to
|
|
1243
|
+
* default to is deprecated and retires in June 2026.
|
|
1244
|
+
*/
|
|
1245
|
+
const modelName: string = config.modelName || "claude-sonnet-5";
|
|
1202
1246
|
|
|
1203
1247
|
let systemMessage: string = "";
|
|
1204
1248
|
|
|
@@ -1321,10 +1365,25 @@ export default class LLMService {
|
|
|
1321
1365
|
|
|
1322
1366
|
const usage: JSONObject = jsonData["usage"] as JSONObject;
|
|
1323
1367
|
|
|
1368
|
+
/*
|
|
1369
|
+
* Anthropic reports truncation as stop_reason "max_tokens" — surface it as
|
|
1370
|
+
* "length" so callers never present a cut-off answer as complete.
|
|
1371
|
+
*/
|
|
1372
|
+
const anthropicStopReason: string =
|
|
1373
|
+
(jsonData["stop_reason"] as string) || "";
|
|
1374
|
+
|
|
1375
|
+
let stopReason: "stop" | "tool_use" | "length" = "stop";
|
|
1376
|
+
|
|
1377
|
+
if (anthropicStopReason === "tool_use") {
|
|
1378
|
+
stopReason = "tool_use";
|
|
1379
|
+
} else if (anthropicStopReason === "max_tokens") {
|
|
1380
|
+
stopReason = "length";
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1324
1383
|
return {
|
|
1325
1384
|
content: textContent,
|
|
1326
1385
|
toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
1327
|
-
stopReason:
|
|
1386
|
+
stopReason: stopReason,
|
|
1328
1387
|
usage: usage
|
|
1329
1388
|
? {
|
|
1330
1389
|
promptTokens: (usage["input_tokens"] as number) || 0,
|
|
@@ -1362,7 +1421,8 @@ export default class LLMService {
|
|
|
1362
1421
|
throw new BadDataException("Ollama base URL is required");
|
|
1363
1422
|
}
|
|
1364
1423
|
|
|
1365
|
-
|
|
1424
|
+
// llama2 predates tool calling entirely; llama3.1 is the oldest sane default.
|
|
1425
|
+
const modelName: string = config.modelName || "llama3.1";
|
|
1366
1426
|
|
|
1367
1427
|
const requestData: JSONObject = {
|
|
1368
1428
|
model: modelName,
|
|
@@ -1479,10 +1539,27 @@ export default class LLMService {
|
|
|
1479
1539
|
const ollamaCompletionTokens: number =
|
|
1480
1540
|
(jsonData["eval_count"] as number) || 0;
|
|
1481
1541
|
|
|
1542
|
+
/*
|
|
1543
|
+
* Ollama reports why generation ended in done_reason on the final
|
|
1544
|
+
* /api/chat response: "length" when num_predict cut the output off
|
|
1545
|
+
* ("limit" is accepted too for wire-compat variants). Truncation takes
|
|
1546
|
+
* precedence over the tool-call heuristic — a cut-off tool call must not
|
|
1547
|
+
* be executed.
|
|
1548
|
+
*/
|
|
1549
|
+
const doneReason: string = (jsonData["done_reason"] as string) || "";
|
|
1550
|
+
|
|
1551
|
+
let stopReason: "stop" | "tool_use" | "length" = "stop";
|
|
1552
|
+
|
|
1553
|
+
if (doneReason === "length" || doneReason === "limit") {
|
|
1554
|
+
stopReason = "length";
|
|
1555
|
+
} else if (toolCalls && toolCalls.length > 0) {
|
|
1556
|
+
stopReason = "tool_use";
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1482
1559
|
return {
|
|
1483
1560
|
content: (message["content"] as string) || "",
|
|
1484
1561
|
toolCalls: toolCalls,
|
|
1485
|
-
stopReason:
|
|
1562
|
+
stopReason: stopReason,
|
|
1486
1563
|
usage:
|
|
1487
1564
|
ollamaPromptTokens || ollamaCompletionTokens
|
|
1488
1565
|
? {
|
|
@@ -51,6 +51,13 @@ import Dictionary from "../../../Types/Dictionary";
|
|
|
51
51
|
import InBetween from "../../../Types/BaseDatabase/InBetween";
|
|
52
52
|
import MetricQueryConfigData from "../../../Types/Metrics/MetricQueryConfigData";
|
|
53
53
|
import MetricExplorerUrl from "../../../Utils/Metrics/MetricExplorerUrl";
|
|
54
|
+
import {
|
|
55
|
+
CrossSignalQueryParams,
|
|
56
|
+
TelemetryCrossSignalScope,
|
|
57
|
+
toLogsExplorerQueryParams,
|
|
58
|
+
toTracesExplorerQueryParams,
|
|
59
|
+
} from "../../../Utils/Telemetry/CrossSignalScope";
|
|
60
|
+
import ObjectID from "../../../Types/ObjectID";
|
|
54
61
|
import Typeof from "../../../Types/Typeof";
|
|
55
62
|
import ReturnResult from "../../../Types/IsolatedVM/ReturnResult";
|
|
56
63
|
import URL from "../../../Types/API/URL";
|
|
@@ -81,6 +88,16 @@ import MonitorStepProxmoxMonitor from "../../../Types/Monitor/MonitorStepProxmox
|
|
|
81
88
|
import MonitorStepCephMonitor from "../../../Types/Monitor/MonitorStepCephMonitor";
|
|
82
89
|
import MonitorStepDockerSwarmMonitor from "../../../Types/Monitor/MonitorStepDockerSwarmMonitor";
|
|
83
90
|
|
|
91
|
+
/**
|
|
92
|
+
* A cross-signal deep link into a telemetry explorer, plus the scope
|
|
93
|
+
* fields that could not be carried into that explorer's URL grammar
|
|
94
|
+
* (so consumers can render a "scope partially carried" hint).
|
|
95
|
+
*/
|
|
96
|
+
export interface TelemetryExplorerDeepLink {
|
|
97
|
+
url: string;
|
|
98
|
+
dropped: Array<string>;
|
|
99
|
+
}
|
|
100
|
+
|
|
84
101
|
export default class MonitorCriteriaEvaluator {
|
|
85
102
|
public static async processMonitorStep(input: {
|
|
86
103
|
dataToProcess: DataToProcess;
|
|
@@ -924,6 +941,7 @@ ${contextBlock}
|
|
|
924
941
|
return MonitorCriteriaEvaluator.buildMetricRootCauseContext({
|
|
925
942
|
criteriaInstance: input.criteriaInstance,
|
|
926
943
|
monitor: input.monitor,
|
|
944
|
+
monitorStep: input.monitorStep,
|
|
927
945
|
});
|
|
928
946
|
}
|
|
929
947
|
|
|
@@ -1038,6 +1056,7 @@ ${contextBlock}
|
|
|
1038
1056
|
private static buildMetricRootCauseContext(input: {
|
|
1039
1057
|
criteriaInstance: MonitorCriteriaInstance;
|
|
1040
1058
|
monitor: Monitor;
|
|
1059
|
+
monitorStep?: MonitorStep | undefined;
|
|
1041
1060
|
}): string | null {
|
|
1042
1061
|
/*
|
|
1043
1062
|
* Pick the first populated metric context across the instance's filters.
|
|
@@ -1147,6 +1166,42 @@ ${contextBlock}
|
|
|
1147
1166
|
sections.push(`\n\n[Open metric in dashboard](${deepLink})`);
|
|
1148
1167
|
}
|
|
1149
1168
|
|
|
1169
|
+
/*
|
|
1170
|
+
* Sibling deep links: the same breach window (and, where derivable,
|
|
1171
|
+
* the monitor's service/attribute scope) carried over to the Logs and
|
|
1172
|
+
* Traces explorers, so the on-call engineer can pivot signals without
|
|
1173
|
+
* rebuilding the filter set by hand.
|
|
1174
|
+
*/
|
|
1175
|
+
const logsLink: TelemetryExplorerDeepLink | null =
|
|
1176
|
+
MonitorCriteriaEvaluator.buildLogsExplorerDeepLink({
|
|
1177
|
+
monitor: input.monitor,
|
|
1178
|
+
ctx,
|
|
1179
|
+
monitorStep: input.monitorStep,
|
|
1180
|
+
});
|
|
1181
|
+
|
|
1182
|
+
if (logsLink) {
|
|
1183
|
+
sections.push(
|
|
1184
|
+
`\n\n[Open logs in dashboard](${logsLink.url})${MonitorCriteriaEvaluator.formatScopeDroppedHint(
|
|
1185
|
+
logsLink.dropped,
|
|
1186
|
+
)}`,
|
|
1187
|
+
);
|
|
1188
|
+
}
|
|
1189
|
+
|
|
1190
|
+
const tracesLink: TelemetryExplorerDeepLink | null =
|
|
1191
|
+
MonitorCriteriaEvaluator.buildTracesExplorerDeepLink({
|
|
1192
|
+
monitor: input.monitor,
|
|
1193
|
+
ctx,
|
|
1194
|
+
monitorStep: input.monitorStep,
|
|
1195
|
+
});
|
|
1196
|
+
|
|
1197
|
+
if (tracesLink) {
|
|
1198
|
+
sections.push(
|
|
1199
|
+
`\n\n[Open traces in dashboard](${tracesLink.url})${MonitorCriteriaEvaluator.formatScopeDroppedHint(
|
|
1200
|
+
tracesLink.dropped,
|
|
1201
|
+
)}`,
|
|
1202
|
+
);
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1150
1205
|
return sections.join("\n");
|
|
1151
1206
|
}
|
|
1152
1207
|
|
|
@@ -1353,21 +1408,17 @@ ${contextBlock}
|
|
|
1353
1408
|
},
|
|
1354
1409
|
};
|
|
1355
1410
|
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
const breachTime: Date | undefined = input.ctx.breachingSample?.timestamp;
|
|
1359
|
-
const startTime: Date = breachTime
|
|
1360
|
-
? OneUptimeDate.addRemoveMinutes(breachTime, -30)
|
|
1361
|
-
: OneUptimeDate.addRemoveHours(now, -1);
|
|
1362
|
-
const endTime: Date = breachTime
|
|
1363
|
-
? OneUptimeDate.addRemoveMinutes(breachTime, 15)
|
|
1364
|
-
: now;
|
|
1411
|
+
const breachWindow: { startTime: Date; endTime: Date } =
|
|
1412
|
+
MonitorCriteriaEvaluator.getMetricBreachExplorerWindow(input.ctx);
|
|
1365
1413
|
|
|
1366
1414
|
const urlParams: Dictionary<string> =
|
|
1367
1415
|
MetricExplorerUrl.buildQueryParamsFromMetricViewData({
|
|
1368
1416
|
queryConfigs: [queryConfig],
|
|
1369
1417
|
formulaConfigs: [],
|
|
1370
|
-
startAndEndDate: new InBetween(
|
|
1418
|
+
startAndEndDate: new InBetween(
|
|
1419
|
+
breachWindow.startTime,
|
|
1420
|
+
breachWindow.endTime,
|
|
1421
|
+
),
|
|
1371
1422
|
});
|
|
1372
1423
|
|
|
1373
1424
|
const params: URLSearchParams = new URLSearchParams();
|
|
@@ -1383,6 +1434,149 @@ ${contextBlock}
|
|
|
1383
1434
|
return `${DashboardClientUrl.toString()}/${projectId}/metrics/view?${params.toString()}`;
|
|
1384
1435
|
}
|
|
1385
1436
|
|
|
1437
|
+
// Time window: breach moment +- 15 minutes (or fall back to last hour).
|
|
1438
|
+
private static getMetricBreachExplorerWindow(ctx: MetricCriteriaContext): {
|
|
1439
|
+
startTime: Date;
|
|
1440
|
+
endTime: Date;
|
|
1441
|
+
} {
|
|
1442
|
+
const now: Date = OneUptimeDate.getCurrentDate();
|
|
1443
|
+
const breachTime: Date | undefined = ctx.breachingSample?.timestamp;
|
|
1444
|
+
const startTime: Date = breachTime
|
|
1445
|
+
? OneUptimeDate.addRemoveMinutes(breachTime, -30)
|
|
1446
|
+
: OneUptimeDate.addRemoveHours(now, -1);
|
|
1447
|
+
const endTime: Date = breachTime
|
|
1448
|
+
? OneUptimeDate.addRemoveMinutes(breachTime, 15)
|
|
1449
|
+
: now;
|
|
1450
|
+
|
|
1451
|
+
return { startTime, endTime };
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
/*
|
|
1455
|
+
* The slice of telemetry a metric breach describes, in cross-signal
|
|
1456
|
+
* terms: the breach window, the criteria's metric attribute filters
|
|
1457
|
+
* (overlaid with the per-series labels when per-series alerting
|
|
1458
|
+
* identified a specific series), and the monitor step's telemetry
|
|
1459
|
+
* service scope when one is configured.
|
|
1460
|
+
*/
|
|
1461
|
+
private static buildMetricBreachTelemetryScope(input: {
|
|
1462
|
+
ctx: MetricCriteriaContext;
|
|
1463
|
+
monitorStep?: MonitorStep | undefined;
|
|
1464
|
+
}): TelemetryCrossSignalScope {
|
|
1465
|
+
const breachWindow: { startTime: Date; endTime: Date } =
|
|
1466
|
+
MonitorCriteriaEvaluator.getMetricBreachExplorerWindow(input.ctx);
|
|
1467
|
+
|
|
1468
|
+
const attributes: Dictionary<string> = {};
|
|
1469
|
+
|
|
1470
|
+
const attributeSources: Array<JSONObject> = [
|
|
1471
|
+
input.ctx.filterAttributes || {},
|
|
1472
|
+
input.ctx.seriesLabels || {},
|
|
1473
|
+
];
|
|
1474
|
+
|
|
1475
|
+
for (const source of attributeSources) {
|
|
1476
|
+
for (const key of Object.keys(source)) {
|
|
1477
|
+
const value: unknown = source[key];
|
|
1478
|
+
|
|
1479
|
+
if (
|
|
1480
|
+
typeof value === "string" ||
|
|
1481
|
+
typeof value === "number" ||
|
|
1482
|
+
typeof value === "boolean"
|
|
1483
|
+
) {
|
|
1484
|
+
attributes[key] = String(value);
|
|
1485
|
+
}
|
|
1486
|
+
}
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
const serviceIds: Array<string> = (
|
|
1490
|
+
input.monitorStep?.data?.metricMonitor?.telemetryServiceIds || []
|
|
1491
|
+
).map((serviceId: ObjectID): string => {
|
|
1492
|
+
return serviceId.toString();
|
|
1493
|
+
});
|
|
1494
|
+
|
|
1495
|
+
return {
|
|
1496
|
+
...(serviceIds.length > 0 ? { serviceIds } : {}),
|
|
1497
|
+
...(Object.keys(attributes).length > 0 ? { attributes } : {}),
|
|
1498
|
+
startTime: breachWindow.startTime,
|
|
1499
|
+
endTime: breachWindow.endTime,
|
|
1500
|
+
};
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
private static buildLogsExplorerDeepLink(input: {
|
|
1504
|
+
monitor: Monitor;
|
|
1505
|
+
ctx: MetricCriteriaContext;
|
|
1506
|
+
monitorStep?: MonitorStep | undefined;
|
|
1507
|
+
}): TelemetryExplorerDeepLink | null {
|
|
1508
|
+
const projectId: string | undefined = input.monitor.projectId?.toString();
|
|
1509
|
+
|
|
1510
|
+
if (!projectId) {
|
|
1511
|
+
return null;
|
|
1512
|
+
}
|
|
1513
|
+
|
|
1514
|
+
const scope: TelemetryCrossSignalScope =
|
|
1515
|
+
MonitorCriteriaEvaluator.buildMetricBreachTelemetryScope({
|
|
1516
|
+
ctx: input.ctx,
|
|
1517
|
+
monitorStep: input.monitorStep,
|
|
1518
|
+
});
|
|
1519
|
+
|
|
1520
|
+
/*
|
|
1521
|
+
* The URL schema is owned by CrossSignalScope — the same grammar the
|
|
1522
|
+
* logs explorer parses — so this link cannot drift from what the
|
|
1523
|
+
* explorer restores.
|
|
1524
|
+
*/
|
|
1525
|
+
const queryParams: CrossSignalQueryParams =
|
|
1526
|
+
toLogsExplorerQueryParams(scope);
|
|
1527
|
+
|
|
1528
|
+
const params: URLSearchParams = new URLSearchParams();
|
|
1529
|
+
|
|
1530
|
+
for (const paramName in queryParams.params) {
|
|
1531
|
+
params.set(paramName, queryParams.params[paramName] as string);
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1534
|
+
return {
|
|
1535
|
+
url: `${DashboardClientUrl.toString()}/${projectId}/logs?${params.toString()}`,
|
|
1536
|
+
dropped: queryParams.dropped,
|
|
1537
|
+
};
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
private static buildTracesExplorerDeepLink(input: {
|
|
1541
|
+
monitor: Monitor;
|
|
1542
|
+
ctx: MetricCriteriaContext;
|
|
1543
|
+
monitorStep?: MonitorStep | undefined;
|
|
1544
|
+
}): TelemetryExplorerDeepLink | null {
|
|
1545
|
+
const projectId: string | undefined = input.monitor.projectId?.toString();
|
|
1546
|
+
|
|
1547
|
+
if (!projectId) {
|
|
1548
|
+
return null;
|
|
1549
|
+
}
|
|
1550
|
+
|
|
1551
|
+
const scope: TelemetryCrossSignalScope =
|
|
1552
|
+
MonitorCriteriaEvaluator.buildMetricBreachTelemetryScope({
|
|
1553
|
+
ctx: input.ctx,
|
|
1554
|
+
monitorStep: input.monitorStep,
|
|
1555
|
+
});
|
|
1556
|
+
|
|
1557
|
+
const queryParams: CrossSignalQueryParams =
|
|
1558
|
+
toTracesExplorerQueryParams(scope);
|
|
1559
|
+
|
|
1560
|
+
const params: URLSearchParams = new URLSearchParams();
|
|
1561
|
+
|
|
1562
|
+
for (const paramName in queryParams.params) {
|
|
1563
|
+
params.set(paramName, queryParams.params[paramName] as string);
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
return {
|
|
1567
|
+
url: `${DashboardClientUrl.toString()}/${projectId}/traces?${params.toString()}`,
|
|
1568
|
+
dropped: queryParams.dropped,
|
|
1569
|
+
};
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1572
|
+
private static formatScopeDroppedHint(dropped: Array<string>): string {
|
|
1573
|
+
if (dropped.length === 0) {
|
|
1574
|
+
return "";
|
|
1575
|
+
}
|
|
1576
|
+
|
|
1577
|
+
return ` _(scope partially carried — not applied: ${dropped.join(", ")})_`;
|
|
1578
|
+
}
|
|
1579
|
+
|
|
1386
1580
|
private static async buildKubernetesRootCauseContext(input: {
|
|
1387
1581
|
dataToProcess: DataToProcess;
|
|
1388
1582
|
monitorStep: MonitorStep;
|
|
@@ -126,10 +126,12 @@ export default class SSRFProtection {
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
/*
|
|
129
|
-
* OneUptime's URL parser
|
|
130
|
-
* "169.254.169.254:80").
|
|
131
|
-
*
|
|
132
|
-
* a ":", is mistaken for
|
|
129
|
+
* OneUptime's URL parser hands back the whole authority — userinfo, host
|
|
130
|
+
* and port glued together ("user:pw@169.254.169.254:80"). Reduce it to the
|
|
131
|
+
* bare host before the checks below: a literal-with-port otherwise slips
|
|
132
|
+
* past the IPv4 blocklist and, because it contains a ":", is mistaken for
|
|
133
|
+
* an IP literal and skips DNS resolution entirely, and userinfo otherwise
|
|
134
|
+
* gets to nominate the host outright.
|
|
133
135
|
*/
|
|
134
136
|
const hostname: string = SSRFProtection.extractHost(rawHost);
|
|
135
137
|
|
|
@@ -137,16 +139,41 @@ export default class SSRFProtection {
|
|
|
137
139
|
throw new BadDataException("Webhook URL must include a host.");
|
|
138
140
|
}
|
|
139
141
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
142
|
+
/*
|
|
143
|
+
* Check the host BOTH parsers see, not just ours.
|
|
144
|
+
*
|
|
145
|
+
* A guard is only worth something if it reasons about the host the HTTP
|
|
146
|
+
* client will actually dial, and OneUptime's parser and WHATWG do not
|
|
147
|
+
* always agree on which substring that is — userinfo was one such
|
|
148
|
+
* disagreement, and treating it as the only one would be optimistic. So
|
|
149
|
+
* whenever the two answers differ, both are held to the blocklist and a
|
|
150
|
+
* verdict of "internal" from either one is enough to refuse. A legitimate
|
|
151
|
+
* public URL parses to a public host under both, and pays only a string
|
|
152
|
+
* comparison for the privilege.
|
|
153
|
+
*/
|
|
154
|
+
const whatwgHostname: string = SSRFProtection.getBareHostname(rawUrl);
|
|
155
|
+
|
|
156
|
+
const hostnames: Array<string> =
|
|
157
|
+
whatwgHostname && whatwgHostname !== hostname
|
|
158
|
+
? [hostname, whatwgHostname]
|
|
159
|
+
: [hostname];
|
|
160
|
+
|
|
161
|
+
for (const host of hostnames) {
|
|
162
|
+
if (SSRFProtection.isBlockedHostnameLiteral(host)) {
|
|
163
|
+
throw new BadDataException(
|
|
164
|
+
"Webhook URL points to a private, loopback, or link-local address and is not allowed.",
|
|
165
|
+
);
|
|
166
|
+
}
|
|
144
167
|
}
|
|
145
168
|
|
|
146
|
-
|
|
169
|
+
for (const host of hostnames) {
|
|
170
|
+
if (SSRFProtection.isIpLiteral(host)) {
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
|
|
147
174
|
let resolved: Array<{ address: string }> = [];
|
|
148
175
|
try {
|
|
149
|
-
resolved = await dns.promises.lookup(
|
|
176
|
+
resolved = await dns.promises.lookup(host, { all: true });
|
|
150
177
|
} catch {
|
|
151
178
|
throw new BadDataException(
|
|
152
179
|
"Webhook URL hostname could not be resolved via DNS.",
|
|
@@ -166,12 +193,34 @@ export default class SSRFProtection {
|
|
|
166
193
|
}
|
|
167
194
|
|
|
168
195
|
/*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
196
|
+
* Everything up to and including the LAST "@" is userinfo, never the host.
|
|
197
|
+
*
|
|
198
|
+
* This matters because OneUptime's Hostname deliberately KEEPS userinfo in
|
|
199
|
+
* the string it stores, and a "host:port" split over that string reads the
|
|
200
|
+
* USERNAME as the host: "example.com:pass@169.254.169.254" holds exactly one
|
|
201
|
+
* colon, so splitting on it answers "example.com" — which resolves publicly
|
|
202
|
+
* and sails through the blocklist — while every RFC 3986 client (axios, and
|
|
203
|
+
* WHATWG before it) dials 169.254.169.254.
|
|
204
|
+
*
|
|
205
|
+
* The LAST "@" is the delimiter, which is how WHATWG resolves an authority
|
|
206
|
+
* carrying more than one and therefore where the HTTP client will split it.
|
|
207
|
+
* Hostname's own validation happens to reject a second "@" before this runs,
|
|
208
|
+
* so the choice only shows up on hosts reaching us by another route — but
|
|
209
|
+
* splitting on the first "@" would be a bypass the day that changes.
|
|
210
|
+
*/
|
|
211
|
+
private static stripUserInfo(authority: string): string {
|
|
212
|
+
const atIndex: number = authority.lastIndexOf("@");
|
|
213
|
+
return atIndex === -1 ? authority : authority.substring(atIndex + 1);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/*
|
|
217
|
+
* Extracts the bare host (IPv4, IPv6, or hostname) from a
|
|
218
|
+
* "[userinfo@]host[:port]" string, handling bracketed IPv6 (`[::1]`,
|
|
219
|
+
* `[::1]:8080`) and unbracketed IPv6 literals (which contain multiple colons
|
|
220
|
+
* and carry no port).
|
|
172
221
|
*/
|
|
173
222
|
private static extractHost(hostWithPort: string): string {
|
|
174
|
-
const host: string = hostWithPort.trim();
|
|
223
|
+
const host: string = SSRFProtection.stripUserInfo(hostWithPort.trim());
|
|
175
224
|
|
|
176
225
|
if (host.startsWith("[")) {
|
|
177
226
|
const closingBracketIndex: number = host.indexOf("]");
|
|
@@ -296,9 +345,9 @@ export default class SSRFProtection {
|
|
|
296
345
|
* True when an IPv6 literal points somewhere the server must never be made
|
|
297
346
|
* to reach. Ranges, not spellings: loopback, unspecified, link-local
|
|
298
347
|
* (fe80::/10), unique-local (fc00::/7) and multicast (ff00::/8), plus the
|
|
299
|
-
*
|
|
300
|
-
* (
|
|
301
|
-
* (
|
|
348
|
+
* ways IPv6 can embed IPv4 routing endpoints - IPv4-mapped (::ffff:0:0/96),
|
|
349
|
+
* IPv4-compatible (::/96), NAT64 (64:ff9b::/96), 6to4 (2002::/16), and
|
|
350
|
+
* Teredo (2001:0000::/32) - which are handed to the IPv4 blocklist.
|
|
302
351
|
*/
|
|
303
352
|
private static isBlockedIpv6(address: string): boolean {
|
|
304
353
|
const groups: Array<number> | null = SSRFProtection.expandIpv6(address);
|
|
@@ -316,9 +365,19 @@ export default class SSRFProtection {
|
|
|
316
365
|
});
|
|
317
366
|
};
|
|
318
367
|
|
|
319
|
-
const embeddedIpv4: () => string = (
|
|
320
|
-
|
|
321
|
-
|
|
368
|
+
const embeddedIpv4: (highGroupIndex: number, invert?: boolean) => string = (
|
|
369
|
+
highGroupIndex: number,
|
|
370
|
+
invert: boolean = false,
|
|
371
|
+
): string => {
|
|
372
|
+
let high: number = groups[highGroupIndex] as number;
|
|
373
|
+
let low: number = groups[highGroupIndex + 1] as number;
|
|
374
|
+
|
|
375
|
+
// Teredo conceals the client IPv4 address by flipping all 32 bits.
|
|
376
|
+
if (invert) {
|
|
377
|
+
high ^= 0xffff;
|
|
378
|
+
low ^= 0xffff;
|
|
379
|
+
}
|
|
380
|
+
|
|
322
381
|
return `${high >> 8}.${high & 0xff}.${low >> 8}.${low & 0xff}`;
|
|
323
382
|
};
|
|
324
383
|
|
|
@@ -334,7 +393,7 @@ export default class SSRFProtection {
|
|
|
334
393
|
|
|
335
394
|
// ::ffff:0:0/96 — IPv4-mapped.
|
|
336
395
|
if (isZeroThrough(5) && groups[5] === 0xffff) {
|
|
337
|
-
return SSRFProtection.isBlockedIpv4(embeddedIpv4());
|
|
396
|
+
return SSRFProtection.isBlockedIpv4(embeddedIpv4(6));
|
|
338
397
|
}
|
|
339
398
|
|
|
340
399
|
// 64:ff9b::/96 — NAT64 well-known prefix.
|
|
@@ -346,12 +405,28 @@ export default class SSRFProtection {
|
|
|
346
405
|
groups[4] === 0 &&
|
|
347
406
|
groups[5] === 0
|
|
348
407
|
) {
|
|
349
|
-
return SSRFProtection.isBlockedIpv4(embeddedIpv4());
|
|
408
|
+
return SSRFProtection.isBlockedIpv4(embeddedIpv4(6));
|
|
350
409
|
}
|
|
351
410
|
|
|
352
411
|
// ::/96 — IPv4-compatible (deprecated, still routable by some stacks).
|
|
353
412
|
if (isZeroThrough(6)) {
|
|
354
|
-
return SSRFProtection.isBlockedIpv4(embeddedIpv4());
|
|
413
|
+
return SSRFProtection.isBlockedIpv4(embeddedIpv4(6));
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// 2002::/16 — 6to4 stores the IPv4 gateway in bits 16-48.
|
|
417
|
+
if (groups[0] === 0x2002) {
|
|
418
|
+
return SSRFProtection.isBlockedIpv4(embeddedIpv4(1));
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
/*
|
|
422
|
+
* 2001:0000::/32 — Teredo stores its server IPv4 in bits 32-64 and
|
|
423
|
+
* an inverted client IPv4 in the last 32 bits.
|
|
424
|
+
*/
|
|
425
|
+
if (groups[0] === 0x2001 && groups[1] === 0) {
|
|
426
|
+
return (
|
|
427
|
+
SSRFProtection.isBlockedIpv4(embeddedIpv4(2)) ||
|
|
428
|
+
SSRFProtection.isBlockedIpv4(embeddedIpv4(6, true))
|
|
429
|
+
);
|
|
355
430
|
}
|
|
356
431
|
|
|
357
432
|
const first: number = groups[0] as number;
|
|
@@ -4,6 +4,7 @@ import { StatusAPIOptions } from "../API/StatusAPI";
|
|
|
4
4
|
import {
|
|
5
5
|
AppVersion,
|
|
6
6
|
IsBillingEnabled,
|
|
7
|
+
TrustedProxyHops,
|
|
7
8
|
getFrontendEnvVars,
|
|
8
9
|
} from "../EnvironmentConfig";
|
|
9
10
|
import LocalCache from "../Infrastructure/LocalCache";
|
|
@@ -61,10 +62,18 @@ app.disable("x-powered-by");
|
|
|
61
62
|
app.set("port", process.env["PORT"]);
|
|
62
63
|
app.set("view engine", "ejs");
|
|
63
64
|
/*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
65
|
+
* Trust exactly the proxies we run, and no more, so req.protocol and req.ip
|
|
66
|
+
* are correct behind our Nginx gateway.
|
|
67
|
+
*
|
|
68
|
+
* This was `true`, meaning "trust every hop". Under that setting Express
|
|
69
|
+
* resolves req.ip to the LEFTMOST X-Forwarded-For entry -- the end of the
|
|
70
|
+
* header the caller writes -- so req.ip was whatever the caller said it was.
|
|
71
|
+
* A number instead means "the nth hop in from the right is the client", which
|
|
72
|
+
* is the entry one of our own proxies wrote. Express's numeric semantics and
|
|
73
|
+
* resolveClientIp's hop counting are the same count, so req.ip and
|
|
74
|
+
* getClientIp() agree.
|
|
66
75
|
*/
|
|
67
|
-
app.set("trust proxy",
|
|
76
|
+
app.set("trust proxy", TrustedProxyHops);
|
|
68
77
|
app.use(CookieParser());
|
|
69
78
|
|
|
70
79
|
const jsonBodyParserMiddleware: RequestHandler = ExpressJson({
|