@oneuptime/common 12.0.15 → 12.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/Index.ts +10 -0
- package/Models/AnalyticsModels/LogCountBaseline.ts +174 -0
- package/Models/AnalyticsModels/SecurityEvent.ts +794 -0
- package/Models/AnalyticsModels/Span.ts +29 -1
- package/Models/AnalyticsModels/SpanCountBaseline.ts +198 -0
- package/Models/DatabaseModels/Alert.ts +42 -0
- package/Models/DatabaseModels/AlertMeasurement.ts +1114 -0
- package/Models/DatabaseModels/AlertMeasurementValue.ts +501 -0
- package/Models/DatabaseModels/AlertStateTimeline.ts +10 -2
- package/Models/DatabaseModels/BillingPaymentMethod.ts +8 -10
- package/Models/DatabaseModels/DetectionRule.ts +487 -0
- package/Models/DatabaseModels/GoogleSecOpsConnection.ts +382 -0
- package/Models/DatabaseModels/Incident.ts +42 -0
- package/Models/DatabaseModels/IncidentMeasurement.ts +1114 -0
- package/Models/DatabaseModels/IncidentMeasurementValue.ts +501 -0
- package/Models/DatabaseModels/IncidentStateTimeline.ts +10 -2
- package/Models/DatabaseModels/IncomingCallPolicyLabelRule.ts +36 -0
- package/Models/DatabaseModels/IncomingCallPolicyOwnerRule.ts +42 -0
- package/Models/DatabaseModels/Index.ts +20 -0
- package/Models/DatabaseModels/Label.ts +11 -0
- package/Models/DatabaseModels/LlmCostBudget.ts +655 -0
- package/Models/DatabaseModels/LlmModelPrice.ts +481 -0
- package/Models/DatabaseModels/LogSavedView.ts +87 -0
- package/Models/DatabaseModels/MarketingConversion.ts +210 -8
- package/Models/DatabaseModels/MetricSavedView.ts +59 -0
- package/Models/DatabaseModels/OnCallDutyPolicyLabelRule.ts +36 -0
- package/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.ts +42 -0
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.ts +36 -0
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.ts +42 -0
- package/Models/DatabaseModels/Probe.ts +21 -0
- package/Models/DatabaseModels/RunbookLabelRule.ts +36 -0
- package/Models/DatabaseModels/RunbookOwnerRule.ts +42 -0
- package/Models/DatabaseModels/ScheduledMaintenanceMeasurement.ts +1104 -0
- package/Models/DatabaseModels/ScheduledMaintenanceMeasurementValue.ts +491 -0
- package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +10 -2
- package/Models/DatabaseModels/StatusPageLabelRule.ts +36 -0
- package/Models/DatabaseModels/StatusPageOwnerRule.ts +42 -0
- package/Models/DatabaseModels/TableView.ts +15 -0
- package/Models/DatabaseModels/Team.ts +13 -0
- package/Models/DatabaseModels/TeamMember.ts +8 -0
- package/Models/DatabaseModels/TraceSavedView.ts +52 -0
- package/Models/DatabaseModels/WorkflowLabelRule.ts +36 -0
- package/Models/DatabaseModels/WorkflowOwnerRule.ts +42 -0
- package/Server/API/TelemetryAPI.ts +252 -6
- package/Server/API/UserAPI.ts +88 -0
- package/Server/EnvironmentConfig.ts +36 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1788000000000-AddDetectionRuleAndGoogleSecOpsConnection.ts +88 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1788100000000-AddMeasurements.ts +457 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1788200000000-AddLlmCostBudget.ts +97 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1788300000000-AddLlmModelPrice.ts +45 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1788400000000-AddMarketingConversionAttribution.ts +105 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1788500000000-RemoveLlmCostBudgetAlertColumns.ts +77 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +12 -0
- package/Server/Middleware/IdentityRateLimit.ts +672 -0
- package/Server/Services/AccessTokenService.ts +15 -2
- package/Server/Services/AlertMeasurementService.ts +302 -0
- package/Server/Services/AlertMeasurementValueService.ts +508 -0
- package/Server/Services/AlertService.ts +50 -0
- package/Server/Services/AlertStateTimelineService.ts +54 -0
- package/Server/Services/DetectionRuleService.ts +74 -0
- package/Server/Services/GoogleSecOpsConnectionService.ts +89 -0
- package/Server/Services/IncidentMeasurementService.ts +304 -0
- package/Server/Services/IncidentMeasurementValueService.ts +523 -0
- package/Server/Services/IncidentService.ts +51 -0
- package/Server/Services/IncidentStateTimelineService.ts +54 -0
- package/Server/Services/Index.ts +30 -0
- package/Server/Services/LlmCostBudgetService.ts +93 -0
- package/Server/Services/LlmModelPriceService.ts +202 -0
- package/Server/Services/LogAggregationService.ts +1106 -2
- package/Server/Services/LogCountBaselineService.ts +163 -0
- package/Server/Services/MutableMetricService.ts +30 -9
- package/Server/Services/ScheduledMaintenanceMeasurementService.ts +311 -0
- package/Server/Services/ScheduledMaintenanceMeasurementValueService.ts +546 -0
- package/Server/Services/ScheduledMaintenanceService.ts +53 -0
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +188 -1
- package/Server/Services/SecurityEventService.ts +104 -0
- package/Server/Services/SpanCountBaselineService.ts +173 -0
- package/Server/Services/StatusPageService.ts +4 -3
- package/Server/Services/TelemetryUsageBillingService.ts +17 -2
- package/Server/Services/UserService.ts +284 -51
- package/Server/Services/UserTotpAuthService.ts +27 -86
- package/Server/Services/UserWebAuthnService.ts +26 -86
- package/Server/Types/Billing/MeteredPlan/AllMeteredPlans.ts +14 -0
- package/Server/Types/Database/Permissions/TenantPermission.ts +10 -0
- package/Server/Types/Database/QueryHelper.ts +1 -1
- package/Server/Utils/AI/Chat/ObservabilityChatPrompt.ts +1 -1
- package/Server/Utils/AI/Toolbox/Index.ts +6 -0
- package/Server/Utils/AI/Toolbox/SecurityEventTools.ts +349 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +13 -4
- package/Server/Utils/Attribution.ts +130 -34
- package/Server/Utils/Marketing/ConversionUploadProvider.ts +98 -16
- package/Server/Utils/Marketing/Providers/GoogleAds.ts +70 -7
- package/Server/Utils/Marketing/Providers/LinkedIn.ts +54 -16
- package/Server/Utils/Marketing/Providers/Meta.ts +52 -18
- package/Server/Utils/Marketing/Providers/MicrosoftAds.ts +37 -10
- package/Server/Utils/Marketing/Providers/Reddit.ts +45 -15
- package/Server/Utils/Measurement/MeasurementDefinitionValidator.ts +209 -0
- package/Server/Utils/Measurement/MeasurementMetricWriter.ts +189 -0
- package/Server/Utils/Monitor/Criteria/CountAnomaly.ts +182 -0
- package/Server/Utils/Monitor/Criteria/LogMonitorCriteria.ts +132 -0
- package/Server/Utils/Monitor/Criteria/SecurityEventsMonitorCriteria.ts +35 -0
- package/Server/Utils/Monitor/Criteria/TraceMonitorCriteria.ts +132 -0
- package/Server/Utils/Monitor/DataToProcess.ts +2 -0
- package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +14 -0
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +15 -0
- package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +20 -0
- package/Server/Utils/Monitor/MonitorResource.ts +16 -0
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +1 -0
- package/Server/Utils/Monitor/MonitorStepsReferenceExtractor.ts +1 -0
- package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +548 -0
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +262 -0
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +212 -0
- package/Server/Utils/SecurityEvent/SecurityEventRow.ts +101 -0
- package/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.ts +635 -0
- package/Server/Utils/Telemetry/LlmCostBudgetEvaluator.ts +379 -0
- package/Server/Utils/Telemetry/LlmSpan.ts +83 -4
- package/Server/Utils/Telemetry/LogErrorPatternSql.ts +136 -0
- package/Server/Utils/UserPermission/UserPermission.ts +57 -1
- package/Tests/App/Dashboard/AlertsSideMenu.test.tsx +4 -0
- package/Tests/App/Dashboard/CreatePageEntryPointPermissions.test.tsx +306 -0
- package/Tests/App/Dashboard/DangerZone.test.tsx +11 -0
- package/Tests/App/Dashboard/IncidentsSideMenu.test.tsx +4 -0
- package/Tests/App/Dashboard/LogMonitorAttributeOperatorPreview.test.tsx +459 -0
- package/Tests/App/Dashboard/OverviewCustomFields.test.tsx +24 -0
- package/Tests/App/Dashboard/ScheduledMaintenanceSideMenu.test.tsx +6 -0
- package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +323 -0
- package/Tests/Models/DatabaseModels/ProjectSharedResources.test.ts +386 -0
- package/Tests/Server/API/LogErrorPatternAPI.test.ts +811 -0
- package/Tests/Server/API/UserAuthenticationAPI.test.ts +11 -0
- package/Tests/Server/API/UserProjectsAPI.test.ts +11 -2
- package/Tests/Server/API/UserTwoFactorAuthAdminAPI.test.ts +918 -0
- package/Tests/Server/Infrastructure/LocalCache.test.ts +149 -0
- package/Tests/Server/Services/AccessTokenProjectUserGrant.test.ts +249 -0
- package/Tests/Server/Services/AlertMeasurementService.test.ts +665 -0
- package/Tests/Server/Services/AlertMeasurementValueService.test.ts +389 -0
- package/Tests/Server/Services/DetectionRuleService.test.ts +254 -0
- package/Tests/Server/Services/IncidentMeasurementService.test.ts +394 -0
- package/Tests/Server/Services/IncidentMeasurementValueService.test.ts +816 -0
- package/Tests/Server/Services/LlmCostBudgetService.test.ts +104 -0
- package/Tests/Server/Services/LogAggregationAttributeOperators.test.ts +405 -0
- package/Tests/Server/Services/LogErrorPatternAggregation.test.ts +804 -0
- package/Tests/Server/Services/MutableMetricNameRouting.test.ts +83 -0
- package/Tests/Server/Services/ScheduledMaintenanceMeasurementService.test.ts +750 -0
- package/Tests/Server/Services/ScheduledMaintenanceMeasurementValueService.test.ts +478 -0
- package/Tests/Server/Services/UserAuthenticationService.test.ts +216 -4
- package/Tests/Server/Services/UserTwoFactorAuthAdmin.test.ts +1190 -0
- package/Tests/Server/Types/Database/Permissions/ScopedRoleSharedResourceAccess.test.ts +466 -0
- package/Tests/Server/Types/Database/QueryHelperOperators.test.ts +265 -0
- package/Tests/Server/Types/Database/QueryHelperTextAndStructuralOperators.test.ts +206 -0
- package/Tests/Server/Utils/AnalyticsDatabase/ClusterAwareSchema.test.ts +6 -0
- package/Tests/Server/Utils/AnalyticsDatabase/FractionalAttributeThreshold.test.ts +224 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +172 -2
- package/Tests/Server/Utils/Attribution.test.ts +228 -1
- package/Tests/Server/Utils/Marketing/AdUploadableConversionTypes.test.ts +153 -92
- package/Tests/Server/Utils/Marketing/ConversionUploadProvider.test.ts +123 -6
- package/Tests/Server/Utils/Marketing/GoogleAds.test.ts +253 -1
- package/Tests/Server/Utils/Marketing/LinkedIn.test.ts +282 -0
- package/Tests/Server/Utils/Marketing/Meta.test.ts +304 -0
- package/Tests/Server/Utils/Marketing/MicrosoftAds.test.ts +263 -0
- package/Tests/Server/Utils/Marketing/Reddit.test.ts +259 -0
- package/Tests/Server/Utils/Measurement/MeasurementDefinitionValidator.test.ts +322 -0
- package/Tests/Server/Utils/Measurement/MeasurementMetricWriter.test.ts +373 -0
- package/Tests/Server/Utils/Monitor/Criteria/CountAnomaly.test.ts +221 -0
- package/Tests/Server/Utils/Monitor/Criteria/LogMonitorCriteria.test.ts +236 -0
- package/Tests/Server/Utils/Monitor/Criteria/SecurityEventsMonitorCriteria.test.ts +147 -0
- package/Tests/Server/Utils/Monitor/Criteria/TraceMonitorCriteria.test.ts +274 -0
- package/Tests/Server/Utils/Monitor/SecurityEventsMonitorDataExtractor.test.ts +93 -0
- package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +660 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +308 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +271 -0
- package/Tests/Server/Utils/SecurityEvent/SecurityEventRow.test.ts +272 -0
- package/Tests/Server/Utils/SecurityEvent/SigmaClickhouseCompiler.test.ts +511 -0
- package/Tests/Server/Utils/Telemetry/LlmCostBudgetEvaluator.test.ts +497 -0
- package/Tests/Server/Utils/Telemetry/LlmSpan.test.ts +380 -0
- package/Tests/Server/Utils/Telemetry/LogErrorPatternSql.test.ts +207 -0
- package/Tests/Server/Utils/UserPermission/ProjectUserGrant.test.ts +293 -0
- package/Tests/Types/Monitor/MonitorStepInfraMonitorUtils.test.ts +194 -0
- package/Tests/Types/Monitor/MonitorStepSecurityEventsMonitor.test.ts +201 -0
- package/Tests/Types/SecurityEvent/OcsfEventClass.test.ts +105 -0
- package/Tests/Types/SecurityEvent/OcsfSeverity.test.ts +111 -0
- package/Tests/Types/Telemetry/LlmCostCatalog.test.ts +516 -0
- package/Tests/UI/Components/ActiveFilterChipsOperatorValues.test.tsx +222 -0
- package/Tests/UI/Components/BulkActionPermissionGating.test.tsx +296 -0
- package/Tests/UI/Components/CardModelDetailPermissionGating.test.tsx +305 -0
- package/Tests/UI/Components/CustomFields/CustomFieldsDetail.test.tsx +23 -0
- package/Tests/UI/Components/DictionaryFilterOperatorDisplay.test.ts +239 -0
- package/Tests/UI/Components/DisabledButtonTooltip.test.tsx +267 -0
- package/Tests/UI/Components/DuplicateModel.test.tsx +37 -0
- package/Tests/UI/Components/ModelCardPermissionGating.test.tsx +348 -0
- package/Tests/UI/Components/ModelDelete.test.tsx +25 -1
- package/Tests/UI/Components/ModelFormCreatePermission.test.tsx +342 -0
- package/Tests/UI/Components/ModelTable/BaseModelTablePermissionGating.test.tsx +680 -0
- package/Tests/UI/Components/OrderedStatesListCreateGate.test.tsx +174 -0
- package/Tests/UI/Components/SavedViewsDropdownSearch.test.tsx +1127 -0
- package/Tests/UI/Components/SavedViewsFacetSection.test.tsx +958 -0
- package/Tests/UI/Components/SavedViewsList.test.ts +699 -0
- package/Tests/UI/Components/SavedViewsSidebarIntegration.test.tsx +640 -0
- package/Tests/UI/Components/SavedViewsSurfaceParity.test.tsx +679 -0
- package/Tests/UI/Components/TableViewLoadFailure.test.tsx +248 -0
- package/Tests/UI/Types/UseComponentOutsideClick.test.tsx +226 -0
- package/Tests/UI/Utils/PermissionGate.test.ts +467 -0
- package/Tests/Utils/Measurement/MeasurementEvaluator.test.ts +639 -0
- package/Tests/Utils/Monitor/MonitorSummarySnapshotUtil.test.ts +1 -0
- package/Tests/Utils/Monitor/NetworkDeviceLinkRuleUtil.test.ts +285 -0
- package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +433 -0
- package/Tests/Utils/SecurityEvent/GenericNormalizer.test.ts +204 -0
- package/Tests/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.test.ts +252 -0
- package/Tests/Utils/SecurityEvent/NormalizerHelpers.test.ts +274 -0
- package/Tests/Utils/SecurityEvent/OcsfNormalizer.test.ts +208 -0
- package/Tests/Utils/SecurityEvent/SecurityEventNormalizer.test.ts +172 -0
- package/Tests/Utils/SecurityEvent/SigmaRuleParser.test.ts +471 -0
- package/Tests/Utils/SecurityEvent/UdmNormalizer.test.ts +361 -0
- package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +82 -0
- package/Tests/Utils/Telemetry/LogErrorPattern.test.ts +463 -0
- package/Types/AI/AIChatTypes.ts +1 -0
- package/Types/Alerts/AlertMeasurementAnchorType.ts +14 -0
- package/Types/Alerts/AlertStateRole.ts +11 -0
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +16 -0
- package/Types/Dashboard/Chart/ChartType.ts +1 -0
- package/Types/Dashboard/DashboardComponentType.ts +2 -0
- package/Types/Dashboard/DashboardComponents/DashboardSecurityEventsFlowComponent.ts +18 -0
- package/Types/Dashboard/DashboardComponents/DashboardSecurityEventsListComponent.ts +16 -0
- package/Types/Incident/IncidentMeasurementAnchorType.ts +34 -0
- package/Types/Incident/IncidentStateRole.ts +14 -0
- package/Types/Marketing/Attribution.ts +75 -0
- package/Types/Marketing/MarketingConversion.ts +37 -7
- package/Types/Measurement/MeasurementAggregationType.ts +43 -0
- package/Types/Measurement/MeasurementAnchorKind.ts +23 -0
- package/Types/Measurement/MeasurementOccurrence.ts +14 -0
- package/Types/Measurement/MeasurementStatus.ts +34 -0
- package/Types/MeteredPlan/ProductType.ts +1 -0
- package/Types/Monitor/CriteriaFilter.ts +3 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +64 -0
- package/Types/Monitor/MonitorStep.ts +28 -0
- package/Types/Monitor/MonitorStepSecurityEventsMonitor.ts +100 -0
- package/Types/Monitor/MonitorType.ts +20 -0
- package/Types/Monitor/SecurityEventsMonitor/SecurityEventsMonitorResponse.ts +17 -0
- package/Types/Permission.ts +399 -2
- package/Types/ScheduledMaintenance/ScheduledMaintenanceMeasurementAnchorType.ts +20 -0
- package/Types/ScheduledMaintenance/ScheduledMaintenanceStateRole.ts +16 -0
- package/Types/SecurityEvent/NormalizedSecurityEvent.ts +92 -0
- package/Types/SecurityEvent/OcsfEventClass.ts +205 -0
- package/Types/SecurityEvent/OcsfSeverity.ts +88 -0
- package/Types/SecurityEvent/SecurityEventFormat.ts +23 -0
- package/Types/SecurityEvent/SigmaRule.ts +70 -0
- package/Types/Telemetry/LlmConventions.ts +20 -1
- package/Types/Telemetry/LlmCostCatalog.ts +557 -0
- package/Types/Telemetry/ServiceType.ts +1 -0
- package/Types/Telemetry/TelemetryRetentionConfig.ts +5 -1
- package/Types/Telemetry/TelemetryType.ts +1 -0
- package/Types/TwoFactorAuthStatus.ts +42 -0
- package/Types/UserAuthenticationStatus.ts +18 -0
- package/UI/Components/ActionButton/ActionButtonSchema.ts +7 -0
- package/UI/Components/BulkUpdate/BulkArchiveActions.tsx +35 -2
- package/UI/Components/BulkUpdate/BulkLabelActions.tsx +34 -1
- package/UI/Components/BulkUpdate/BulkOwnerActions.tsx +45 -1
- package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +3 -0
- package/UI/Components/Button/Button.tsx +37 -2
- package/UI/Components/Card/Card.tsx +6 -0
- package/UI/Components/CustomFields/CustomFieldsDetail.tsx +24 -1
- package/UI/Components/Dictionary/DictionaryFilterOperator.ts +57 -0
- package/UI/Components/DuplicateModel/DuplicateModel.tsx +16 -0
- package/UI/Components/Forms/ModelForm.tsx +54 -2
- package/UI/Components/List/ListRow.tsx +6 -0
- package/UI/Components/LogsViewer/components/ActiveFilterChips.tsx +34 -7
- package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +7 -40
- package/UI/Components/LogsViewer/components/SavedViewsDropdown.tsx +155 -3
- package/UI/Components/ModelDelete/ModelDelete.tsx +20 -0
- package/UI/Components/ModelDetail/CardModelDetail.tsx +36 -23
- package/UI/Components/ModelList/ModelList.tsx +21 -2
- package/UI/Components/ModelList/StaticModelList.tsx +11 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +168 -62
- package/UI/Components/ModelTable/ModelTable.tsx +16 -10
- package/UI/Components/ModelTable/TableView.tsx +36 -4
- package/UI/Components/MoreMenu/MoreMenuItem.tsx +36 -4
- package/UI/Components/OrderedStatesList/Item.tsx +6 -0
- package/UI/Components/OrderedStatesList/OrderedStatesList.tsx +81 -47
- package/UI/Components/ResetObjectID/ResetObjectID.tsx +16 -0
- package/UI/Components/SavedViews/SavedViewsFacetSection.tsx +242 -0
- package/UI/Components/SavedViews/SavedViewsList.ts +168 -0
- package/UI/Components/SavedViews/SavedViewsSearchInput.tsx +46 -0
- package/UI/Components/SavedViews/SavedViewsShowMoreButton.tsx +44 -0
- package/UI/Components/Table/TableRow.tsx +12 -0
- package/UI/Components/TelemetryViewer/components/SavedViewsDropdown.tsx +152 -2
- package/UI/Types/UseComponentOutsideClick.ts +47 -0
- package/UI/Utils/PermissionGate.ts +277 -0
- package/Utils/Dashboard/Components/DashboardSecurityEventsFlowComponent.ts +84 -0
- package/Utils/Dashboard/Components/DashboardSecurityEventsListComponent.ts +110 -0
- package/Utils/Dashboard/Components/Index.ts +14 -0
- package/Utils/Measurement/MeasurementEvaluator.ts +359 -0
- package/Utils/Monitor/MonitorSummarySnapshotUtil.ts +1 -0
- package/Utils/Monitor/NetworkDeviceLinkRuleUtil.ts +93 -11
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +231 -0
- package/Utils/SecurityEvent/GenericNormalizer.ts +208 -0
- package/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.ts +206 -0
- package/Utils/SecurityEvent/NormalizerHelpers.ts +263 -0
- package/Utils/SecurityEvent/OcsfNormalizer.ts +194 -0
- package/Utils/SecurityEvent/SecurityEventNormalizer.ts +82 -0
- package/Utils/SecurityEvent/Sigma/SigmaRuleParser.ts +579 -0
- package/Utils/SecurityEvent/UdmNormalizer.ts +442 -0
- package/Utils/Telemetry/CrossSignalScope.ts +46 -9
- package/Utils/Telemetry/LogErrorPattern.ts +350 -0
- package/build/dist/Models/AnalyticsModels/Index.js +10 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/LogCountBaseline.js +159 -0
- package/build/dist/Models/AnalyticsModels/LogCountBaseline.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/SecurityEvent.js +596 -0
- package/build/dist/Models/AnalyticsModels/SecurityEvent.js.map +1 -0
- package/build/dist/Models/AnalyticsModels/Span.js +24 -1
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/SpanCountBaseline.js +181 -0
- package/build/dist/Models/AnalyticsModels/SpanCountBaseline.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Alert.js +43 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertMeasurement.js +1143 -0
- package/build/dist/Models/DatabaseModels/AlertMeasurement.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertMeasurementValue.js +523 -0
- package/build/dist/Models/DatabaseModels/AlertMeasurementValue.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +9 -2
- package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/BillingPaymentMethod.js +10 -11
- package/build/dist/Models/DatabaseModels/BillingPaymentMethod.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DetectionRule.js +517 -0
- package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +410 -0
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Incident.js +43 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentMeasurement.js +1143 -0
- package/build/dist/Models/DatabaseModels/IncidentMeasurement.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentMeasurementValue.js +523 -0
- package/build/dist/Models/DatabaseModels/IncidentMeasurementValue.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +9 -2
- package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js +36 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js +42 -0
- package/build/dist/Models/DatabaseModels/IncomingCallPolicyOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +20 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Label.js +11 -0
- package/build/dist/Models/DatabaseModels/Label.js.map +1 -1
- package/build/dist/Models/DatabaseModels/LlmCostBudget.js +681 -0
- package/build/dist/Models/DatabaseModels/LlmCostBudget.js.map +1 -0
- package/build/dist/Models/DatabaseModels/LlmModelPrice.js +503 -0
- package/build/dist/Models/DatabaseModels/LlmModelPrice.js.map +1 -0
- package/build/dist/Models/DatabaseModels/LogSavedView.js +87 -0
- package/build/dist/Models/DatabaseModels/LogSavedView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MarketingConversion.js +224 -8
- package/build/dist/Models/DatabaseModels/MarketingConversion.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricSavedView.js +59 -0
- package/build/dist/Models/DatabaseModels/MetricSavedView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js +36 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js +42 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js +36 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js +42 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Probe.js +21 -0
- package/build/dist/Models/DatabaseModels/Probe.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookLabelRule.js +36 -0
- package/build/dist/Models/DatabaseModels/RunbookLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/RunbookOwnerRule.js +42 -0
- package/build/dist/Models/DatabaseModels/RunbookOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceMeasurement.js +1133 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceMeasurement.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceMeasurementValue.js +515 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceMeasurementValue.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +9 -2
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageLabelRule.js +36 -0
- package/build/dist/Models/DatabaseModels/StatusPageLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOwnerRule.js +42 -0
- package/build/dist/Models/DatabaseModels/StatusPageOwnerRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TableView.js +15 -0
- package/build/dist/Models/DatabaseModels/TableView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Team.js +13 -0
- package/build/dist/Models/DatabaseModels/Team.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TeamMember.js +8 -0
- package/build/dist/Models/DatabaseModels/TeamMember.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TraceSavedView.js +52 -0
- package/build/dist/Models/DatabaseModels/TraceSavedView.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowLabelRule.js +36 -0
- package/build/dist/Models/DatabaseModels/WorkflowLabelRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkflowOwnerRule.js +42 -0
- package/build/dist/Models/DatabaseModels/WorkflowOwnerRule.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +136 -0
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/UserAPI.js +75 -2
- package/build/dist/Server/API/UserAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +29 -1
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788000000000-AddDetectionRuleAndGoogleSecOpsConnection.js +36 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788000000000-AddDetectionRuleAndGoogleSecOpsConnection.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788100000000-AddMeasurements.js +162 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788100000000-AddMeasurements.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788200000000-AddLlmCostBudget.js +40 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788200000000-AddLlmCostBudget.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788300000000-AddLlmModelPrice.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788300000000-AddLlmModelPrice.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788400000000-AddMarketingConversionAttribution.js +52 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788400000000-AddMarketingConversionAttribution.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788500000000-RemoveLlmCostBudgetAlertColumns.js +38 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1788500000000-RemoveLlmCostBudgetAlertColumns.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/Middleware/IdentityRateLimit.js +491 -0
- package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -0
- package/build/dist/Server/Services/AccessTokenService.js +13 -2
- package/build/dist/Server/Services/AccessTokenService.js.map +1 -1
- package/build/dist/Server/Services/AlertMeasurementService.js +250 -0
- package/build/dist/Server/Services/AlertMeasurementService.js.map +1 -0
- package/build/dist/Server/Services/AlertMeasurementValueService.js +400 -0
- package/build/dist/Server/Services/AlertMeasurementValueService.js.map +1 -0
- package/build/dist/Server/Services/AlertService.js +37 -0
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/AlertStateTimelineService.js +48 -0
- package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/DetectionRuleService.js +50 -0
- package/build/dist/Server/Services/DetectionRuleService.js.map +1 -0
- package/build/dist/Server/Services/GoogleSecOpsConnectionService.js +55 -0
- package/build/dist/Server/Services/GoogleSecOpsConnectionService.js.map +1 -0
- package/build/dist/Server/Services/IncidentMeasurementService.js +252 -0
- package/build/dist/Server/Services/IncidentMeasurementService.js.map +1 -0
- package/build/dist/Server/Services/IncidentMeasurementValueService.js +413 -0
- package/build/dist/Server/Services/IncidentMeasurementValueService.js.map +1 -0
- package/build/dist/Server/Services/IncidentService.js +41 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/IncidentStateTimelineService.js +50 -0
- package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +30 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LlmCostBudgetService.js +89 -0
- package/build/dist/Server/Services/LlmCostBudgetService.js.map +1 -0
- package/build/dist/Server/Services/LlmModelPriceService.js +163 -0
- package/build/dist/Server/Services/LlmModelPriceService.js.map +1 -0
- package/build/dist/Server/Services/LogAggregationService.js +709 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/LogCountBaselineService.js +112 -0
- package/build/dist/Server/Services/LogCountBaselineService.js.map +1 -0
- package/build/dist/Server/Services/MutableMetricService.js +28 -9
- package/build/dist/Server/Services/MutableMetricService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceMeasurementService.js +254 -0
- package/build/dist/Server/Services/ScheduledMaintenanceMeasurementService.js.map +1 -0
- package/build/dist/Server/Services/ScheduledMaintenanceMeasurementValueService.js +434 -0
- package/build/dist/Server/Services/ScheduledMaintenanceMeasurementValueService.js.map +1 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +37 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +134 -0
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/SecurityEventService.js +64 -0
- package/build/dist/Server/Services/SecurityEventService.js.map +1 -0
- package/build/dist/Server/Services/SpanCountBaselineService.js +122 -0
- package/build/dist/Server/Services/SpanCountBaselineService.js.map +1 -0
- package/build/dist/Server/Services/StatusPageService.js +4 -3
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryUsageBillingService.js +15 -3
- package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +262 -42
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/UserTotpAuthService.js +0 -73
- package/build/dist/Server/Services/UserTotpAuthService.js.map +1 -1
- package/build/dist/Server/Services/UserWebAuthnService.js +1 -73
- package/build/dist/Server/Services/UserWebAuthnService.js.map +1 -1
- package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js +13 -0
- package/build/dist/Server/Types/Billing/MeteredPlan/AllMeteredPlans.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +10 -0
- package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/AI/Chat/ObservabilityChatPrompt.js +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/Index.js +3 -0
- package/build/dist/Server/Utils/AI/Toolbox/Index.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/SecurityEventTools.js +257 -0
- package/build/dist/Server/Utils/AI/Toolbox/SecurityEventTools.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +13 -4
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Attribution.js +77 -33
- package/build/dist/Server/Utils/Attribution.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js +46 -9
- package/build/dist/Server/Utils/Marketing/ConversionUploadProvider.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js +52 -8
- package/build/dist/Server/Utils/Marketing/Providers/GoogleAds.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js +41 -17
- package/build/dist/Server/Utils/Marketing/Providers/LinkedIn.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js +42 -18
- package/build/dist/Server/Utils/Marketing/Providers/Meta.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js +24 -11
- package/build/dist/Server/Utils/Marketing/Providers/MicrosoftAds.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js +34 -15
- package/build/dist/Server/Utils/Marketing/Providers/Reddit.js.map +1 -1
- package/build/dist/Server/Utils/Measurement/MeasurementDefinitionValidator.js +109 -0
- package/build/dist/Server/Utils/Measurement/MeasurementDefinitionValidator.js.map +1 -0
- package/build/dist/Server/Utils/Measurement/MeasurementMetricWriter.js +131 -0
- package/build/dist/Server/Utils/Measurement/MeasurementMetricWriter.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/CountAnomaly.js +111 -0
- package/build/dist/Server/Utils/Monitor/Criteria/CountAnomaly.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/LogMonitorCriteria.js +84 -1
- package/build/dist/Server/Utils/Monitor/Criteria/LogMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SecurityEventsMonitorCriteria.js +35 -0
- package/build/dist/Server/Utils/Monitor/Criteria/SecurityEventsMonitorCriteria.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/TraceMonitorCriteria.js +84 -1
- package/build/dist/Server/Utils/Monitor/Criteria/TraceMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +7 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +12 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +9 -0
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +10 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +6 -5
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorStepsReferenceExtractor.js +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorStepsReferenceExtractor.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +404 -0
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +145 -0
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +176 -0
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/SecurityEventRow.js +69 -0
- package/build/dist/Server/Utils/SecurityEvent/SecurityEventRow.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js +493 -0
- package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/LlmCostBudgetEvaluator.js +317 -0
- package/build/dist/Server/Utils/Telemetry/LlmCostBudgetEvaluator.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/LlmSpan.js +56 -4
- package/build/dist/Server/Utils/Telemetry/LlmSpan.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LogErrorPatternSql.js +112 -0
- package/build/dist/Server/Utils/Telemetry/LogErrorPatternSql.js.map +1 -0
- package/build/dist/Server/Utils/UserPermission/UserPermission.js +46 -1
- package/build/dist/Server/Utils/UserPermission/UserPermission.js.map +1 -1
- package/build/dist/Types/AI/AIChatTypes.js +1 -0
- package/build/dist/Types/AI/AIChatTypes.js.map +1 -1
- package/build/dist/Types/Alerts/AlertMeasurementAnchorType.js +15 -0
- package/build/dist/Types/Alerts/AlertMeasurementAnchorType.js.map +1 -0
- package/build/dist/Types/Alerts/AlertStateRole.js +12 -0
- package/build/dist/Types/Alerts/AlertStateRole.js.map +1 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +16 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/Dashboard/Chart/ChartType.js +1 -0
- package/build/dist/Types/Dashboard/Chart/ChartType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponentType.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponentType.js.map +1 -1
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSecurityEventsFlowComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSecurityEventsFlowComponent.js.map +1 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSecurityEventsListComponent.js +2 -0
- package/build/dist/Types/Dashboard/DashboardComponents/DashboardSecurityEventsListComponent.js.map +1 -0
- package/build/dist/Types/Incident/IncidentMeasurementAnchorType.js +29 -0
- package/build/dist/Types/Incident/IncidentMeasurementAnchorType.js.map +1 -0
- package/build/dist/Types/Incident/IncidentStateRole.js +15 -0
- package/build/dist/Types/Incident/IncidentStateRole.js.map +1 -0
- package/build/dist/Types/Marketing/Attribution.js +68 -0
- package/build/dist/Types/Marketing/Attribution.js.map +1 -0
- package/build/dist/Types/Marketing/MarketingConversion.js +36 -7
- package/build/dist/Types/Marketing/MarketingConversion.js.map +1 -1
- package/build/dist/Types/Measurement/MeasurementAggregationType.js +40 -0
- package/build/dist/Types/Measurement/MeasurementAggregationType.js.map +1 -0
- package/build/dist/Types/Measurement/MeasurementAnchorKind.js +22 -0
- package/build/dist/Types/Measurement/MeasurementAnchorKind.js.map +1 -0
- package/build/dist/Types/Measurement/MeasurementOccurrence.js +15 -0
- package/build/dist/Types/Measurement/MeasurementOccurrence.js.map +1 -0
- package/build/dist/Types/Measurement/MeasurementStatus.js +32 -0
- package/build/dist/Types/Measurement/MeasurementStatus.js.map +1 -0
- package/build/dist/Types/MeteredPlan/ProductType.js +1 -0
- package/build/dist/Types/MeteredPlan/ProductType.js.map +1 -1
- package/build/dist/Types/Monitor/CriteriaFilter.js +2 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +59 -0
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +17 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStepSecurityEventsMonitor.js +64 -0
- package/build/dist/Types/Monitor/MonitorStepSecurityEventsMonitor.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorType.js +19 -0
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/SecurityEventsMonitor/SecurityEventsMonitorResponse.js +2 -0
- package/build/dist/Types/Monitor/SecurityEventsMonitor/SecurityEventsMonitorResponse.js.map +1 -0
- package/build/dist/Types/Permission.js +347 -2
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/ScheduledMaintenance/ScheduledMaintenanceMeasurementAnchorType.js +19 -0
- package/build/dist/Types/ScheduledMaintenance/ScheduledMaintenanceMeasurementAnchorType.js.map +1 -0
- package/build/dist/Types/ScheduledMaintenance/ScheduledMaintenanceStateRole.js +17 -0
- package/build/dist/Types/ScheduledMaintenance/ScheduledMaintenanceStateRole.js.map +1 -0
- package/build/dist/Types/SecurityEvent/NormalizedSecurityEvent.js +2 -0
- package/build/dist/Types/SecurityEvent/NormalizedSecurityEvent.js.map +1 -0
- package/build/dist/Types/SecurityEvent/OcsfEventClass.js +181 -0
- package/build/dist/Types/SecurityEvent/OcsfEventClass.js.map +1 -0
- package/build/dist/Types/SecurityEvent/OcsfSeverity.js +81 -0
- package/build/dist/Types/SecurityEvent/OcsfSeverity.js.map +1 -0
- package/build/dist/Types/SecurityEvent/SecurityEventFormat.js +21 -0
- package/build/dist/Types/SecurityEvent/SecurityEventFormat.js.map +1 -0
- package/build/dist/Types/SecurityEvent/SigmaRule.js +16 -0
- package/build/dist/Types/SecurityEvent/SigmaRule.js.map +1 -0
- package/build/dist/Types/Telemetry/LlmConventions.js +19 -1
- package/build/dist/Types/Telemetry/LlmConventions.js.map +1 -1
- package/build/dist/Types/Telemetry/LlmCostCatalog.js +484 -0
- package/build/dist/Types/Telemetry/LlmCostCatalog.js.map +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js +1 -0
- package/build/dist/Types/Telemetry/ServiceType.js.map +1 -1
- package/build/dist/Types/Telemetry/TelemetryRetentionConfig.js.map +1 -1
- package/build/dist/Types/Telemetry/TelemetryType.js +1 -0
- package/build/dist/Types/Telemetry/TelemetryType.js.map +1 -1
- package/build/dist/Types/TwoFactorAuthStatus.js +41 -0
- package/build/dist/Types/TwoFactorAuthStatus.js.map +1 -0
- package/build/dist/UI/Components/BulkUpdate/BulkArchiveActions.js +16 -2
- package/build/dist/UI/Components/BulkUpdate/BulkArchiveActions.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js +15 -1
- package/build/dist/UI/Components/BulkUpdate/BulkLabelActions.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js +20 -1
- package/build/dist/UI/Components/BulkUpdate/BulkOwnerActions.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
- package/build/dist/UI/Components/Button/Button.js +22 -1
- package/build/dist/UI/Components/Button/Button.js.map +1 -1
- package/build/dist/UI/Components/Card/Card.js +1 -1
- package/build/dist/UI/Components/Card/Card.js.map +1 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js +14 -1
- package/build/dist/UI/Components/CustomFields/CustomFieldsDetail.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js +47 -0
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js.map +1 -1
- package/build/dist/UI/Components/DuplicateModel/DuplicateModel.js +8 -0
- package/build/dist/UI/Components/DuplicateModel/DuplicateModel.js.map +1 -1
- package/build/dist/UI/Components/Forms/ModelForm.js +40 -1
- package/build/dist/UI/Components/Forms/ModelForm.js.map +1 -1
- package/build/dist/UI/Components/List/ListRow.js +4 -1
- package/build/dist/UI/Components/List/ListRow.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js +32 -7
- package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +2 -17
- package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/SavedViewsDropdown.js +93 -4
- package/build/dist/UI/Components/LogsViewer/components/SavedViewsDropdown.js.map +1 -1
- package/build/dist/UI/Components/ModelDelete/ModelDelete.js +13 -0
- package/build/dist/UI/Components/ModelDelete/ModelDelete.js.map +1 -1
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js +27 -11
- package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
- package/build/dist/UI/Components/ModelList/ModelList.js +13 -2
- package/build/dist/UI/Components/ModelList/ModelList.js.map +1 -1
- package/build/dist/UI/Components/ModelList/StaticModelList.js +4 -1
- package/build/dist/UI/Components/ModelList/StaticModelList.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +101 -40
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ModelTable.js +9 -7
- package/build/dist/UI/Components/ModelTable/ModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/TableView.js +32 -4
- package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +19 -2
- package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
- package/build/dist/UI/Components/OrderedStatesList/Item.js +4 -1
- package/build/dist/UI/Components/OrderedStatesList/Item.js.map +1 -1
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js +33 -32
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js.map +1 -1
- package/build/dist/UI/Components/ResetObjectID/ResetObjectID.js +8 -0
- package/build/dist/UI/Components/ResetObjectID/ResetObjectID.js.map +1 -1
- package/build/dist/UI/Components/SavedViews/SavedViewsFacetSection.js +98 -0
- package/build/dist/UI/Components/SavedViews/SavedViewsFacetSection.js.map +1 -0
- package/build/dist/UI/Components/SavedViews/SavedViewsList.js +99 -0
- package/build/dist/UI/Components/SavedViews/SavedViewsList.js.map +1 -0
- package/build/dist/UI/Components/SavedViews/SavedViewsSearchInput.js +17 -0
- package/build/dist/UI/Components/SavedViews/SavedViewsSearchInput.js.map +1 -0
- package/build/dist/UI/Components/SavedViews/SavedViewsShowMoreButton.js +15 -0
- package/build/dist/UI/Components/SavedViews/SavedViewsShowMoreButton.js.map +1 -0
- package/build/dist/UI/Components/Table/TableRow.js +8 -2
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js +93 -4
- package/build/dist/UI/Components/TelemetryViewer/components/SavedViewsDropdown.js.map +1 -1
- package/build/dist/UI/Types/UseComponentOutsideClick.js +39 -0
- package/build/dist/UI/Types/UseComponentOutsideClick.js.map +1 -1
- package/build/dist/UI/Utils/PermissionGate.js +164 -0
- package/build/dist/UI/Utils/PermissionGate.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSecurityEventsFlowComponent.js +70 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSecurityEventsFlowComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSecurityEventsListComponent.js +92 -0
- package/build/dist/Utils/Dashboard/Components/DashboardSecurityEventsListComponent.js.map +1 -0
- package/build/dist/Utils/Dashboard/Components/Index.js +8 -0
- package/build/dist/Utils/Dashboard/Components/Index.js.map +1 -1
- package/build/dist/Utils/Measurement/MeasurementEvaluator.js +210 -0
- package/build/dist/Utils/Measurement/MeasurementEvaluator.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorSummarySnapshotUtil.js +1 -0
- package/build/dist/Utils/Monitor/MonitorSummarySnapshotUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js +51 -10
- package/build/dist/Utils/Monitor/NetworkDeviceLinkRuleUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +108 -0
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -0
- package/build/dist/Utils/SecurityEvent/GenericNormalizer.js +176 -0
- package/build/dist/Utils/SecurityEvent/GenericNormalizer.js.map +1 -0
- package/build/dist/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.js +146 -0
- package/build/dist/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.js.map +1 -0
- package/build/dist/Utils/SecurityEvent/NormalizerHelpers.js +196 -0
- package/build/dist/Utils/SecurityEvent/NormalizerHelpers.js.map +1 -0
- package/build/dist/Utils/SecurityEvent/OcsfNormalizer.js +136 -0
- package/build/dist/Utils/SecurityEvent/OcsfNormalizer.js.map +1 -0
- package/build/dist/Utils/SecurityEvent/SecurityEventNormalizer.js +64 -0
- package/build/dist/Utils/SecurityEvent/SecurityEventNormalizer.js.map +1 -0
- package/build/dist/Utils/SecurityEvent/Sigma/SigmaRuleParser.js +388 -0
- package/build/dist/Utils/SecurityEvent/Sigma/SigmaRuleParser.js.map +1 -0
- package/build/dist/Utils/SecurityEvent/UdmNormalizer.js +328 -0
- package/build/dist/Utils/SecurityEvent/UdmNormalizer.js.map +1 -0
- package/build/dist/Utils/Telemetry/CrossSignalScope.js +29 -7
- package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
- package/build/dist/Utils/Telemetry/LogErrorPattern.js +284 -0
- package/build/dist/Utils/Telemetry/LogErrorPattern.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The visitor-attribution wire contract, shared by every place that reads or
|
|
3
|
+
* writes it.
|
|
4
|
+
*
|
|
5
|
+
* Attribution starts in the browser (Home/Views/head-basic.ejs stores it in
|
|
6
|
+
* localStorage) and reaches the server through two unrelated doors:
|
|
7
|
+
*
|
|
8
|
+
* - the signup form (App/FeatureSet/Accounts/src/Pages/Register.tsx), which
|
|
9
|
+
* posts it onto the User record;
|
|
10
|
+
* - the Cal.com booking webhook (App/API/CalWebhook.ts), which reads it back
|
|
11
|
+
* out of the booking metadata the embed carried. Every page that books —
|
|
12
|
+
* /enterprise/demo, /support, /enterprise/self-hosted — goes through it.
|
|
13
|
+
*
|
|
14
|
+
* Both doors are reachable by an unauthenticated caller, so both must whitelist
|
|
15
|
+
* and length-bound what they accept. Keeping the key lists here rather than in
|
|
16
|
+
* each door means a key added for the browser cannot be silently dropped by one
|
|
17
|
+
* of the readers — which is exactly what happened to UTM parameters on the Cal
|
|
18
|
+
* path, where the webhook parsed click IDs the embed never sent.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
// Ad-platform click identifiers, in the spelling each platform uses on the URL.
|
|
22
|
+
export const AdClickIdKeys: Array<string> = [
|
|
23
|
+
"gclid",
|
|
24
|
+
"wbraid",
|
|
25
|
+
"gbraid",
|
|
26
|
+
"fbclid",
|
|
27
|
+
"msclkid",
|
|
28
|
+
"li_fat_id",
|
|
29
|
+
"twclid",
|
|
30
|
+
"rdt_cid",
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
* UTM parameters travel as snake_case on a URL and in Cal booking metadata,
|
|
35
|
+
* and as camelCase once they are columns on User/Project/MarketingConversion.
|
|
36
|
+
* Both spellings are accepted on the way in — Cal booking questions and hand
|
|
37
|
+
* written links produce either — and only the camelCase form is stored.
|
|
38
|
+
*/
|
|
39
|
+
export const UtmWireKeyToPropertyKey: Record<string, string> = {
|
|
40
|
+
utm_source: "utmSource",
|
|
41
|
+
utm_medium: "utmMedium",
|
|
42
|
+
utm_campaign: "utmCampaign",
|
|
43
|
+
utm_term: "utmTerm",
|
|
44
|
+
utm_content: "utmContent",
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export const UtmPropertyKeys: Array<string> = Object.values(
|
|
48
|
+
UtmWireKeyToPropertyKey,
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
/*
|
|
52
|
+
* The landing URL of the attributed visit. Stored separately from the UTM
|
|
53
|
+
* values because it is the only field that survives a campaign whose link
|
|
54
|
+
* carried no UTMs at all (Google Ads auto-tagging sends gclid and nothing
|
|
55
|
+
* else).
|
|
56
|
+
*/
|
|
57
|
+
export const UtmUrlPropertyKey: string = "utmUrl";
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* The shape the marketing site writes to localStorage under `firstTouch` and
|
|
61
|
+
* never overwrites. `clickIds` is nested inside it and handled separately.
|
|
62
|
+
*/
|
|
63
|
+
export const FirstTouchStringKeys: Array<string> = [
|
|
64
|
+
...UtmPropertyKeys,
|
|
65
|
+
"landingUrl",
|
|
66
|
+
"referrer",
|
|
67
|
+
"timestamp",
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
/*
|
|
71
|
+
* Every attribution value is bounded to this before it is persisted. The utm*
|
|
72
|
+
* columns are LongText, so the bound is not the column width — it is a cap on
|
|
73
|
+
* what an unauthenticated caller can push into the row.
|
|
74
|
+
*/
|
|
75
|
+
export const MaxAttributionValueLength: number = 500;
|
|
@@ -6,18 +6,48 @@ export enum MarketingConversionType {
|
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
/*
|
|
9
|
-
* Conversion types
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* Conversion types ad platforms may be told about.
|
|
10
|
+
*
|
|
11
|
+
* This list used to hold only SignUp and PaidSubscription because every
|
|
12
|
+
* provider chose its platform conversion action with a two-way branch on
|
|
13
|
+
* isSignUp(), so any third type would have been uploaded as a *purchase*
|
|
14
|
+
* carrying whatever value the row held. That branch is gone: providers now
|
|
15
|
+
* declare a Record<MarketingConversionType, ...> mapping, which the compiler
|
|
16
|
+
* refuses to accept unless every member of the enum above is named. Adding a
|
|
17
|
+
* conversion type is therefore a type error in each provider until that
|
|
18
|
+
* provider says what the type means on its platform.
|
|
19
|
+
*
|
|
20
|
+
* A mapping may legitimately be an empty string, meaning "this deployment has
|
|
21
|
+
* not configured a conversion action for this type yet". That is a config gap,
|
|
22
|
+
* not a modelling gap: the worker leaves such rows pending rather than
|
|
23
|
+
* skipping them, so they upload once the id is set.
|
|
14
24
|
*/
|
|
15
25
|
export const AdUploadableMarketingConversionTypes: Array<MarketingConversionType> =
|
|
16
|
-
[
|
|
26
|
+
[
|
|
27
|
+
MarketingConversionType.SignUp,
|
|
28
|
+
MarketingConversionType.MeetingBooked,
|
|
29
|
+
MarketingConversionType.PaidSubscription,
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* Types that represent a sales-led lead rather than a completed self-serve
|
|
34
|
+
* transaction. They carry no revenue of their own — a booked meeting is not
|
|
35
|
+
* money — so providers must not attach a conversion value to them even when
|
|
36
|
+
* the row happens to have one, and platforms that demand a value for their
|
|
37
|
+
* purchase-shaped events must not be handed these as purchases.
|
|
38
|
+
*
|
|
39
|
+
* Every sales-led step is a booked meeting. The enterprise licence request is
|
|
40
|
+
* not a separate type: asking about a licence and booking an architecture
|
|
41
|
+
* assessment are the same conversation, reached through the same Cal embed, so
|
|
42
|
+
* they are the same conversion.
|
|
43
|
+
*/
|
|
44
|
+
export const LeadMarketingConversionTypes: Array<MarketingConversionType> = [
|
|
45
|
+
MarketingConversionType.MeetingBooked,
|
|
46
|
+
];
|
|
17
47
|
|
|
18
48
|
export enum MarketingConversionUploadStatus {
|
|
19
49
|
Uploaded = "Uploaded",
|
|
20
50
|
Failed = "Failed",
|
|
21
|
-
// No
|
|
51
|
+
// No identifier relevant to this ad platform — nothing to upload.
|
|
22
52
|
Skipped = "Skipped",
|
|
23
53
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import AggregationType from "../BaseDatabase/AggregationType";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* The aggregation a measurement's chart should default to.
|
|
5
|
+
*
|
|
6
|
+
* Kept as a narrow subset of AggregationType: summing durations across
|
|
7
|
+
* incidents produces a number with no meaning, so Sum is deliberately absent.
|
|
8
|
+
*/
|
|
9
|
+
enum MeasurementAggregationType {
|
|
10
|
+
Avg = "Avg",
|
|
11
|
+
Max = "Max",
|
|
12
|
+
Min = "Min",
|
|
13
|
+
P50 = "P50",
|
|
14
|
+
P90 = "P90",
|
|
15
|
+
P95 = "P95",
|
|
16
|
+
P99 = "P99",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export class MeasurementAggregationTypeUtil {
|
|
20
|
+
public static toAggregationType(
|
|
21
|
+
type: MeasurementAggregationType | undefined,
|
|
22
|
+
): AggregationType {
|
|
23
|
+
switch (type) {
|
|
24
|
+
case MeasurementAggregationType.Max:
|
|
25
|
+
return AggregationType.Max;
|
|
26
|
+
case MeasurementAggregationType.Min:
|
|
27
|
+
return AggregationType.Min;
|
|
28
|
+
case MeasurementAggregationType.P50:
|
|
29
|
+
return AggregationType.P50;
|
|
30
|
+
case MeasurementAggregationType.P90:
|
|
31
|
+
return AggregationType.P90;
|
|
32
|
+
case MeasurementAggregationType.P95:
|
|
33
|
+
return AggregationType.P95;
|
|
34
|
+
case MeasurementAggregationType.P99:
|
|
35
|
+
return AggregationType.P99;
|
|
36
|
+
case MeasurementAggregationType.Avg:
|
|
37
|
+
default:
|
|
38
|
+
return AggregationType.Avg;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export default MeasurementAggregationType;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The three ways a measurement endpoint can be located in time.
|
|
3
|
+
*
|
|
4
|
+
* Domain services translate their own anchor-type enum into one of these
|
|
5
|
+
* before handing the definition to MeasurementEvaluator, which is what lets
|
|
6
|
+
* one evaluator serve incidents, alerts and scheduled maintenance events.
|
|
7
|
+
*/
|
|
8
|
+
enum MeasurementAnchorKind {
|
|
9
|
+
// A timestamp column on the entity itself, already resolved by the caller.
|
|
10
|
+
Timestamp = "Timestamp",
|
|
11
|
+
|
|
12
|
+
// The moment a specific state was entered, located by state id.
|
|
13
|
+
StateEntered = "State Entered",
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
* The moment a state carrying a given role was entered -- "whichever state
|
|
17
|
+
* is the acknowledged one". Resolves by flag rather than pinning an id, so
|
|
18
|
+
* it keeps working when a project renames or replaces the state.
|
|
19
|
+
*/
|
|
20
|
+
StateRoleEntered = "State Role Entered",
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default MeasurementAnchorKind;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Which entry to use when a state is entered more than once -- the reopen knob.
|
|
3
|
+
*
|
|
4
|
+
* `First` reproduces the behaviour of the built-in metrics, which resolve a
|
|
5
|
+
* state with `.find()` over a timeline sorted ascending. `Last` is the opt-in
|
|
6
|
+
* selector for teams who want a reopened incident's measurement to move to the
|
|
7
|
+
* final resolution rather than pinning to the first one.
|
|
8
|
+
*/
|
|
9
|
+
enum MeasurementOccurrence {
|
|
10
|
+
First = "First",
|
|
11
|
+
Last = "Last",
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export default MeasurementOccurrence;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The outcome of evaluating a measurement definition against one entity.
|
|
3
|
+
*
|
|
4
|
+
* A measurement is a named duration between two anchors. Every one of these
|
|
5
|
+
* values is a deliberate alternative to writing a number that looks plausible
|
|
6
|
+
* and is wrong -- which is the failure mode this feature exists to remove.
|
|
7
|
+
*/
|
|
8
|
+
enum MeasurementStatus {
|
|
9
|
+
// Both anchors resolved and the duration is meaningful.
|
|
10
|
+
Recorded = "Recorded",
|
|
11
|
+
|
|
12
|
+
/*
|
|
13
|
+
* An anchor has not happened yet but still can. The entity is mid-flight.
|
|
14
|
+
* This is the only status that is expected to change on its own.
|
|
15
|
+
*/
|
|
16
|
+
Pending = "Pending",
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
* An anchor can never resolve for this entity -- the state was skipped, the
|
|
20
|
+
* timestamp was never recorded, or the referenced state has been deleted.
|
|
21
|
+
* No metric point is written, so a skipped milestone does not pull an
|
|
22
|
+
* average towards zero.
|
|
23
|
+
*/
|
|
24
|
+
NotApplicable = "Not Applicable",
|
|
25
|
+
|
|
26
|
+
/*
|
|
27
|
+
* Both anchors resolved but the end precedes the start. This is the "field
|
|
28
|
+
* whose value looks wrong" -- it means someone's recorded timestamps
|
|
29
|
+
* disagree with each other, and it is surfaced rather than clamped to zero.
|
|
30
|
+
*/
|
|
31
|
+
Invalid = "Invalid",
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export default MeasurementStatus;
|
|
@@ -145,6 +145,39 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
145
145
|
return monitorCriteriaInstance;
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
+
if (arg.monitorType === MonitorType.SecurityEvents) {
|
|
149
|
+
const monitorCriteriaInstance: MonitorCriteriaInstance =
|
|
150
|
+
new MonitorCriteriaInstance();
|
|
151
|
+
|
|
152
|
+
/*
|
|
153
|
+
* Inverse of the Logs default on purpose: silence is the healthy
|
|
154
|
+
* state for a security-events monitor. Zero matching events means
|
|
155
|
+
* all clear; matches are what the offline/alerting criteria fires
|
|
156
|
+
* on.
|
|
157
|
+
*/
|
|
158
|
+
monitorCriteriaInstance.data = {
|
|
159
|
+
id: ObjectID.generate().toString(),
|
|
160
|
+
monitorStatusId: arg.monitorStatusId,
|
|
161
|
+
filterCondition: FilterCondition.Any,
|
|
162
|
+
filters: [
|
|
163
|
+
{
|
|
164
|
+
checkOn: CheckOn.SecurityEventCount,
|
|
165
|
+
filterType: FilterType.EqualTo,
|
|
166
|
+
value: 0, // no matching security events - all clear.
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
incidents: [],
|
|
170
|
+
alerts: [],
|
|
171
|
+
changeMonitorStatus: true,
|
|
172
|
+
createIncidents: false,
|
|
173
|
+
createAlerts: false,
|
|
174
|
+
name: `Check if ${arg.monitorName} is clear`,
|
|
175
|
+
description: `This criteria checks that ${arg.monitorName} has no matching security events`,
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
return monitorCriteriaInstance;
|
|
179
|
+
}
|
|
180
|
+
|
|
148
181
|
if (arg.monitorType === MonitorType.Logs) {
|
|
149
182
|
const monitorCriteriaInstance: MonitorCriteriaInstance =
|
|
150
183
|
new MonitorCriteriaInstance();
|
|
@@ -986,6 +1019,37 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
|
|
|
986
1019
|
};
|
|
987
1020
|
}
|
|
988
1021
|
|
|
1022
|
+
if (arg.monitorType === MonitorType.SecurityEvents) {
|
|
1023
|
+
monitorCriteriaInstance.data = {
|
|
1024
|
+
id: ObjectID.generate().toString(),
|
|
1025
|
+
monitorStatusId: arg.monitorStatusId,
|
|
1026
|
+
filterCondition: FilterCondition.Any,
|
|
1027
|
+
filters: [
|
|
1028
|
+
{
|
|
1029
|
+
checkOn: CheckOn.SecurityEventCount,
|
|
1030
|
+
filterType: FilterType.GreaterThan,
|
|
1031
|
+
value: 0, // matching security events were found.
|
|
1032
|
+
},
|
|
1033
|
+
],
|
|
1034
|
+
incidents: [],
|
|
1035
|
+
alerts: [
|
|
1036
|
+
{
|
|
1037
|
+
title: `${arg.monitorName} detected security events`,
|
|
1038
|
+
description: `${arg.monitorName} found matching security events.`,
|
|
1039
|
+
alertSeverityId: arg.alertSeverityId,
|
|
1040
|
+
autoResolveAlert: true,
|
|
1041
|
+
id: ObjectID.generate().toString(),
|
|
1042
|
+
onCallPolicyIds: [],
|
|
1043
|
+
},
|
|
1044
|
+
],
|
|
1045
|
+
createAlerts: true,
|
|
1046
|
+
changeMonitorStatus: true,
|
|
1047
|
+
createIncidents: false,
|
|
1048
|
+
name: `Check if ${arg.monitorName} found security events`,
|
|
1049
|
+
description: `This criteria fires when ${arg.monitorName} finds matching security events`,
|
|
1050
|
+
};
|
|
1051
|
+
}
|
|
1052
|
+
|
|
989
1053
|
if (arg.monitorType === MonitorType.Logs) {
|
|
990
1054
|
monitorCriteriaInstance.data = {
|
|
991
1055
|
id: ObjectID.generate().toString(),
|
|
@@ -13,6 +13,9 @@ import MonitorCriteria from "./MonitorCriteria";
|
|
|
13
13
|
import MonitorStepLogMonitor, {
|
|
14
14
|
MonitorStepLogMonitorUtil,
|
|
15
15
|
} from "./MonitorStepLogMonitor";
|
|
16
|
+
import MonitorStepSecurityEventsMonitor, {
|
|
17
|
+
MonitorStepSecurityEventsMonitorUtil,
|
|
18
|
+
} from "./MonitorStepSecurityEventsMonitor";
|
|
16
19
|
import MonitorType from "./MonitorType";
|
|
17
20
|
import BrowserType from "./SyntheticMonitors//BrowserType";
|
|
18
21
|
import ScreenSizeType from "./SyntheticMonitors/ScreenSizeType";
|
|
@@ -163,6 +166,9 @@ export interface MonitorStepType {
|
|
|
163
166
|
// Log monitor type.
|
|
164
167
|
logMonitor?: MonitorStepLogMonitor | undefined;
|
|
165
168
|
|
|
169
|
+
// Security events monitor type.
|
|
170
|
+
securityEventsMonitor?: MonitorStepSecurityEventsMonitor | undefined;
|
|
171
|
+
|
|
166
172
|
// trace monitor type.
|
|
167
173
|
traceMonitor?: MonitorStepTraceMonitor | undefined;
|
|
168
174
|
|
|
@@ -251,6 +257,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
251
257
|
requestTimeoutInMs: undefined,
|
|
252
258
|
retryCount: undefined,
|
|
253
259
|
logMonitor: undefined,
|
|
260
|
+
securityEventsMonitor: undefined,
|
|
254
261
|
traceMonitor: undefined,
|
|
255
262
|
metricMonitor: undefined,
|
|
256
263
|
exceptionMonitor: undefined,
|
|
@@ -314,6 +321,10 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
314
321
|
arg.monitorType === MonitorType.Logs
|
|
315
322
|
? MonitorStepLogMonitorUtil.getDefault()
|
|
316
323
|
: undefined,
|
|
324
|
+
securityEventsMonitor:
|
|
325
|
+
arg.monitorType === MonitorType.SecurityEvents
|
|
326
|
+
? MonitorStepSecurityEventsMonitorUtil.getDefault()
|
|
327
|
+
: undefined,
|
|
317
328
|
traceMonitor:
|
|
318
329
|
arg.monitorType === MonitorType.Traces
|
|
319
330
|
? MonitorStepTraceMonitorUtil.getDefault()
|
|
@@ -491,6 +502,13 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
491
502
|
return this;
|
|
492
503
|
}
|
|
493
504
|
|
|
505
|
+
public setSecurityEventsMonitor(
|
|
506
|
+
securityEventsMonitor: MonitorStepSecurityEventsMonitor,
|
|
507
|
+
): MonitorStep {
|
|
508
|
+
this.data!.securityEventsMonitor = securityEventsMonitor;
|
|
509
|
+
return this;
|
|
510
|
+
}
|
|
511
|
+
|
|
494
512
|
public setMetricMonitor(
|
|
495
513
|
metricMonitor: MonitorStepMetricMonitor,
|
|
496
514
|
): MonitorStep {
|
|
@@ -643,6 +661,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
643
661
|
requestTimeoutInMs: undefined,
|
|
644
662
|
retryCount: undefined,
|
|
645
663
|
logMonitor: undefined,
|
|
664
|
+
securityEventsMonitor: undefined,
|
|
646
665
|
exceptionMonitor: undefined,
|
|
647
666
|
kubernetesMonitor: undefined,
|
|
648
667
|
dockerMonitor: undefined,
|
|
@@ -935,6 +954,11 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
935
954
|
this.data.logMonitor || MonitorStepLogMonitorUtil.getDefault(),
|
|
936
955
|
)
|
|
937
956
|
: undefined,
|
|
957
|
+
securityEventsMonitor: this.data.securityEventsMonitor
|
|
958
|
+
? MonitorStepSecurityEventsMonitorUtil.toJSON(
|
|
959
|
+
this.data.securityEventsMonitor,
|
|
960
|
+
)
|
|
961
|
+
: undefined,
|
|
938
962
|
metricMonitor: this.data.metricMonitor
|
|
939
963
|
? MonitorStepMetricMonitorUtil.toJSON(this.data.metricMonitor)
|
|
940
964
|
: undefined,
|
|
@@ -1114,6 +1138,9 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
1114
1138
|
logMonitor: json["logMonitor"]
|
|
1115
1139
|
? (json["logMonitor"] as JSONObject)
|
|
1116
1140
|
: undefined,
|
|
1141
|
+
securityEventsMonitor: json["securityEventsMonitor"]
|
|
1142
|
+
? (json["securityEventsMonitor"] as JSONObject)
|
|
1143
|
+
: undefined,
|
|
1117
1144
|
/*
|
|
1118
1145
|
* Normalize rather than pass the raw JSON straight through. Steps saved
|
|
1119
1146
|
* by older builds can carry a metricMonitor with no metricViewConfig,
|
|
@@ -1229,6 +1256,7 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
1229
1256
|
requestTimeoutInMs: Zod.number().optional(),
|
|
1230
1257
|
retryCount: Zod.number().optional(),
|
|
1231
1258
|
logMonitor: Zod.any().optional(),
|
|
1259
|
+
securityEventsMonitor: Zod.any().optional(),
|
|
1232
1260
|
traceMonitor: Zod.any().optional(),
|
|
1233
1261
|
metricMonitor: Zod.any().optional(),
|
|
1234
1262
|
profileMonitor: Zod.any().optional(),
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import SecurityEvent from "../../Models/AnalyticsModels/SecurityEvent";
|
|
2
|
+
import InBetween from "../BaseDatabase/InBetween";
|
|
3
|
+
import Includes from "../BaseDatabase/Includes";
|
|
4
|
+
import Query from "../BaseDatabase/Query";
|
|
5
|
+
import Search from "../BaseDatabase/Search";
|
|
6
|
+
import OneUptimeDate from "../Date";
|
|
7
|
+
import Dictionary from "../Dictionary";
|
|
8
|
+
import { JSONObject } from "../JSON";
|
|
9
|
+
import ObjectID from "../ObjectID";
|
|
10
|
+
import OcsfSeverity from "../SecurityEvent/OcsfSeverity";
|
|
11
|
+
|
|
12
|
+
export default interface MonitorStepSecurityEventsMonitor {
|
|
13
|
+
attributes: Dictionary<string | number | boolean>;
|
|
14
|
+
messageContains: string;
|
|
15
|
+
severityNames: Array<OcsfSeverity>;
|
|
16
|
+
classNames: Array<string>;
|
|
17
|
+
telemetryServiceIds: Array<ObjectID>;
|
|
18
|
+
lastXSecondsOfEvents: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export class MonitorStepSecurityEventsMonitorUtil {
|
|
22
|
+
public static toQuery(
|
|
23
|
+
monitorStep: MonitorStepSecurityEventsMonitor,
|
|
24
|
+
): Query<SecurityEvent> {
|
|
25
|
+
const query: Query<SecurityEvent> = {};
|
|
26
|
+
|
|
27
|
+
if (
|
|
28
|
+
monitorStep.telemetryServiceIds &&
|
|
29
|
+
monitorStep.telemetryServiceIds.length > 0
|
|
30
|
+
) {
|
|
31
|
+
query.primaryEntityId = new Includes(monitorStep.telemetryServiceIds);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (
|
|
35
|
+
monitorStep.attributes &&
|
|
36
|
+
Object.keys(monitorStep.attributes).length > 0
|
|
37
|
+
) {
|
|
38
|
+
query.attributes = monitorStep.attributes;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (monitorStep.severityNames && monitorStep.severityNames.length > 0) {
|
|
42
|
+
query.severityName = new Includes(monitorStep.severityNames);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (monitorStep.classNames && monitorStep.classNames.length > 0) {
|
|
46
|
+
query.className = new Includes(monitorStep.classNames);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (monitorStep.messageContains) {
|
|
50
|
+
query.message = new Search(monitorStep.messageContains);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (monitorStep.lastXSecondsOfEvents) {
|
|
54
|
+
const endDate: Date = OneUptimeDate.getCurrentDate();
|
|
55
|
+
const startDate: Date = OneUptimeDate.addRemoveSeconds(
|
|
56
|
+
endDate,
|
|
57
|
+
monitorStep.lastXSecondsOfEvents * -1,
|
|
58
|
+
);
|
|
59
|
+
query.time = new InBetween(startDate, endDate);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return query;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public static getDefault(): MonitorStepSecurityEventsMonitor {
|
|
66
|
+
return {
|
|
67
|
+
attributes: {},
|
|
68
|
+
messageContains: "",
|
|
69
|
+
severityNames: [],
|
|
70
|
+
classNames: [],
|
|
71
|
+
telemetryServiceIds: [],
|
|
72
|
+
lastXSecondsOfEvents: 60,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
public static fromJSON(json: JSONObject): MonitorStepSecurityEventsMonitor {
|
|
77
|
+
return {
|
|
78
|
+
attributes:
|
|
79
|
+
(json["attributes"] as Dictionary<string | number | boolean>) || {},
|
|
80
|
+
messageContains: (json["messageContains"] as string) || "",
|
|
81
|
+
severityNames: (json["severityNames"] as Array<OcsfSeverity>) || [],
|
|
82
|
+
classNames: (json["classNames"] as Array<string>) || [],
|
|
83
|
+
telemetryServiceIds: ObjectID.fromJSONArray(
|
|
84
|
+
(json["telemetryServiceIds"] as Array<JSONObject>) || [],
|
|
85
|
+
),
|
|
86
|
+
lastXSecondsOfEvents: (json["lastXSecondsOfEvents"] as number) || 60,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public static toJSON(monitor: MonitorStepSecurityEventsMonitor): JSONObject {
|
|
91
|
+
return {
|
|
92
|
+
attributes: monitor.attributes,
|
|
93
|
+
messageContains: monitor.messageContains,
|
|
94
|
+
severityNames: monitor.severityNames,
|
|
95
|
+
classNames: monitor.classNames,
|
|
96
|
+
telemetryServiceIds: ObjectID.toJSONArray(monitor.telemetryServiceIds),
|
|
97
|
+
lastXSecondsOfEvents: monitor.lastXSecondsOfEvents,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -34,6 +34,7 @@ enum MonitorType {
|
|
|
34
34
|
Traces = "Traces",
|
|
35
35
|
Exceptions = "Exceptions",
|
|
36
36
|
Profiles = "Profiles",
|
|
37
|
+
SecurityEvents = "Security Events",
|
|
37
38
|
|
|
38
39
|
/*
|
|
39
40
|
* Network device monitoring (SNMP-based). Replaced the retired SNMP
|
|
@@ -139,6 +140,7 @@ export class MonitorTypeHelper {
|
|
|
139
140
|
MonitorType.Metrics,
|
|
140
141
|
MonitorType.Traces,
|
|
141
142
|
MonitorType.Exceptions,
|
|
143
|
+
MonitorType.SecurityEvents,
|
|
142
144
|
/*
|
|
143
145
|
* MonitorType.Profiles is intentionally not offered here: the
|
|
144
146
|
* dashboard has no configuration form for the profile monitor
|
|
@@ -163,6 +165,7 @@ export class MonitorTypeHelper {
|
|
|
163
165
|
monitorType === MonitorType.Traces ||
|
|
164
166
|
monitorType === MonitorType.Exceptions ||
|
|
165
167
|
monitorType === MonitorType.Profiles ||
|
|
168
|
+
monitorType === MonitorType.SecurityEvents ||
|
|
166
169
|
monitorType === MonitorType.Kubernetes ||
|
|
167
170
|
monitorType === MonitorType.Docker ||
|
|
168
171
|
monitorType === MonitorType.Host ||
|
|
@@ -541,6 +544,22 @@ export class MonitorTypeHelper {
|
|
|
541
544
|
"search logs",
|
|
542
545
|
],
|
|
543
546
|
},
|
|
547
|
+
{
|
|
548
|
+
monitorType: MonitorType.SecurityEvents,
|
|
549
|
+
title: "Security Events",
|
|
550
|
+
description:
|
|
551
|
+
"Alert on SIEM signal volume or matching security events from any source.",
|
|
552
|
+
icon: IconProp.ShieldExclamation,
|
|
553
|
+
keywords: [
|
|
554
|
+
"security",
|
|
555
|
+
"siem",
|
|
556
|
+
"secops",
|
|
557
|
+
"chronicle",
|
|
558
|
+
"ocsf",
|
|
559
|
+
"detection",
|
|
560
|
+
"threat",
|
|
561
|
+
],
|
|
562
|
+
},
|
|
544
563
|
{
|
|
545
564
|
monitorType: MonitorType.Exceptions,
|
|
546
565
|
title: "Exceptions",
|
|
@@ -783,6 +802,7 @@ export class MonitorTypeHelper {
|
|
|
783
802
|
MonitorType.Traces,
|
|
784
803
|
MonitorType.Exceptions,
|
|
785
804
|
MonitorType.Profiles,
|
|
805
|
+
MonitorType.SecurityEvents,
|
|
786
806
|
MonitorType.NetworkDevice,
|
|
787
807
|
MonitorType.DNS,
|
|
788
808
|
MonitorType.DNSSEC,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import SecurityEvent from "../../../Models/AnalyticsModels/SecurityEvent";
|
|
2
|
+
import Query from "../../BaseDatabase/Query";
|
|
3
|
+
import ObjectID from "../../ObjectID";
|
|
4
|
+
import MonitorEvaluationSummary from "../MonitorEvaluationSummary";
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* securityEventCount is the payload discriminator: DataToProcess payloads
|
|
8
|
+
* are matched by marker field (see MonitorCriteriaDataExtractor), so this
|
|
9
|
+
* field name must stay unique across every monitor response type.
|
|
10
|
+
*/
|
|
11
|
+
export default interface SecurityEventsMonitorResponse {
|
|
12
|
+
projectId: ObjectID;
|
|
13
|
+
securityEventCount: number;
|
|
14
|
+
securityEventQuery: Query<SecurityEvent>;
|
|
15
|
+
monitorId: ObjectID;
|
|
16
|
+
evaluationSummary?: MonitorEvaluationSummary | undefined;
|
|
17
|
+
}
|