@oneuptime/common 12.0.5 → 12.0.7
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/DatabaseModels/AIInsight.ts +1 -1
- package/Models/DatabaseModels/AIRun.ts +33 -0
- package/Models/DatabaseModels/DataSource.ts +744 -0
- package/Models/DatabaseModels/DatabaseBaseModel/FileModel.ts +2 -3
- package/Models/DatabaseModels/DeletedProject.ts +595 -0
- package/Models/DatabaseModels/Index.ts +5 -0
- package/Models/DatabaseModels/Monitor.ts +111 -0
- package/Models/DatabaseModels/Project.ts +3 -3
- package/Models/DatabaseModels/ProjectCallSMSConfig.ts +10 -2
- package/Models/DatabaseModels/User.ts +2 -0
- package/Models/DatabaseModels/UserOnCallLog.ts +2 -0
- package/Models/DatabaseModels/UserOnCallLogTimeline.ts +2 -0
- package/Models/DatabaseModels/UserSession.ts +2 -0
- package/Models/DatabaseModels/UserTotpAuth.ts +6 -4
- package/Models/DatabaseModels/UserWebAuthn.ts +5 -3
- package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -1
- package/Server/API/AIInsightAPI.ts +47 -4
- package/Server/API/AIInvestigationAPI.ts +25 -0
- package/Server/API/DashboardAPI.ts +176 -492
- package/Server/API/DataSourceAPI.ts +268 -0
- package/Server/API/FileAPI.ts +15 -2
- package/Server/API/MicrosoftTeamsAPI.ts +6 -1
- package/Server/API/ProjectAPI.ts +214 -0
- package/Server/API/StatusPageAPI.ts +50 -7
- package/Server/API/UserAPI.ts +119 -0
- package/Server/Infrastructure/ClickhouseConfig.ts +59 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.ts +39 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.ts +50 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.ts +67 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.ts +39 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.ts +24 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.ts +76 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Infrastructure/Queue.ts +26 -0
- package/Server/Infrastructure/QueueWorker.ts +17 -0
- package/Server/Middleware/TelemetryIngest.ts +8 -3
- package/Server/Services/AIAgentService.ts +20 -0
- package/Server/Services/AIInsightService.ts +132 -12
- package/Server/Services/AIRunService.ts +34 -0
- package/Server/Services/AIService.ts +17 -2
- package/Server/Services/AlertService.ts +38 -32
- package/Server/Services/AnalyticsDatabaseService.ts +8 -4
- package/Server/Services/DashboardDomainService.ts +73 -28
- package/Server/Services/DataSourceService.ts +200 -0
- package/Server/Services/DatabaseService.ts +1 -0
- package/Server/Services/DeletedProjectService.ts +138 -0
- package/Server/Services/FileService.ts +61 -0
- package/Server/Services/HostService.ts +92 -0
- package/Server/Services/IncidentEpisodePublicNoteService.ts +18 -0
- package/Server/Services/IncidentPublicNoteService.ts +18 -0
- package/Server/Services/IncidentService.ts +45 -0
- package/Server/Services/Index.ts +4 -0
- package/Server/Services/MonitorService.ts +360 -0
- package/Server/Services/MonitorStatusService.ts +166 -0
- package/Server/Services/OpenTelemetryIngestService.ts +255 -184
- package/Server/Services/ProbeService.ts +20 -0
- package/Server/Services/ProjectService.ts +297 -1
- package/Server/Services/PushNotificationService.ts +71 -0
- package/Server/Services/RumSessionPinService.ts +7 -21
- package/Server/Services/ScheduledMaintenancePublicNoteService.ts +18 -0
- package/Server/Services/StatusPageAnnouncementService.ts +53 -0
- package/Server/Services/StatusPageDomainService.ts +73 -28
- package/Server/Services/StatusPageSubscriberService.ts +13 -0
- package/Server/Services/TeamMemberService.ts +117 -12
- package/Server/Services/TelemetryIngestionKeyService.ts +1 -0
- package/Server/Services/UserService.ts +280 -9
- package/Server/Services/UserWebhookService.ts +34 -109
- package/Server/Services/WorkspaceNotificationRuleService.ts +69 -0
- package/Server/Services/WorkspaceProjectAuthTokenService.ts +37 -1
- package/Server/Static/Vendor/README.md +62 -0
- package/Server/Static/Vendor/fonts/InterVariable.woff2 +0 -0
- package/Server/Static/Vendor/highlight/highlight.min.js +1244 -0
- package/Server/Static/Vendor/highlight/languages/apache.min.js +15 -0
- package/Server/Static/Vendor/highlight/languages/bash.min.js +21 -0
- package/Server/Static/Vendor/highlight/languages/c.min.js +41 -0
- package/Server/Static/Vendor/highlight/languages/cpp.min.js +47 -0
- package/Server/Static/Vendor/highlight/languages/csharp.min.js +49 -0
- package/Server/Static/Vendor/highlight/languages/css.min.js +31 -0
- package/Server/Static/Vendor/highlight/languages/diff.min.js +9 -0
- package/Server/Static/Vendor/highlight/languages/dns.min.js +11 -0
- package/Server/Static/Vendor/highlight/languages/dockerfile.min.js +8 -0
- package/Server/Static/Vendor/highlight/languages/go.min.js +20 -0
- package/Server/Static/Vendor/highlight/languages/graphql.min.js +12 -0
- package/Server/Static/Vendor/highlight/languages/http.min.js +14 -0
- package/Server/Static/Vendor/highlight/languages/ini.min.js +15 -0
- package/Server/Static/Vendor/highlight/languages/java.min.js +38 -0
- package/Server/Static/Vendor/highlight/languages/javascript.min.js +81 -0
- package/Server/Static/Vendor/highlight/languages/json.min.js +8 -0
- package/Server/Static/Vendor/highlight/languages/kotlin.min.js +46 -0
- package/Server/Static/Vendor/highlight/languages/lua.min.js +15 -0
- package/Server/Static/Vendor/highlight/languages/makefile.min.js +14 -0
- package/Server/Static/Vendor/highlight/languages/nginx.min.js +21 -0
- package/Server/Static/Vendor/highlight/languages/perl.min.js +41 -0
- package/Server/Static/Vendor/highlight/languages/php.min.js +59 -0
- package/Server/Static/Vendor/highlight/languages/powershell.min.js +39 -0
- package/Server/Static/Vendor/highlight/languages/python.min.js +42 -0
- package/Server/Static/Vendor/highlight/languages/r.min.js +26 -0
- package/Server/Static/Vendor/highlight/languages/ruby.min.js +54 -0
- package/Server/Static/Vendor/highlight/languages/rust.min.js +27 -0
- package/Server/Static/Vendor/highlight/languages/scala.min.js +28 -0
- package/Server/Static/Vendor/highlight/languages/sql.min.js +21 -0
- package/Server/Static/Vendor/highlight/languages/swift.min.js +68 -0
- package/Server/Static/Vendor/highlight/languages/typescript.min.js +99 -0
- package/Server/Static/Vendor/highlight/languages/xml.min.js +29 -0
- package/Server/Static/Vendor/highlight/languages/yaml.min.js +28 -0
- package/Server/Static/Vendor/highlight/styles/github-dark.min.css +10 -0
- package/Server/Static/Vendor/highlight/styles/vs2015.min.css +1 -0
- package/Server/Static/Vendor/tailwind/tailwind-3.4.5.js +21028 -0
- package/Server/Types/Database/DeleteById.ts +2 -0
- package/Server/Types/Database/DeleteOneBy.ts +6 -0
- package/Server/Types/Database/Permissions/BasePermission.ts +7 -0
- package/Server/Types/Database/Permissions/DeletePermission.ts +2 -0
- package/Server/Types/Database/Permissions/ReadPermission.ts +3 -0
- package/Server/Types/Database/Permissions/TenantPermission.ts +101 -16
- package/Server/Types/Domain.ts +41 -0
- package/Server/Types/Workflow/Components/API/Delete.ts +2 -1
- package/Server/Types/Workflow/Components/API/Get.ts +2 -1
- package/Server/Types/Workflow/Components/API/Patch.ts +2 -1
- package/Server/Types/Workflow/Components/API/Post.ts +2 -1
- package/Server/Types/Workflow/Components/API/Put.ts +2 -1
- package/Server/Types/Workflow/Components/API/Utils.ts +41 -2
- package/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.ts +25 -19
- package/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.ts +6 -5
- package/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.ts +32 -14
- package/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.ts +31 -13
- package/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.ts +29 -20
- package/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.ts +28 -21
- package/Server/Types/Workflow/Components/BaseModel/LogComponentError.ts +89 -0
- package/Server/Types/Workflow/Components/BaseModel/ModelArguments.ts +208 -0
- package/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.ts +11 -0
- package/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.ts +41 -18
- package/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.ts +45 -19
- package/Server/Types/Workflow/Components/Discord/SendMessageToChannel.ts +16 -9
- package/Server/Types/Workflow/Components/IncomingWebhookUtils.ts +66 -0
- package/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.ts +15 -9
- package/Server/Types/Workflow/Components/Slack/SendMessageToChannel.ts +17 -0
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +1 -1
- package/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.ts +171 -0
- package/Server/Utils/AI/CodeFix/FixRunBudget.ts +2 -2
- package/Server/Utils/AI/SRE/AIInvestigationEngine.ts +90 -11
- package/Server/Utils/AI/SRE/AlertInvestigationRunner.ts +1 -0
- package/Server/Utils/AI/SRE/FixFromIncidentTaskTrigger.ts +3 -3
- package/Server/Utils/AI/SRE/IncidentInvestigationRunner.ts +1 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.ts +125 -0
- package/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.ts +25 -15
- package/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.ts +256 -57
- package/Server/Utils/AI/SRE/Insights/FixRouting.ts +3 -2
- package/Server/Utils/AI/SRE/Insights/InsightStore.ts +76 -18
- package/Server/Utils/AI/SRE/InvestigationTldr.ts +352 -0
- package/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.ts +1 -1
- package/Server/Utils/AI/Toolbox/CodeWriteTools.ts +6 -6
- package/Server/Utils/AnalyticsDatabase/InsertDedupContext.ts +7 -2
- package/Server/Utils/CodeRepository/GitHub/GitHub.ts +43 -5
- package/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.ts +1793 -0
- package/Server/Utils/Dashboard/PublicDashboardViewConfig.ts +65 -0
- package/Server/Utils/DataSource/ConnectorRegistry.ts +53 -0
- package/Server/Utils/DataSource/Connectors/ClickHouseConnector.ts +338 -0
- package/Server/Utils/DataSource/Connectors/ElasticsearchConnector.ts +717 -0
- package/Server/Utils/DataSource/Connectors/LokiConnector.ts +606 -0
- package/Server/Utils/DataSource/Connectors/MySqlConnector.ts +307 -0
- package/Server/Utils/DataSource/Connectors/PostgresConnector.ts +260 -0
- package/Server/Utils/DataSource/Connectors/PrometheusConnector.ts +555 -0
- package/Server/Utils/DataSource/Connectors/RestApiConnector.ts +597 -0
- package/Server/Utils/DataSource/Connectors/SqlServerConnector.ts +318 -0
- package/Server/Utils/DataSource/EgressGuard.ts +606 -0
- package/Server/Utils/DataSource/HttpFetch.ts +182 -0
- package/Server/Utils/DataSource/SqlQueryGuard.ts +383 -0
- package/Server/Utils/DataSource/SqlResultShaper.ts +372 -0
- package/Server/Utils/DataSource/Types.ts +93 -0
- package/Server/Utils/Database/PostgresErrorTranslator.ts +172 -17
- package/Server/Utils/Execute.ts +8 -0
- package/Server/Utils/InProcessMemo.ts +141 -0
- package/Server/Utils/InlineImageAccessTokenSync.ts +23 -0
- package/Server/Utils/InstanceHealth/TelemetryIngestion.ts +628 -0
- package/Server/Utils/LLM/LLMService.ts +57 -12
- package/Server/Utils/Monitor/MonitorAlert.ts +40 -0
- package/Server/Utils/Monitor/MonitorDependencySuppression.ts +192 -0
- package/Server/Utils/Monitor/MonitorIncident.ts +40 -0
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +58 -0
- package/Server/Utils/Monitor/MonitorResource.ts +50 -0
- package/Server/Utils/Response.ts +154 -7
- package/Server/Utils/SSRFProtection.ts +450 -0
- package/Server/Utils/StartServer.ts +16 -0
- package/Server/Utils/StatusPageSubscriberWebhook.ts +30 -0
- package/Server/Utils/Telemetry/CaptureSpan.ts +30 -18
- package/Server/Utils/Telemetry/IngestionTimestamp.ts +75 -0
- package/Server/Utils/Telemetry/ResourceHeartbeat.ts +99 -7
- package/Server/Utils/Telemetry/Telemetry.ts +112 -1
- package/Server/Utils/Telemetry.ts +104 -3
- package/Server/Utils/VM/VMRunner.ts +88 -1
- package/Server/Utils/VendorAssets.ts +165 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +582 -53
- package/Server/Utils/Workspace/Slack/Slack.ts +30 -2
- package/Server/Utils/Workspace/WorkspaceBase.ts +6 -0
- package/Server/Views/Partials/Head.ejs +21 -7
- package/Tests/App/AdminDashboard/AdminProjectsIdFilter.test.tsx +207 -0
- package/Tests/App/AdminDashboard/AdminUsersIdFilter.test.tsx +216 -0
- package/Tests/App/Dashboard/AIInsightViewActions.test.tsx +422 -0
- package/Tests/App/Dashboard/AddWidgetModal.test.tsx +10 -3
- package/Tests/App/Dashboard/AlertsSideMenu.test.tsx +387 -0
- package/Tests/App/Dashboard/ChatActivityFeed.test.tsx +199 -0
- package/Tests/App/Dashboard/DangerZone.test.tsx +334 -0
- package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +539 -0
- package/Tests/App/Dashboard/DashboardVariableSelector.test.tsx +678 -0
- package/Tests/App/Dashboard/DashboardVariablesDiscard.test.tsx +706 -0
- package/Tests/App/Dashboard/DashboardVariablesModal.test.tsx +508 -0
- package/Tests/App/Dashboard/DataSourceChartSyntheticConfig.test.tsx +736 -0
- package/Tests/App/Dashboard/DataSourceQueryEditor.test.tsx +868 -0
- package/Tests/App/Dashboard/DataSourceWidgetCatalog.test.ts +440 -0
- package/Tests/App/Dashboard/DataSourceWidgetFetching.test.tsx +2109 -0
- package/Tests/App/Dashboard/DataSourceWidgetViews.test.tsx +726 -0
- package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +447 -0
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +514 -3
- package/Tests/App/Dashboard/ProductMenuBreadcrumbs.test.tsx +391 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceSideMenu.test.tsx +326 -0
- package/Tests/App/Dashboard/SideMenuHarness.tsx +187 -0
- package/Tests/App/Dashboard/WidgetCatalog.test.ts +6 -1
- package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +470 -0
- package/Tests/App/StatusPage/StatusPageDetailPagesNotFound.test.tsx +308 -0
- package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +1858 -0
- package/Tests/Models/DatabaseModels/DataSourceModelSecrets.test.ts +70 -0
- package/Tests/Models/DatabaseModels/DeletedProjectModel.test.ts +251 -0
- package/Tests/Models/DatabaseModels/SavedViewJSONColumnTuples.test.ts +115 -0
- package/Tests/Server/API/AIInvestigationAPI.test.ts +187 -0
- package/Tests/Server/API/DashboardPublicDataSourceStrip.test.ts +686 -0
- package/Tests/Server/API/DashboardPublicResourceListAPI.test.ts +585 -823
- package/Tests/Server/API/DataSourceAPIRoutes.test.ts +486 -0
- package/Tests/Server/API/FileAPIAccessControl.test.ts +316 -0
- package/Tests/Server/API/ProjectAPI.test.ts +299 -1
- package/Tests/Server/API/ProjectAPIAdjustBalance.test.ts +459 -0
- package/Tests/Server/API/ProjectAPIAdjustBalanceBillingDisabled.test.ts +177 -0
- package/Tests/Server/API/StatusPageSubscriberOwnership.test.ts +291 -0
- package/Tests/Server/API/UserAuthenticationAPI.test.ts +641 -0
- package/Tests/Server/Infrastructure/ClickhouseKeepAliveOptions.test.ts +441 -0
- package/Tests/Server/Middleware/TelemetryIngestTokenLog.test.ts +140 -0
- package/Tests/Server/Services/AIInsightService.test.ts +266 -11
- package/Tests/Server/Services/AIRunAnalysisTldrPersistence.test.ts +160 -0
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +4 -0
- package/Tests/Server/Services/AlertMetricResourceAttributes.test.ts +352 -0
- package/Tests/Server/Services/DataSourceServiceSettings.test.ts +244 -0
- package/Tests/Server/Services/DatabaseServiceDeletionReason.test.ts +123 -0
- package/Tests/Server/Services/DeletedProjectService.test.ts +415 -0
- package/Tests/Server/Services/DeletedProjectServiceSelfHosted.test.ts +70 -0
- package/Tests/Server/Services/DomainSubdomainHooks.test.ts +94 -0
- package/Tests/Server/Services/FileIsPublicBooleanMigration.test.ts +244 -0
- package/Tests/Server/Services/FileServiceMimeType.test.ts +89 -0
- package/Tests/Server/Services/HostServiceFindOrCreateMemo.test.ts +397 -0
- package/Tests/Server/Services/HostServiceUpdateLastSeen.test.ts +41 -2
- package/Tests/Server/Services/IncidentMetricResourceAttributes.test.ts +408 -0
- package/Tests/Server/Services/MonitorServiceDependencyValidation.test.ts +702 -0
- package/Tests/Server/Services/MonitorStatusServiceDeleteReferenceCleanup.test.ts +351 -0
- package/Tests/Server/Services/MonitorStatusServiceValidation.test.ts +171 -0
- package/Tests/Server/Services/OpenTelemetryResourceRetentionMemo.test.ts +398 -0
- package/Tests/Server/Services/OpenTelemetryServiceResolutionCache.test.ts +19 -0
- package/Tests/Server/Services/ProjectCallSMSConfigCredentialUniqueness.test.ts +305 -0
- package/Tests/Server/Services/ProjectServiceAdjustBalance.test.ts +615 -0
- package/Tests/Server/Services/ProjectServiceDeleteAudit.test.ts +406 -0
- package/Tests/Server/Services/PublishTimeImageVisibility.test.ts +450 -0
- package/Tests/Server/Services/ResourceUpdateLastSeenLivenessFallback.test.ts +36 -1
- package/Tests/Server/Services/RumSessionPinUniqueViolationRecovery.test.ts +163 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +669 -0
- package/Tests/Server/Services/UserAuthenticationService.test.ts +973 -0
- package/Tests/Server/Services/UserWebhookSSRF.test.ts +174 -0
- package/Tests/Server/Services/WebPushEndpointAllowlist.test.ts +133 -0
- package/Tests/Server/Services/WorkspaceProjectAuthTokenRepoint.test.ts +618 -0
- package/Tests/Server/Types/Database/ObjectIdColumnQuery.test.ts +262 -0
- package/Tests/Server/Types/Database/Permissions/TenantPermission.test.ts +358 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentErrorPort.test.ts +26 -1
- package/Tests/Server/Types/Workflow/Components/ApiComponentSsrf.test.ts +215 -0
- package/Tests/Server/Types/Workflow/Components/BaseModelDatabaseComponents.test.ts +742 -0
- package/Tests/Server/Types/Workflow/Components/ChatWebhookComponents.test.ts +256 -0
- package/Tests/Server/Types/Workflow/Components/ModelArguments.test.ts +371 -0
- package/Tests/Server/Utils/AI/CodeAgentCommandGuard.test.ts +204 -0
- package/Tests/Server/Utils/AI/CodeAgentWriteLimits.test.ts +213 -0
- package/Tests/Server/Utils/AI/CodeWriteTools.test.ts +52 -5
- package/Tests/Server/Utils/AI/FixRunBudget.test.ts +2 -2
- package/Tests/Server/Utils/AI/Insights/ExceptionSpikeDetector.test.ts +6 -1
- package/Tests/Server/Utils/AI/Insights/InsightStore.test.ts +121 -4
- package/Tests/Server/Utils/AI/Insights/NewExceptionDetector.test.ts +361 -10
- package/Tests/Server/Utils/AI/InvestigationSettlement.test.ts +292 -0
- package/Tests/Server/Utils/AI/InvestigationTldr.test.ts +623 -0
- package/Tests/Server/Utils/AI/InvestigationTldrWiring.test.ts +98 -0
- package/Tests/Server/Utils/AI/LLMServiceBaseUrl.test.ts +3 -0
- package/Tests/Server/Utils/AI/LLMServiceEgressGuard.test.ts +315 -0
- package/Tests/Server/Utils/AI/LLMServiceModelCompatibility.test.ts +3 -0
- package/Tests/Server/Utils/AI/LLMServiceRequestPolicy.test.ts +17 -5
- package/Tests/Server/Utils/AI/LLMServiceToolCalling.test.ts +14 -1
- package/Tests/Server/Utils/AI/ObservabilityChatPrompt.test.ts +35 -0
- package/Tests/Server/Utils/AI/StubLLMEgressGuard.ts +25 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.test.ts +912 -0
- package/Tests/Server/Utils/Dashboard/PublicDashboardViewConfig.test.ts +480 -0
- package/Tests/Server/Utils/DataSource/ClickHouseConnector.test.ts +759 -0
- package/Tests/Server/Utils/DataSource/ConnectorRegistry.test.ts +37 -0
- package/Tests/Server/Utils/DataSource/EgressGuard.test.ts +714 -0
- package/Tests/Server/Utils/DataSource/EgressGuardPinning.test.ts +330 -0
- package/Tests/Server/Utils/DataSource/ElasticsearchConnector.test.ts +1206 -0
- package/Tests/Server/Utils/DataSource/HttpFetch.test.ts +616 -0
- package/Tests/Server/Utils/DataSource/LokiConnector.test.ts +970 -0
- package/Tests/Server/Utils/DataSource/MySqlConnector.test.ts +935 -0
- package/Tests/Server/Utils/DataSource/PostgresConnector.test.ts +854 -0
- package/Tests/Server/Utils/DataSource/PrometheusConnector.test.ts +881 -0
- package/Tests/Server/Utils/DataSource/RestApiConnector.test.ts +1020 -0
- package/Tests/Server/Utils/DataSource/SqlQueryGuard.test.ts +425 -0
- package/Tests/Server/Utils/DataSource/SqlResultShaper.test.ts +555 -0
- package/Tests/Server/Utils/DataSource/SqlServerConnector.test.ts +934 -0
- package/Tests/Server/Utils/Database/PostgresErrorTranslator.test.ts +228 -7
- package/Tests/Server/Utils/GitHubCreatePullRequestWithToken.test.ts +393 -0
- package/Tests/Server/Utils/InProcessMemo.test.ts +292 -0
- package/Tests/Server/Utils/InlineImageAccessTokenSync.test.ts +202 -0
- package/Tests/Server/Utils/InstanceHealth/TelemetryIngestion.test.ts +960 -0
- package/Tests/Server/Utils/MicrosoftTeamsWebhookUrlValidation.test.ts +103 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppression.test.ts +811 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +604 -0
- package/Tests/Server/Utils/Monitor/MonitorMetricResourceAttributes.test.ts +336 -0
- package/Tests/Server/Utils/OfflineAssetHygiene.test.ts +521 -0
- package/Tests/Server/Utils/ResponseRenderAnalytics.test.ts +143 -0
- package/Tests/Server/Utils/ResponseSendFileResponse.test.ts +192 -0
- package/Tests/Server/Utils/SSRFProtection.test.ts +193 -0
- package/Tests/Server/Utils/SSRFProtectionBypasses.test.ts +406 -0
- package/Tests/Server/Utils/StatusPageSubscriberWebhook.test.ts +101 -0
- package/Tests/Server/Utils/TailwindBuildCopy.test.ts +225 -0
- package/Tests/Server/Utils/Telemetry/ResourceHeartbeatL1Memo.test.ts +355 -0
- package/Tests/Server/Utils/Telemetry/TelemetryFanInWriter.test.ts +128 -0
- package/Tests/Server/Utils/Telemetry/TelemetryUtilAttributeKeys.test.ts +381 -0
- package/Tests/Server/Utils/Telemetry.test.ts +87 -0
- package/Tests/Server/Utils/VM/VMRunnerSsrf.test.ts +194 -0
- package/Tests/Server/Utils/VendorAssetIntegrity.test.ts +343 -0
- package/Tests/Server/Utils/VendorAssets.test.ts +671 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +1169 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelsList.test.ts +2 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +1605 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsTenantResolution.test.ts +1218 -0
- package/Tests/Server/Views/OfflineRender.test.ts +297 -0
- package/Tests/Types/AI/AIChatMessageStatus.test.ts +79 -0
- package/Tests/Types/AI/AIInsightStatus.test.ts +40 -0
- package/Tests/Types/API/HostnameAuthorityParsing.test.ts +157 -0
- package/Tests/Types/Dashboard/DashboardTemplateInvariants.test.ts +27 -0
- package/Tests/Types/Dashboard/DataSourceComponentTypes.test.ts +618 -0
- package/Tests/Types/DataSource/DataSourceLimits.test.ts +71 -0
- package/Tests/Types/DataSource/DataSourceType.test.ts +181 -0
- package/Tests/Types/DateClickhouseFormat.test.ts +192 -0
- package/Tests/Types/DomainSubdomainValidation.test.ts +90 -0
- package/Tests/Types/JSONFunctions.test.ts +252 -1
- package/Tests/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.test.ts +61 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.test.ts +62 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.test.ts +68 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpVersion.test.ts +51 -0
- package/Tests/Types/Password.test.ts +363 -0
- package/Tests/UI/Components/404.test.tsx +1 -1
- package/Tests/UI/Components/Alert.test.tsx +1 -1
- package/Tests/UI/Components/Badge.test.tsx +1 -1
- package/Tests/UI/Components/BasicForm.test.tsx +39 -10
- package/Tests/UI/Components/Button.test.tsx +1 -1
- package/Tests/UI/Components/Card.test.tsx +1 -1
- package/Tests/UI/Components/Charts/AxisTickColor.test.tsx +1 -1
- package/Tests/UI/Components/ColorViewer.test.tsx +1 -1
- package/Tests/UI/Components/ComponentsModal.test.tsx +7 -1
- package/Tests/UI/Components/ConfirmModal.test.tsx +7 -0
- package/Tests/UI/Components/DictionaryOfStrings.test.tsx +1 -1
- package/Tests/UI/Components/Dropdown.test.tsx +1 -1
- package/Tests/UI/Components/ErrorBoundary.test.tsx +53 -0
- package/Tests/UI/Components/FilePicker.test.tsx +1 -1
- package/Tests/UI/Components/HiddenText.test.tsx +1 -1
- package/Tests/UI/Components/Input.test.tsx +1 -1
- package/Tests/UI/Components/Loader.test.tsx +1 -1
- package/Tests/UI/Components/LogTimeRangePicker.test.tsx +1 -1
- package/Tests/UI/Components/MasterPage.test.tsx +1 -1
- package/Tests/UI/Components/Modal.test.tsx +281 -1
- package/Tests/UI/Components/ModalPortalDismissal.test.tsx +489 -0
- package/Tests/UI/Components/ModelDelete.test.tsx +214 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkSelectAll.test.tsx +1 -1
- package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +1 -1
- package/Tests/UI/Components/ModelTable/BaseModelTableSearchLabels.test.tsx +1 -1
- package/Tests/UI/Components/ModelTable/BaseModelTableUrlState.test.tsx +1 -1
- package/Tests/UI/Components/ModelTable/CustomFieldColumns.test.tsx +1 -1
- package/Tests/UI/Components/NavBar.test.tsx +1 -1
- package/Tests/UI/Components/ObjectIdFilterPipeline.test.tsx +396 -0
- package/Tests/UI/Components/OperatorSelectorKeyboard.test.tsx +1 -1
- package/Tests/UI/Components/Pagination.test.tsx +1 -1
- package/Tests/UI/Components/Pill.test.tsx +1 -1
- package/Tests/UI/Components/Probe.test.tsx +1 -1
- package/Tests/UI/Components/ProgressBar.test.tsx +1 -1
- package/Tests/UI/Components/RadioButtons.test.tsx +1 -1
- package/Tests/UI/Components/SideMenuItem.test.tsx +1 -1
- package/Tests/UI/Components/SideOver.test.tsx +500 -6
- package/Tests/UI/Components/StatusPage/ResourceGroupNavigator.test.tsx +1147 -0
- package/Tests/UI/Components/Tabs.test.tsx +1 -1
- package/Tests/UI/Components/TelemetrySearchBar.test.tsx +1 -1
- package/Tests/UI/Components/TelemetryTimeRangePicker.test.tsx +1 -1
- package/Tests/UI/Components/TextArea.test.tsx +1 -1
- package/Tests/UI/Components/Toast.test.tsx +1 -1
- package/Tests/UI/Components/Toggle.test.tsx +1 -1
- package/Tests/UI/Components/TopSection.test.tsx +1 -1
- package/Tests/UI/Components/UseLiveLogsRefresh.test.tsx +1 -1
- package/Tests/UI/Rum/ReplayScrubber.test.tsx +1 -1
- package/Tests/UI/Rum/ReplayStage.test.tsx +1 -1
- package/Tests/UI/Telemetry/TelemetrySnapshotWindowAlert.test.tsx +1 -1
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +116 -1
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
- package/Tests/UI/Utils/LocalStorageArrayRoundTrip.test.ts +72 -0
- package/Tests/Utils/Analytics.test.ts +23 -0
- package/Tests/Utils/Dashboard/Components/DashboardDataSourceComponents.test.ts +640 -0
- package/Tests/Utils/Dashboard/HtmlWidgetDocument.test.ts +19 -2
- package/Tests/Utils/Dashboard/ModelQueryVariableInterpolation.test.ts +44 -0
- package/Tests/Utils/Dashboard/VariableInterpolation.test.ts +288 -5
- package/Tests/Utils/Dashboard/VariableUrlState.test.ts +42 -0
- package/Tests/Utils/DataSource/DataSourceQueryText.test.ts +165 -0
- package/Tests/Utils/DataSource/DataSourceValueReducer.test.ts +526 -0
- package/Tests/Utils/LegacySerializedArray.test.ts +139 -0
- package/Tests/Utils/Metrics/MetricResourceAttributeUtil.test.ts +691 -0
- package/Tests/Utils/Monitor/MonitorDependencyRule.test.ts +190 -0
- package/Tests/Utils/Realtime.test.ts +78 -0
- package/Tests/Utils/StatusPage/GroupHierarchyView.test.ts +1452 -0
- package/Tests/Utils/StatusPage/ResourceExplorer.test.ts +931 -0
- package/Tests/Utils/Telemetry/CaptureSpanExportGating.test.ts +288 -0
- package/Tests/Utils/Telemetry/IngestionTimestamp.test.ts +170 -0
- package/Tests/Utils/Telemetry/SavedViewFilters.test.ts +246 -0
- package/Tests/__mocks__/i18next-browser-languagedetector.js +21 -0
- package/Types/AI/AIInsightEvidence.ts +6 -0
- package/Types/AI/FixPullRequestCiStatus.ts +1 -1
- package/Types/AI/FixVerificationStatus.ts +2 -2
- package/Types/API/Hostname.ts +92 -4
- package/Types/API/URL.ts +43 -25
- package/Types/Analytics/RevenueEvent.ts +31 -0
- package/Types/Billing/BalanceAdjustmentType.ts +14 -0
- package/Types/Billing/ProjectBalanceType.ts +13 -0
- package/Types/Dashboard/DashboardComponentType.ts +31 -0
- package/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.ts +27 -0
- package/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.ts +32 -0
- package/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.ts +30 -0
- package/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.ts +55 -0
- package/Types/DataSource/DataSourceLimits.ts +62 -0
- package/Types/DataSource/DataSourceQueryConfig.ts +41 -0
- package/Types/DataSource/DataSourceTableResult.ts +38 -0
- package/Types/DataSource/DataSourceType.ts +213 -0
- package/Types/Date.ts +43 -3
- package/Types/Domain.ts +26 -0
- package/Types/File/MimeType.ts +11 -0
- package/Types/JSONFunctions.ts +15 -0
- package/Types/Password.ts +64 -0
- package/Types/Permission.ts +46 -0
- package/Types/Telemetry/TelemetrySavedViewState.ts +9 -1
- package/Types/UserAuthenticationStatus.ts +34 -0
- package/Types/Workflow/Components/BaseModel.ts +92 -28
- package/Typings/Index.d.ts +12 -0
- package/UI/Components/Button/Button.tsx +1 -1
- package/UI/Components/ErrorBoundary.tsx +459 -108
- package/UI/Components/GanttChart/ChartContainer.tsx +4 -3
- package/UI/Components/Icon/Icon.tsx +10 -9
- package/UI/Components/Modal/ConfirmModal.tsx +15 -5
- package/UI/Components/Modal/Modal.tsx +247 -35
- package/UI/Components/Modal/ModalFooter.tsx +6 -1
- package/UI/Components/ModelDelete/ModelDelete.tsx +23 -6
- package/UI/Components/MoreMenu/MoreMenu.tsx +19 -4
- package/UI/Components/MoreMenu/MoreMenuItem.tsx +6 -1
- package/UI/Components/SideOver/SideOver.tsx +195 -68
- package/UI/Components/StatusPage/ResourceGrid.tsx +314 -0
- package/UI/Components/StatusPage/ResourceGroupNavigator.tsx +808 -0
- package/UI/Components/StatusPage/ResourceList.tsx +570 -0
- package/UI/Styles/Theme.css +18 -0
- package/UI/Utils/API/RequestOptions.ts +7 -0
- package/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.ts +1 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +1 -0
- package/UI/Utils/PageScrollLock.ts +66 -0
- package/UI/Utils/TestDataSource.ts +61 -0
- package/UI/esbuild-config.js +45 -0
- package/Utils/Analytics.ts +15 -0
- package/Utils/Dashboard/Components/DashboardDataSourceChartComponent.ts +88 -0
- package/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.ts +123 -0
- package/Utils/Dashboard/Components/DashboardDataSourceShared.ts +16 -0
- package/Utils/Dashboard/Components/DashboardDataSourceTableComponent.ts +72 -0
- package/Utils/Dashboard/Components/DashboardDataSourceValueComponent.ts +126 -0
- package/Utils/Dashboard/Components/Index.ts +28 -0
- package/Utils/Dashboard/HtmlWidgetDocument.ts +4 -2
- package/Utils/Dashboard/VariableInterpolation.ts +19 -1
- package/Utils/DataSource/DataSourceQueryText.ts +94 -0
- package/Utils/DataSource/DataSourceValueReducer.ts +156 -0
- package/Utils/LegacySerializedArray.ts +60 -0
- package/Utils/Metrics/MetricResourceAttributeUtil.ts +380 -0
- package/Utils/Monitor/MonitorDependencyRule.ts +88 -0
- package/Utils/NetworkDiscovery/ScanTargetUtil.ts +8 -6
- package/Utils/StatusPage/GroupHierarchyView.ts +931 -0
- package/Utils/StatusPage/ResourceExplorer.ts +853 -0
- package/Utils/Telemetry/SavedViewFilters.ts +88 -0
- package/build/dist/Models/DatabaseModels/AIInsight.js +1 -1
- package/build/dist/Models/DatabaseModels/AIInsight.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AIRun.js +34 -0
- package/build/dist/Models/DatabaseModels/AIRun.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DataSource.js +774 -0
- package/build/dist/Models/DatabaseModels/DataSource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js +2 -3
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/FileModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DeletedProject.js +640 -0
- package/build/dist/Models/DatabaseModels/DeletedProject.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +4 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +106 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +3 -3
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js +14 -4
- package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +2 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js +2 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +2 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserSession.js +2 -0
- package/build/dist/Models/DatabaseModels/UserSession.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js +6 -4
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js +5 -3
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
- package/build/dist/Server/API/AIInsightAPI.js +34 -4
- package/build/dist/Server/API/AIInsightAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationAPI.js +23 -0
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +119 -433
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/DataSourceAPI.js +173 -0
- package/build/dist/Server/API/DataSourceAPI.js.map +1 -0
- package/build/dist/Server/API/FileAPI.js +14 -2
- package/build/dist/Server/API/FileAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +6 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/ProjectAPI.js +157 -4
- package/build/dist/Server/API/ProjectAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +38 -4
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/UserAPI.js +94 -2
- package/build/dist/Server/API/UserAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js +49 -0
- package/build/dist/Server/Infrastructure/ClickhouseConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786303472848-AddDataSourceTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786446545142-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786449497966-AddMonitorDependency.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786461136170-AddDeletedProjectTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.js +19 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786600000000-AddInvestigationAnalysisTldr.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.js +64 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1786700000000-DropProjectCallSMSConfigCredentialUniques.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Infrastructure/Queue.js +27 -0
- package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
- package/build/dist/Server/Infrastructure/QueueWorker.js +13 -0
- package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
- package/build/dist/Server/Middleware/TelemetryIngest.js +8 -3
- package/build/dist/Server/Middleware/TelemetryIngest.js.map +1 -1
- package/build/dist/Server/Services/AIAgentService.js +17 -0
- package/build/dist/Server/Services/AIAgentService.js.map +1 -1
- package/build/dist/Server/Services/AIInsightService.js +110 -10
- package/build/dist/Server/Services/AIInsightService.js.map +1 -1
- package/build/dist/Server/Services/AIRunService.js +34 -0
- package/build/dist/Server/Services/AIRunService.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +16 -2
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/AlertService.js +28 -35
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +8 -4
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DashboardDomainService.js +55 -18
- package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
- package/build/dist/Server/Services/DataSourceService.js +159 -0
- package/build/dist/Server/Services/DataSourceService.js.map +1 -0
- package/build/dist/Server/Services/DatabaseService.js +1 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DeletedProjectService.js +124 -0
- package/build/dist/Server/Services/DeletedProjectService.js.map +1 -0
- package/build/dist/Server/Services/FileService.js +52 -0
- package/build/dist/Server/Services/FileService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +74 -0
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js +10 -1
- package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/IncidentPublicNoteService.js +10 -1
- package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +35 -24
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +4 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +277 -0
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusService.js +129 -0
- package/build/dist/Server/Services/MonitorStatusService.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +222 -159
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/ProbeService.js +17 -0
- package/build/dist/Server/Services/ProbeService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +228 -6
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/PushNotificationService.js +56 -0
- package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
- package/build/dist/Server/Services/RumSessionPinService.js +7 -15
- package/build/dist/Server/Services/RumSessionPinService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +10 -1
- package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageAnnouncementService.js +54 -0
- package/build/dist/Server/Services/StatusPageAnnouncementService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageDomainService.js +55 -18
- package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberService.js +10 -0
- package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +97 -6
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js +1 -0
- package/build/dist/Server/Services/TelemetryIngestionKeyService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +241 -10
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/UserWebhookService.js +31 -87
- package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +65 -0
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js +23 -0
- package/build/dist/Server/Services/WorkspaceProjectAuthTokenService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js +6 -0
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/DeletePermission.js +1 -0
- package/build/dist/Server/Types/Database/Permissions/DeletePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/ReadPermission.js +2 -0
- package/build/dist/Server/Types/Database/Permissions/ReadPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +68 -12
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
- package/build/dist/Server/Types/Domain.js +37 -0
- package/build/dist/Server/Types/Domain.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Delete.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Get.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Patch.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js +2 -1
- package/build/dist/Server/Types/Workflow/Components/API/Put.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js +35 -2
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js +15 -11
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js +2 -3
- package/build/dist/Server/Types/Workflow/Components/BaseModel/CreateOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js +21 -10
- package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js +21 -10
- package/build/dist/Server/Types/Workflow/Components/BaseModel/DeleteOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js +18 -13
- package/build/dist/Server/Types/Workflow/Components/BaseModel/FindManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js +18 -13
- package/build/dist/Server/Types/Workflow/Components/BaseModel/FindOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js +43 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/LogComponentError.js.map +1 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js +116 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/ModelArguments.js.map +1 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js +7 -0
- package/build/dist/Server/Types/Workflow/Components/BaseModel/OnTriggerBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js +24 -13
- package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateManyBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js +27 -13
- package/build/dist/Server/Types/Workflow/Components/BaseModel/UpdateOneBaseModel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js +14 -6
- package/build/dist/Server/Types/Workflow/Components/Discord/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js +42 -0
- package/build/dist/Server/Types/Workflow/Components/IncomingWebhookUtils.js.map +1 -0
- package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js +15 -6
- package/build/dist/Server/Types/Workflow/Components/MicrosoftTeams/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js +10 -2
- package/build/dist/Server/Types/Workflow/Components/Slack/SendMessageToChannel.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js +141 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeAgentWorkspaceGuard.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js +2 -2
- package/build/dist/Server/Utils/AI/CodeFix/FixRunBudget.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js +68 -8
- package/build/dist/Server/Utils/AI/SRE/AIInvestigationEngine.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js +1 -0
- package/build/dist/Server/Utils/AI/SRE/AlertInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js +1 -0
- package/build/dist/Server/Utils/AI/SRE/IncidentInvestigationRunner.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.js +97 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionIdentity.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js +17 -15
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/ExceptionSpikeDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js +178 -54
- package/build/dist/Server/Utils/AI/SRE/Insights/Detectors/NewExceptionDetector.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/FixRouting.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js +65 -16
- package/build/dist/Server/Utils/AI/SRE/Insights/InsightStore.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationTldr.js +303 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationTldr.js.map +1 -0
- package/build/dist/Server/Utils/AI/SRE/TelemetryImprovementTaskTrigger.js +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js +6 -6
- package/build/dist/Server/Utils/AI/Toolbox/CodeWriteTools.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/InsertDedupContext.js.map +1 -1
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js +39 -5
- package/build/dist/Server/Utils/CodeRepository/GitHub/GitHub.js.map +1 -1
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js +1261 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardResourceListPolicy.js.map +1 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardViewConfig.js +47 -0
- package/build/dist/Server/Utils/Dashboard/PublicDashboardViewConfig.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/ConnectorRegistry.js +42 -0
- package/build/dist/Server/Utils/DataSource/ConnectorRegistry.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/ClickHouseConnector.js +187 -0
- package/build/dist/Server/Utils/DataSource/Connectors/ClickHouseConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/ElasticsearchConnector.js +493 -0
- package/build/dist/Server/Utils/DataSource/Connectors/ElasticsearchConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/LokiConnector.js +399 -0
- package/build/dist/Server/Utils/DataSource/Connectors/LokiConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/MySqlConnector.js +195 -0
- package/build/dist/Server/Utils/DataSource/Connectors/MySqlConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/PostgresConnector.js +149 -0
- package/build/dist/Server/Utils/DataSource/Connectors/PostgresConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/PrometheusConnector.js +362 -0
- package/build/dist/Server/Utils/DataSource/Connectors/PrometheusConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/RestApiConnector.js +342 -0
- package/build/dist/Server/Utils/DataSource/Connectors/RestApiConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Connectors/SqlServerConnector.js +186 -0
- package/build/dist/Server/Utils/DataSource/Connectors/SqlServerConnector.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/EgressGuard.js +389 -0
- package/build/dist/Server/Utils/DataSource/EgressGuard.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +116 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/SqlQueryGuard.js +331 -0
- package/build/dist/Server/Utils/DataSource/SqlQueryGuard.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/SqlResultShaper.js +280 -0
- package/build/dist/Server/Utils/DataSource/SqlResultShaper.js.map +1 -0
- package/build/dist/Server/Utils/DataSource/Types.js +2 -0
- package/build/dist/Server/Utils/DataSource/Types.js.map +1 -0
- package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js +103 -9
- package/build/dist/Server/Utils/Database/PostgresErrorTranslator.js.map +1 -1
- package/build/dist/Server/Utils/Execute.js +2 -2
- package/build/dist/Server/Utils/Execute.js.map +1 -1
- package/build/dist/Server/Utils/InProcessMemo.js +113 -0
- package/build/dist/Server/Utils/InProcessMemo.js.map +1 -0
- package/build/dist/Server/Utils/InlineImageAccessTokenSync.js +13 -0
- package/build/dist/Server/Utils/InlineImageAccessTokenSync.js.map +1 -1
- package/build/dist/Server/Utils/InstanceHealth/TelemetryIngestion.js +406 -0
- package/build/dist/Server/Utils/InstanceHealth/TelemetryIngestion.js.map +1 -0
- package/build/dist/Server/Utils/LLM/LLMService.js +43 -12
- package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +44 -24
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js +158 -0
- package/build/dist/Server/Utils/Monitor/MonitorDependencySuppression.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +50 -30
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +34 -0
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +46 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Response.js +121 -6
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/SSRFProtection.js +358 -0
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +14 -0
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +24 -0
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js +25 -11
- package/build/dist/Server/Utils/Telemetry/CaptureSpan.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/IngestionTimestamp.js +32 -0
- package/build/dist/Server/Utils/Telemetry/IngestionTimestamp.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js +92 -5
- package/build/dist/Server/Utils/Telemetry/ResourceHeartbeat.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/Telemetry.js +92 -6
- package/build/dist/Server/Utils/Telemetry/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry.js +93 -6
- package/build/dist/Server/Utils/Telemetry.js.map +1 -1
- package/build/dist/Server/Utils/VM/VMRunner.js +73 -1
- package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
- package/build/dist/Server/Utils/VendorAssets.js +121 -0
- package/build/dist/Server/Utils/VendorAssets.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +469 -46
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js +23 -1
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/WorkspaceBase.js.map +1 -1
- package/build/dist/Types/AI/FixPullRequestCiStatus.js +1 -1
- package/build/dist/Types/AI/FixVerificationStatus.js +2 -2
- package/build/dist/Types/API/Hostname.js +73 -4
- package/build/dist/Types/API/Hostname.js.map +1 -1
- package/build/dist/Types/API/URL.js +42 -24
- package/build/dist/Types/API/URL.js.map +1 -1
- package/build/dist/Types/Analytics/RevenueEvent.js +26 -0
- package/build/dist/Types/Analytics/RevenueEvent.js.map +1 -0
- package/build/dist/Types/Billing/BalanceAdjustmentType.js +15 -0
- package/build/dist/Types/Billing/BalanceAdjustmentType.js.map +1 -0
- package/build/dist/Types/Billing/ProjectBalanceType.js +14 -0
- package/build/dist/Types/Billing/ProjectBalanceType.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js +27 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceChartComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceGaugeComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceTableComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.js +16 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardDataSourceValueComponent.js.map +1 -0
- package/build/dist/Types/DataSource/DataSourceLimits.js +47 -0
- package/build/dist/Types/DataSource/DataSourceLimits.js.map +1 -0
- package/build/dist/Types/DataSource/DataSourceQueryConfig.js +10 -0
- package/build/dist/Types/DataSource/DataSourceQueryConfig.js.map +1 -0
- package/build/dist/Types/DataSource/DataSourceTableResult.js +14 -0
- package/build/dist/Types/DataSource/DataSourceTableResult.js.map +1 -0
- package/build/dist/Types/DataSource/DataSourceType.js +183 -0
- package/build/dist/Types/DataSource/DataSourceType.js.map +1 -0
- package/build/dist/Types/Date.js +38 -3
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Domain.js +22 -0
- package/build/dist/Types/Domain.js.map +1 -1
- package/build/dist/Types/File/MimeType.js +11 -0
- package/build/dist/Types/File/MimeType.js.map +1 -1
- package/build/dist/Types/JSONFunctions.js +14 -0
- package/build/dist/Types/JSONFunctions.js.map +1 -1
- package/build/dist/Types/Password.js +56 -0
- package/build/dist/Types/Password.js.map +1 -0
- package/build/dist/Types/Permission.js +42 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/UserAuthenticationStatus.js +2 -0
- package/build/dist/Types/UserAuthenticationStatus.js.map +1 -0
- package/build/dist/Types/Workflow/Components/BaseModel.js +83 -28
- package/build/dist/Types/Workflow/Components/BaseModel.js.map +1 -1
- package/build/dist/UI/Components/ErrorBoundary.js +388 -72
- package/build/dist/UI/Components/ErrorBoundary.js.map +1 -1
- package/build/dist/UI/Components/GanttChart/ChartContainer.js +4 -3
- package/build/dist/UI/Components/GanttChart/ChartContainer.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +10 -4
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/Modal/ConfirmModal.js +3 -1
- package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +168 -19
- package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js +3 -1
- package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
- package/build/dist/UI/Components/ModelDelete/ModelDelete.js +11 -6
- package/build/dist/UI/Components/ModelDelete/ModelDelete.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +9 -6
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +7 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +105 -30
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceGrid.js +119 -0
- package/build/dist/UI/Components/StatusPage/ResourceGrid.js.map +1 -0
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js +354 -0
- package/build/dist/UI/Components/StatusPage/ResourceGroupNavigator.js.map +1 -0
- package/build/dist/UI/Components/StatusPage/ResourceList.js +203 -0
- package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -0
- package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js +1 -6
- package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +3 -8
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/PageScrollLock.js +52 -0
- package/build/dist/UI/Utils/PageScrollLock.js.map +1 -0
- package/build/dist/UI/Utils/TestDataSource.js +39 -0
- package/build/dist/UI/Utils/TestDataSource.js.map +1 -0
- package/build/dist/Utils/Analytics.js +4 -0
- package/build/dist/Utils/Analytics.js.map +1 -1
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceChartComponent.js +79 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceChartComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.js +111 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceGaugeComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceShared.js +15 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceShared.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceTableComponent.js +62 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceTableComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceValueComponent.js +112 -0
- package/build/dist/Utils/Dashboard/Components/DashboardDataSourceValueComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +16 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js +4 -2
- package/build/dist/Utils/Dashboard/HtmlWidgetDocument.js.map +1 -1
- package/build/dist/Utils/Dashboard/VariableInterpolation.js +19 -1
- package/build/dist/Utils/Dashboard/VariableInterpolation.js.map +1 -1
- package/build/dist/Utils/DataSource/DataSourceQueryText.js +64 -0
- package/build/dist/Utils/DataSource/DataSourceQueryText.js.map +1 -0
- package/build/dist/Utils/DataSource/DataSourceValueReducer.js +124 -0
- package/build/dist/Utils/DataSource/DataSourceValueReducer.js.map +1 -0
- package/build/dist/Utils/LegacySerializedArray.js +51 -0
- package/build/dist/Utils/LegacySerializedArray.js.map +1 -0
- package/build/dist/Utils/Metrics/MetricResourceAttributeUtil.js +281 -0
- package/build/dist/Utils/Metrics/MetricResourceAttributeUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorDependencyRule.js +47 -0
- package/build/dist/Utils/Monitor/MonitorDependencyRule.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js +8 -6
- package/build/dist/Utils/NetworkDiscovery/ScanTargetUtil.js.map +1 -1
- package/build/dist/Utils/StatusPage/GroupHierarchyView.js +560 -0
- package/build/dist/Utils/StatusPage/GroupHierarchyView.js.map +1 -0
- package/build/dist/Utils/StatusPage/ResourceExplorer.js +519 -0
- package/build/dist/Utils/StatusPage/ResourceExplorer.js.map +1 -0
- package/build/dist/Utils/Telemetry/SavedViewFilters.js +52 -0
- package/build/dist/Utils/Telemetry/SavedViewFilters.js.map +1 -0
- package/jest.config.json +4 -0
- package/package.json +5 -1
- package/tsconfig.json +14 -10
|
@@ -4,11 +4,12 @@ import Headers from "../../../Types/API/Headers";
|
|
|
4
4
|
import URL from "../../../Types/API/URL";
|
|
5
5
|
import { JSONArray, JSONObject } from "../../../Types/JSON";
|
|
6
6
|
import JSONFunctions from "../../../Types/JSONFunctions";
|
|
7
|
-
import API from "../../../Utils/API";
|
|
7
|
+
import API, { RequestOptions } from "../../../Utils/API";
|
|
8
8
|
import LlmType from "../../../Types/LLM/LlmType";
|
|
9
9
|
import BadDataException from "../../../Types/Exception/BadDataException";
|
|
10
10
|
import logger, { LogAttributes } from "../Logger";
|
|
11
11
|
import CaptureSpan from "../Telemetry/CaptureSpan";
|
|
12
|
+
import DataSourceEgressGuard from "../DataSource/EgressGuard";
|
|
12
13
|
|
|
13
14
|
export interface LLMToolDefinition {
|
|
14
15
|
name: string;
|
|
@@ -653,6 +654,38 @@ export default class LLMService {
|
|
|
653
654
|
* the offending parameter in the 400 — one parameter per response, hence the
|
|
654
655
|
* loop.
|
|
655
656
|
*/
|
|
657
|
+
/*
|
|
658
|
+
* Request options for a call to a tenant-configured LLM endpoint.
|
|
659
|
+
*
|
|
660
|
+
* LlmProvider.baseUrl is writable by any project member while reading the
|
|
661
|
+
* apiKey is Owner/Admin-only, so an unguarded request lets a member repoint
|
|
662
|
+
* a provider at a host they control and collect the decrypted key out of the
|
|
663
|
+
* auth header — and, because provider error bodies are reflected back
|
|
664
|
+
* through the LLM provider API, use the same lever as a blind-free read
|
|
665
|
+
* primitive against the internal network.
|
|
666
|
+
*
|
|
667
|
+
* The address the guard checked is pinned into the socket, and redirects are
|
|
668
|
+
* refused: pinning covers only the validated host, so a 3xx would walk
|
|
669
|
+
* around it. Private ranges stay reachable on self-hosted installs, because
|
|
670
|
+
* a self-hosted Ollama on 10.x is the documented deployment.
|
|
671
|
+
*/
|
|
672
|
+
private static async buildGuardedRequestOptions(
|
|
673
|
+
requestUrl: string,
|
|
674
|
+
options: RequestOptions,
|
|
675
|
+
): Promise<RequestOptions> {
|
|
676
|
+
const { httpAgent, httpsAgent } =
|
|
677
|
+
await DataSourceEgressGuard.assertUrlAllowedAndPin(requestUrl, {
|
|
678
|
+
targetLabel: "LLM provider",
|
|
679
|
+
});
|
|
680
|
+
|
|
681
|
+
return {
|
|
682
|
+
...options,
|
|
683
|
+
doNotFollowRedirects: true,
|
|
684
|
+
httpAgent,
|
|
685
|
+
httpsAgent,
|
|
686
|
+
};
|
|
687
|
+
}
|
|
688
|
+
|
|
656
689
|
private static async postOpenAIChatCompletion(data: {
|
|
657
690
|
requestUrl: string;
|
|
658
691
|
headers: Headers;
|
|
@@ -674,6 +707,18 @@ export default class LLMService {
|
|
|
674
707
|
*/
|
|
675
708
|
const attemptedTokenLimitParams: Set<TokenLimitParam> = new Set();
|
|
676
709
|
|
|
710
|
+
/*
|
|
711
|
+
* Validated once, before the first request: the adaptation loop below
|
|
712
|
+
* re-posts to the same URL, so re-resolving per attempt would only add
|
|
713
|
+
* DNS round trips (and a rebind window between them).
|
|
714
|
+
*/
|
|
715
|
+
const requestOptions: RequestOptions =
|
|
716
|
+
await this.buildGuardedRequestOptions(data.requestUrl, {
|
|
717
|
+
retries: data.request.requestRetries ?? 2,
|
|
718
|
+
exponentialBackoff: true,
|
|
719
|
+
timeout: data.request.requestTimeoutInMs ?? 120000,
|
|
720
|
+
});
|
|
721
|
+
|
|
677
722
|
const post: () => Promise<
|
|
678
723
|
HTTPResponse<JSONObject> | HTTPErrorResponse
|
|
679
724
|
> = (): Promise<HTTPResponse<JSONObject> | HTTPErrorResponse> => {
|
|
@@ -693,11 +738,7 @@ export default class LLMService {
|
|
|
693
738
|
url: URL.fromString(data.requestUrl),
|
|
694
739
|
data: body,
|
|
695
740
|
headers: data.headers,
|
|
696
|
-
options:
|
|
697
|
-
retries: data.request.requestRetries ?? 2,
|
|
698
|
-
exponentialBackoff: true,
|
|
699
|
-
timeout: data.request.requestTimeoutInMs ?? 120000,
|
|
700
|
-
},
|
|
741
|
+
options: requestOptions,
|
|
701
742
|
});
|
|
702
743
|
};
|
|
703
744
|
|
|
@@ -1214,20 +1255,22 @@ export default class LLMService {
|
|
|
1214
1255
|
requestData["tools"] = anthropicTools;
|
|
1215
1256
|
}
|
|
1216
1257
|
|
|
1258
|
+
const anthropicRequestUrl: string = `${baseUrl}/messages`;
|
|
1259
|
+
|
|
1217
1260
|
const response: HTTPErrorResponse | HTTPResponse<JSONObject> =
|
|
1218
1261
|
await API.post<JSONObject>({
|
|
1219
|
-
url: URL.fromString(
|
|
1262
|
+
url: URL.fromString(anthropicRequestUrl),
|
|
1220
1263
|
data: requestData,
|
|
1221
1264
|
headers: {
|
|
1222
1265
|
"x-api-key": config.apiKey,
|
|
1223
1266
|
"anthropic-version": "2023-06-01",
|
|
1224
1267
|
"Content-Type": "application/json",
|
|
1225
1268
|
},
|
|
1226
|
-
options: {
|
|
1269
|
+
options: await this.buildGuardedRequestOptions(anthropicRequestUrl, {
|
|
1227
1270
|
retries: request.requestRetries ?? 2,
|
|
1228
1271
|
exponentialBackoff: true,
|
|
1229
1272
|
timeout: request.requestTimeoutInMs ?? 120000,
|
|
1230
|
-
},
|
|
1273
|
+
}),
|
|
1231
1274
|
});
|
|
1232
1275
|
|
|
1233
1276
|
const anthropicLogAttributes: LogAttributes = {
|
|
@@ -1355,18 +1398,20 @@ export default class LLMService {
|
|
|
1355
1398
|
requestData["tools"] = this.toOpenAITools(request.tools);
|
|
1356
1399
|
}
|
|
1357
1400
|
|
|
1401
|
+
const ollamaRequestUrl: string = `${config.baseUrl}/api/chat`;
|
|
1402
|
+
|
|
1358
1403
|
const response: HTTPErrorResponse | HTTPResponse<JSONObject> =
|
|
1359
1404
|
await API.post<JSONObject>({
|
|
1360
|
-
url: URL.fromString(
|
|
1405
|
+
url: URL.fromString(ollamaRequestUrl),
|
|
1361
1406
|
data: requestData,
|
|
1362
1407
|
headers: {
|
|
1363
1408
|
"Content-Type": "application/json",
|
|
1364
1409
|
},
|
|
1365
|
-
options: {
|
|
1410
|
+
options: await this.buildGuardedRequestOptions(ollamaRequestUrl, {
|
|
1366
1411
|
retries: request.requestRetries ?? 2,
|
|
1367
1412
|
exponentialBackoff: true,
|
|
1368
1413
|
timeout: request.requestTimeoutInMs ?? 300000, // Ollama may be slower
|
|
1369
|
-
},
|
|
1414
|
+
}),
|
|
1370
1415
|
});
|
|
1371
1416
|
|
|
1372
1417
|
const ollamaLogAttributes: LogAttributes = {
|
|
@@ -36,6 +36,9 @@ import MonitorClusterContextUtil, {
|
|
|
36
36
|
MonitorClusterContext,
|
|
37
37
|
} from "./MonitorClusterContext";
|
|
38
38
|
import MonitorTemplateUtil from "./MonitorTemplateUtil";
|
|
39
|
+
import MonitorDependencySuppression, {
|
|
40
|
+
DependencySuppressionResult,
|
|
41
|
+
} from "./MonitorDependencySuppression";
|
|
39
42
|
import { JSONObject } from "../../../Types/JSON";
|
|
40
43
|
import OneUptimeDate from "../../../Types/Date";
|
|
41
44
|
import MonitorEvaluationSummary from "../../../Types/Monitor/MonitorEvaluationSummary";
|
|
@@ -240,6 +243,14 @@ export default class MonitorAlert {
|
|
|
240
243
|
* evaluating. See MonitorMaintenanceSuppression.
|
|
241
244
|
*/
|
|
242
245
|
suppressedSeriesFingerprints?: Set<string> | undefined;
|
|
246
|
+
/**
|
|
247
|
+
* Alert-dependency suppression: when set and isSuppressed, a parent
|
|
248
|
+
* monitor this monitor depends on is currently in a suppressing
|
|
249
|
+
* status, so ALL alert creation for this evaluation is skipped. Only
|
|
250
|
+
* creation — already-open alerts still follow the normal resolve
|
|
251
|
+
* path above. See MonitorDependencySuppression.
|
|
252
|
+
*/
|
|
253
|
+
dependencySuppression?: DependencySuppressionResult | undefined;
|
|
243
254
|
/**
|
|
244
255
|
* Event-driven monitors (incoming-request / webhook fan-out) must not
|
|
245
256
|
* use the metric snapshot model where a series absent from this tick's
|
|
@@ -288,6 +299,35 @@ export default class MonitorAlert {
|
|
|
288
299
|
return;
|
|
289
300
|
}
|
|
290
301
|
|
|
302
|
+
/*
|
|
303
|
+
* Alert-dependency suppression: a parent monitor is in a suppressing
|
|
304
|
+
* status (offline by default), so skip creating any alert for this
|
|
305
|
+
* evaluation. Placed after the open-alert resolve pass above on
|
|
306
|
+
* purpose — an alert raised before the parent went down must still
|
|
307
|
+
* resolve normally; only new creation is silenced.
|
|
308
|
+
*/
|
|
309
|
+
if (input.dependencySuppression?.isSuppressed) {
|
|
310
|
+
const suppressionReason: string =
|
|
311
|
+
MonitorDependencySuppression.buildSuppressionReason(
|
|
312
|
+
input.dependencySuppression.suppressingParents,
|
|
313
|
+
);
|
|
314
|
+
|
|
315
|
+
logger.debug(
|
|
316
|
+
`${input.monitor.id?.toString()} - Skipping alert creation: ${suppressionReason}.`,
|
|
317
|
+
alertLogAttributes,
|
|
318
|
+
);
|
|
319
|
+
|
|
320
|
+
input.evaluationSummary?.events.push({
|
|
321
|
+
type: "alert-skipped",
|
|
322
|
+
title: "Alert suppressed by monitor dependency",
|
|
323
|
+
message: `Skipped creating alerts because ${suppressionReason}. This monitor's status still updates normally; open alerts still auto-resolve.`,
|
|
324
|
+
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
325
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
|
|
291
331
|
/*
|
|
292
332
|
* Proxmox/Ceph monitors: resolve the monitored cluster once per
|
|
293
333
|
* evaluation (lookup-only, from the step config's clusterIdentifier)
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import Monitor from "../../../Models/DatabaseModels/Monitor";
|
|
2
|
+
import MonitorStatus from "../../../Models/DatabaseModels/MonitorStatus";
|
|
3
|
+
import { LIMIT_PER_PROJECT } from "../../../Types/Database/LimitMax";
|
|
4
|
+
import ObjectID from "../../../Types/ObjectID";
|
|
5
|
+
import MonitorDependencyRule, {
|
|
6
|
+
DependencySuppressionResult,
|
|
7
|
+
ParentMonitorStatusRef,
|
|
8
|
+
SuppressingParent,
|
|
9
|
+
} from "../../../Utils/Monitor/MonitorDependencyRule";
|
|
10
|
+
import MonitorService from "../../Services/MonitorService";
|
|
11
|
+
import QueryHelper from "../../Types/Database/QueryHelper";
|
|
12
|
+
import logger from "../Logger";
|
|
13
|
+
import CaptureSpan from "../Telemetry/CaptureSpan";
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
* Re-exported so server-side callers (and the existing tests) keep a
|
|
17
|
+
* single import site; the rule itself lives in
|
|
18
|
+
* Common/Utils/Monitor/MonitorDependencyRule so the dashboard can share
|
|
19
|
+
* it without importing server modules.
|
|
20
|
+
*/
|
|
21
|
+
export type {
|
|
22
|
+
DependencySuppressionResult,
|
|
23
|
+
ParentMonitorStatusRef,
|
|
24
|
+
SuppressingParent,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* Alert-dependency suppression (the per-monitor counterpart of the
|
|
29
|
+
* per-series MonitorMaintenanceSuppression): when a monitor declares
|
|
30
|
+
* `dependsOnMonitors` and any of those parents is currently in a
|
|
31
|
+
* suppressing status, alert/incident *creation* for this monitor is
|
|
32
|
+
* skipped for the evaluation. The monitor itself keeps evaluating — its
|
|
33
|
+
* status timeline, metrics, and the resolve path for already-open
|
|
34
|
+
* alerts/incidents are untouched. That keeps the child visibly Offline on
|
|
35
|
+
* status pages (and lets grand-children observe the outage through the
|
|
36
|
+
* child's real status, which is what makes one-hop checks transitive)
|
|
37
|
+
* while silencing the redundant paging.
|
|
38
|
+
*
|
|
39
|
+
* Which parent statuses suppress: the monitor's
|
|
40
|
+
* `suppressAlertsWhenParentMonitorStatuses` list when configured,
|
|
41
|
+
* otherwise any status flagged `isOfflineState`. The decision itself is
|
|
42
|
+
* MonitorDependencyRule.getSuppressingParents, shared with the dashboard
|
|
43
|
+
* banner.
|
|
44
|
+
*/
|
|
45
|
+
export default class MonitorDependencySuppression {
|
|
46
|
+
/*
|
|
47
|
+
* Resolve the suppression decision for one evaluation. Zero queries on
|
|
48
|
+
* the common path — a monitor with no dependencies returns immediately —
|
|
49
|
+
* and exactly one query (the parents' current statuses) otherwise. This
|
|
50
|
+
* sits on the hottest Postgres path in the product, so the monitor's
|
|
51
|
+
* dependency ids must arrive pre-selected on the monitor row rather than
|
|
52
|
+
* being re-read here.
|
|
53
|
+
*/
|
|
54
|
+
@CaptureSpan()
|
|
55
|
+
public static async getDependencySuppression(input: {
|
|
56
|
+
monitor: Monitor;
|
|
57
|
+
}): Promise<DependencySuppressionResult> {
|
|
58
|
+
const monitorId: string = (
|
|
59
|
+
input.monitor.id ||
|
|
60
|
+
input.monitor._id ||
|
|
61
|
+
""
|
|
62
|
+
).toString();
|
|
63
|
+
|
|
64
|
+
const parentIds: Array<ObjectID> = (input.monitor.dependsOnMonitors || [])
|
|
65
|
+
.map((parent: Monitor) => {
|
|
66
|
+
return (parent.id || parent._id)?.toString() || "";
|
|
67
|
+
})
|
|
68
|
+
.filter((id: string) => {
|
|
69
|
+
/*
|
|
70
|
+
* A self-edge should never exist (validation rejects it, uuids
|
|
71
|
+
* compared case-insensitively), but if one was persisted through
|
|
72
|
+
* an older payload shape it must not let a monitor suppress its
|
|
73
|
+
* own offline alerts — that would silence exactly the outage the
|
|
74
|
+
* monitor exists to report.
|
|
75
|
+
*/
|
|
76
|
+
return id.length > 0 && id.toLowerCase() !== monitorId.toLowerCase();
|
|
77
|
+
})
|
|
78
|
+
.map((id: string) => {
|
|
79
|
+
return new ObjectID(id);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
if (parentIds.length === 0) {
|
|
83
|
+
return { isSuppressed: false, suppressingParents: [] };
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const parents: Array<Monitor> = await MonitorService.findBy({
|
|
87
|
+
query: {
|
|
88
|
+
_id: QueryHelper.any(parentIds),
|
|
89
|
+
},
|
|
90
|
+
select: {
|
|
91
|
+
_id: true,
|
|
92
|
+
name: true,
|
|
93
|
+
currentMonitorStatus: {
|
|
94
|
+
_id: true,
|
|
95
|
+
name: true,
|
|
96
|
+
isOfflineState: true,
|
|
97
|
+
},
|
|
98
|
+
/*
|
|
99
|
+
* The parents' own parent ids, for the runtime mutual-cycle guard
|
|
100
|
+
* below. Selected here so the guard costs no extra query.
|
|
101
|
+
*/
|
|
102
|
+
dependsOnMonitors: {
|
|
103
|
+
_id: true,
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
skip: 0,
|
|
107
|
+
limit: LIMIT_PER_PROJECT,
|
|
108
|
+
props: {
|
|
109
|
+
isRoot: true,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
const parentRefs: Array<ParentMonitorStatusRef> = [];
|
|
114
|
+
|
|
115
|
+
for (const parent of parents) {
|
|
116
|
+
/*
|
|
117
|
+
* Runtime mutual-cycle guard: write-time validation walks the graph
|
|
118
|
+
* before persisting, but two concurrent updates can each pass
|
|
119
|
+
* validation and jointly commit a cycle (A depends on B, B depends
|
|
120
|
+
* on A). If that cycle suppressed, a shared outage would take both
|
|
121
|
+
* monitors offline and page NOBODY. Fail open instead: a parent
|
|
122
|
+
* that itself depends on this monitor is ignored for suppression,
|
|
123
|
+
* so a raced-in cycle degrades to normal (noisy) paging rather than
|
|
124
|
+
* a silent blackout.
|
|
125
|
+
*/
|
|
126
|
+
const isMutualCycle: boolean = (parent.dependsOnMonitors || []).some(
|
|
127
|
+
(grandParent: Monitor) => {
|
|
128
|
+
const grandParentId: string = (
|
|
129
|
+
grandParent.id ||
|
|
130
|
+
grandParent._id ||
|
|
131
|
+
""
|
|
132
|
+
).toString();
|
|
133
|
+
|
|
134
|
+
return (
|
|
135
|
+
grandParentId.length > 0 &&
|
|
136
|
+
grandParentId.toLowerCase() === monitorId.toLowerCase()
|
|
137
|
+
);
|
|
138
|
+
},
|
|
139
|
+
);
|
|
140
|
+
|
|
141
|
+
if (isMutualCycle) {
|
|
142
|
+
logger.warn(
|
|
143
|
+
`${monitorId} - Monitor dependency cycle detected at evaluation time with parent ${parent.id?.toString()} ("${parent.name}"). The parent is ignored for suppression so alerts still fire. Remove one side of the cycle.`,
|
|
144
|
+
);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
parentRefs.push({
|
|
149
|
+
monitorId: parent.id?.toString() || "",
|
|
150
|
+
monitorName: parent.name || "Unnamed monitor",
|
|
151
|
+
statusId: parent.currentMonitorStatus?.id?.toString(),
|
|
152
|
+
statusName: parent.currentMonitorStatus?.name,
|
|
153
|
+
isOfflineState: Boolean(parent.currentMonitorStatus?.isOfflineState),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const configuredSuppressionStatusIds: Set<string> = new Set<string>(
|
|
158
|
+
(input.monitor.suppressAlertsWhenParentMonitorStatuses || [])
|
|
159
|
+
.map((status: MonitorStatus) => {
|
|
160
|
+
return (status.id || status._id)?.toString() || "";
|
|
161
|
+
})
|
|
162
|
+
.filter((id: string) => {
|
|
163
|
+
return id.length > 0;
|
|
164
|
+
}),
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
const suppressingParents: Array<SuppressingParent> =
|
|
168
|
+
this.getSuppressingParents({
|
|
169
|
+
parents: parentRefs,
|
|
170
|
+
configuredSuppressionStatusIds,
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
return {
|
|
174
|
+
isSuppressed: suppressingParents.length > 0,
|
|
175
|
+
suppressingParents,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Delegates kept so callers and tests have one server-side entry point.
|
|
180
|
+
public static getSuppressingParents(input: {
|
|
181
|
+
parents: Array<ParentMonitorStatusRef>;
|
|
182
|
+
configuredSuppressionStatusIds: Set<string>;
|
|
183
|
+
}): Array<SuppressingParent> {
|
|
184
|
+
return MonitorDependencyRule.getSuppressingParents(input);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
public static buildSuppressionReason(
|
|
188
|
+
suppressingParents: Array<SuppressingParent>,
|
|
189
|
+
): string {
|
|
190
|
+
return MonitorDependencyRule.buildSuppressionReason(suppressingParents);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
@@ -44,6 +44,9 @@ import logger, { LogAttributes } from "../Logger";
|
|
|
44
44
|
import CaptureSpan from "../Telemetry/CaptureSpan";
|
|
45
45
|
import DataToProcess from "./DataToProcess";
|
|
46
46
|
import MonitorTemplateUtil from "./MonitorTemplateUtil";
|
|
47
|
+
import MonitorDependencySuppression, {
|
|
48
|
+
DependencySuppressionResult,
|
|
49
|
+
} from "./MonitorDependencySuppression";
|
|
47
50
|
import { JSONObject } from "../../../Types/JSON";
|
|
48
51
|
import OneUptimeDate from "../../../Types/Date";
|
|
49
52
|
import MonitorEvaluationSummary from "../../../Types/Monitor/MonitorEvaluationSummary";
|
|
@@ -288,6 +291,14 @@ export default class MonitorIncident {
|
|
|
288
291
|
* are suppressed at creation time. See MonitorMaintenanceSuppression.
|
|
289
292
|
*/
|
|
290
293
|
suppressedSeriesFingerprints?: Set<string> | undefined;
|
|
294
|
+
/**
|
|
295
|
+
* Alert-dependency suppression: when set and isSuppressed, a parent
|
|
296
|
+
* monitor this monitor depends on is currently in a suppressing
|
|
297
|
+
* status, so ALL incident creation for this evaluation is skipped.
|
|
298
|
+
* Only creation — already-open incidents still follow the normal
|
|
299
|
+
* resolve path above. See MonitorDependencySuppression.
|
|
300
|
+
*/
|
|
301
|
+
dependencySuppression?: DependencySuppressionResult | undefined;
|
|
291
302
|
/**
|
|
292
303
|
* Event-driven monitors (incoming-request / webhook fan-out) must not
|
|
293
304
|
* use the metric snapshot model where a series absent from this tick's
|
|
@@ -342,6 +353,35 @@ export default class MonitorIncident {
|
|
|
342
353
|
return;
|
|
343
354
|
}
|
|
344
355
|
|
|
356
|
+
/*
|
|
357
|
+
* Alert-dependency suppression: a parent monitor is in a suppressing
|
|
358
|
+
* status (offline by default), so skip creating any incident for this
|
|
359
|
+
* evaluation. Placed after the open-incident resolve pass above on
|
|
360
|
+
* purpose — an incident raised before the parent went down must still
|
|
361
|
+
* resolve normally; only new creation is silenced.
|
|
362
|
+
*/
|
|
363
|
+
if (input.dependencySuppression?.isSuppressed) {
|
|
364
|
+
const suppressionReason: string =
|
|
365
|
+
MonitorDependencySuppression.buildSuppressionReason(
|
|
366
|
+
input.dependencySuppression.suppressingParents,
|
|
367
|
+
);
|
|
368
|
+
|
|
369
|
+
logger.debug(
|
|
370
|
+
`${input.monitor.id?.toString()} - Skipping incident creation: ${suppressionReason}.`,
|
|
371
|
+
incidentLogAttributes,
|
|
372
|
+
);
|
|
373
|
+
|
|
374
|
+
input.evaluationSummary?.events.push({
|
|
375
|
+
type: "incident-skipped",
|
|
376
|
+
title: "Incident suppressed by monitor dependency",
|
|
377
|
+
message: `Skipped creating incidents because ${suppressionReason}. This monitor's status still updates normally; open incidents still auto-resolve.`,
|
|
378
|
+
relatedCriteriaId: input.criteriaInstance.data?.id,
|
|
379
|
+
at: OneUptimeDate.getCurrentDate(),
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
return;
|
|
383
|
+
}
|
|
384
|
+
|
|
345
385
|
/*
|
|
346
386
|
* Proxmox/Ceph monitors: resolve the monitored cluster once per
|
|
347
387
|
* evaluation (lookup-only, from the step config's clusterIdentifier)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import logger from "../Logger";
|
|
2
2
|
import CaptureSpan from "../Telemetry/CaptureSpan";
|
|
3
3
|
import TelemetryUtil from "../Telemetry/Telemetry";
|
|
4
|
+
import MetricResourceAttributeUtil from "../../../Utils/Metrics/MetricResourceAttributeUtil";
|
|
4
5
|
import MetricService from "../../Services/MetricService";
|
|
5
6
|
import GlobalConfigService from "../../Services/GlobalConfigService";
|
|
6
7
|
import GlobalConfig from "../../../Models/DatabaseModels/GlobalConfig";
|
|
@@ -8,6 +9,7 @@ import DataToProcess from "./DataToProcess";
|
|
|
8
9
|
import { MetricPointType } from "../../../Models/AnalyticsModels/Metric";
|
|
9
10
|
import ServiceType from "../../../Types/Telemetry/ServiceType";
|
|
10
11
|
import MetricType from "../../../Models/DatabaseModels/MetricType";
|
|
12
|
+
import Label from "../../../Models/DatabaseModels/Label";
|
|
11
13
|
import BasicInfrastructureMetrics, {
|
|
12
14
|
NetworkInterfaceMetrics,
|
|
13
15
|
} from "../../../Types/Infrastructure/BasicMetrics";
|
|
@@ -234,6 +236,47 @@ export default class MonitorMetricUtil {
|
|
|
234
236
|
data.metricNameServiceNameMap[data.metricName] = metricType;
|
|
235
237
|
}
|
|
236
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Stamp every metric row produced by one monitor check with the monitor's
|
|
241
|
+
* label and custom field attributes.
|
|
242
|
+
*
|
|
243
|
+
* Done as a single pass over the finished rows rather than threaded through
|
|
244
|
+
* the ~30 emission sites below: every metric from one check describes the
|
|
245
|
+
* same monitor, so there is nothing per-metric to decide, and one pass is
|
|
246
|
+
* far easier to keep correct than thirty call sites.
|
|
247
|
+
*
|
|
248
|
+
* Resource attributes are merged LAST. Custom code monitors let a user
|
|
249
|
+
* supply their own attribute names, and those must not be able to shadow the
|
|
250
|
+
* oneuptime.* namespace.
|
|
251
|
+
*/
|
|
252
|
+
public static applyResourceAttributesToMetricRows(data: {
|
|
253
|
+
metricRows: Array<JSONObject>;
|
|
254
|
+
labels?: Array<Label> | undefined;
|
|
255
|
+
customFields?: JSONObject | undefined;
|
|
256
|
+
}): void {
|
|
257
|
+
const resourceAttributes: JSONObject =
|
|
258
|
+
MetricResourceAttributeUtil.getResourceAttributes({
|
|
259
|
+
labels: data.labels,
|
|
260
|
+
customFields: data.customFields,
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
if (Object.keys(resourceAttributes).length === 0) {
|
|
264
|
+
// Nothing to stamp; leave the rows (and their attributeKeys) untouched.
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
for (const metricRow of data.metricRows) {
|
|
269
|
+
const attributes: JSONObject =
|
|
270
|
+
MetricResourceAttributeUtil.mergeResourceAttributes(
|
|
271
|
+
(metricRow["attributes"] as JSONObject) || {},
|
|
272
|
+
resourceAttributes,
|
|
273
|
+
);
|
|
274
|
+
|
|
275
|
+
metricRow["attributes"] = attributes;
|
|
276
|
+
metricRow["attributeKeys"] = TelemetryUtil.getAttributeKeys(attributes);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
237
280
|
@CaptureSpan()
|
|
238
281
|
public static async saveMonitorMetrics(data: {
|
|
239
282
|
monitorId: ObjectID;
|
|
@@ -241,6 +284,15 @@ export default class MonitorMetricUtil {
|
|
|
241
284
|
dataToProcess: DataToProcess;
|
|
242
285
|
probeName: string | undefined;
|
|
243
286
|
monitorName: string | undefined;
|
|
287
|
+
/*
|
|
288
|
+
* The monitor's own taxonomy, passed in by the caller which has already
|
|
289
|
+
* loaded the monitor — this is the hottest Postgres path in the product,
|
|
290
|
+
* so nothing here re-reads it. Both are optional: callers that do not
|
|
291
|
+
* select them simply record no oneuptime.label.* / oneuptime.customField.*
|
|
292
|
+
* attributes.
|
|
293
|
+
*/
|
|
294
|
+
monitorLabels?: Array<Label> | undefined;
|
|
295
|
+
monitorCustomFields?: JSONObject | undefined;
|
|
244
296
|
}): Promise<void> {
|
|
245
297
|
if (!data.monitorId) {
|
|
246
298
|
return;
|
|
@@ -1340,6 +1392,12 @@ export default class MonitorMetricUtil {
|
|
|
1340
1392
|
metricNameServiceNameMap[prefixedName] = metricType;
|
|
1341
1393
|
}
|
|
1342
1394
|
|
|
1395
|
+
this.applyResourceAttributesToMetricRows({
|
|
1396
|
+
metricRows: metricRows,
|
|
1397
|
+
labels: data.monitorLabels,
|
|
1398
|
+
customFields: data.monitorCustomFields,
|
|
1399
|
+
});
|
|
1400
|
+
|
|
1343
1401
|
if (metricRows.length > 0) {
|
|
1344
1402
|
await MetricService.insertJsonRows(metricRows);
|
|
1345
1403
|
}
|
|
@@ -45,6 +45,9 @@ import MonitorSummaryCapture from "./MonitorSummaryCapture";
|
|
|
45
45
|
import MonitorSummarySnapshot from "../../../Types/Monitor/MonitorSummarySnapshot";
|
|
46
46
|
import IncomingRequestIncidentGrouping from "./IncomingRequestIncidentGrouping";
|
|
47
47
|
import MonitorMaintenanceSuppression from "./MonitorMaintenanceSuppression";
|
|
48
|
+
import MonitorDependencySuppression, {
|
|
49
|
+
DependencySuppressionResult,
|
|
50
|
+
} from "./MonitorDependencySuppression";
|
|
48
51
|
import MonitorStatusTimelineUtil from "./MonitorStatusTimeline";
|
|
49
52
|
import CaptureSpan from "../Telemetry/CaptureSpan";
|
|
50
53
|
import ExceptionMessages from "../../../Types/Exception/ExceptionMessages";
|
|
@@ -138,6 +141,33 @@ export default class MonitorResourceUtil {
|
|
|
138
141
|
_id: true,
|
|
139
142
|
name: true,
|
|
140
143
|
minimumProbeAgreement: true,
|
|
144
|
+
/*
|
|
145
|
+
* Recorded as oneuptime.label.* / oneuptime.customField.* attributes on
|
|
146
|
+
* every monitor metric this result produces, so response time and
|
|
147
|
+
* uptime are groupable by a project's own taxonomy. Selected here
|
|
148
|
+
* rather than re-read inside MonitorMetricUtil: this is the hottest
|
|
149
|
+
* Postgres path in the product and it already loads the monitor.
|
|
150
|
+
*/
|
|
151
|
+
labels: {
|
|
152
|
+
_id: true,
|
|
153
|
+
name: true,
|
|
154
|
+
},
|
|
155
|
+
customFields: true,
|
|
156
|
+
/*
|
|
157
|
+
* Alert-dependency suppression inputs. Selected here for the same
|
|
158
|
+
* reason as labels: this query already loads the monitor on the
|
|
159
|
+
* hottest path, and both lists are empty for the overwhelming
|
|
160
|
+
* majority of monitors, in which case suppression costs nothing.
|
|
161
|
+
* Ids only — names are fetched by the suppression util's own
|
|
162
|
+
* parents query, so selecting them here would just duplicate the
|
|
163
|
+
* joined row payload on every evaluation.
|
|
164
|
+
*/
|
|
165
|
+
dependsOnMonitors: {
|
|
166
|
+
_id: true,
|
|
167
|
+
},
|
|
168
|
+
suppressAlertsWhenParentMonitorStatuses: {
|
|
169
|
+
_id: true,
|
|
170
|
+
},
|
|
141
171
|
},
|
|
142
172
|
props: {
|
|
143
173
|
isRoot: true,
|
|
@@ -480,6 +510,8 @@ export default class MonitorResourceUtil {
|
|
|
480
510
|
dataToProcess: dataToProcess,
|
|
481
511
|
probeName: probeName || undefined,
|
|
482
512
|
monitorName: monitorName || undefined,
|
|
513
|
+
monitorLabels: monitor.labels || undefined,
|
|
514
|
+
monitorCustomFields: monitor.customFields || undefined,
|
|
483
515
|
});
|
|
484
516
|
} catch (err) {
|
|
485
517
|
logger.error("Unable to save metrics");
|
|
@@ -903,6 +935,22 @@ export default class MonitorResourceUtil {
|
|
|
903
935
|
matchesPerSeries: response.perSeriesMatches,
|
|
904
936
|
});
|
|
905
937
|
|
|
938
|
+
/*
|
|
939
|
+
* Alert-dependency suppression: if any parent monitor this monitor
|
|
940
|
+
* depends on is currently in a suppressing status (offline by
|
|
941
|
+
* default), skip creating incidents/alerts for this evaluation.
|
|
942
|
+
* Deliberately computed AFTER the status timeline update above —
|
|
943
|
+
* the child's own status must keep tracking reality (status pages,
|
|
944
|
+
* transitive dependency checks); only the redundant paging is
|
|
945
|
+
* silenced. The resolve path for already-open incidents/alerts is
|
|
946
|
+
* likewise untouched. Zero queries when the monitor has no
|
|
947
|
+
* dependencies configured.
|
|
948
|
+
*/
|
|
949
|
+
const dependencySuppression: DependencySuppressionResult =
|
|
950
|
+
await MonitorDependencySuppression.getDependencySuppression({
|
|
951
|
+
monitor: monitor,
|
|
952
|
+
});
|
|
953
|
+
|
|
906
954
|
/*
|
|
907
955
|
* Freeze the Monitor Summary as it stands right now, before any
|
|
908
956
|
* incident or alert is created from it. Both creators store the
|
|
@@ -931,6 +979,7 @@ export default class MonitorResourceUtil {
|
|
|
931
979
|
},
|
|
932
980
|
matchesPerSeries: response.perSeriesMatches,
|
|
933
981
|
suppressedSeriesFingerprints,
|
|
982
|
+
dependencySuppression,
|
|
934
983
|
/*
|
|
935
984
|
* Incoming-request grouping is event-driven: a webhook describes
|
|
936
985
|
* only the keys in its payload, so absence from this tick is not
|
|
@@ -955,6 +1004,7 @@ export default class MonitorResourceUtil {
|
|
|
955
1004
|
},
|
|
956
1005
|
matchesPerSeries: response.perSeriesMatches,
|
|
957
1006
|
suppressedSeriesFingerprints,
|
|
1007
|
+
dependencySuppression,
|
|
958
1008
|
/*
|
|
959
1009
|
* Incoming-request grouping is event-driven (see the incident
|
|
960
1010
|
* create call above): skip the snapshot absence-resolve pass for
|