@oneuptime/common 12.0.23 → 12.0.24
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/DetectionRule.ts +55 -0
- package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +27 -7
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +67 -0
- package/Models/DatabaseModels/Project.ts +68 -0
- package/Models/DatabaseModels/User.ts +68 -0
- package/Server/API/TelemetryAPI.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.ts +28 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.ts +33 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
- package/Server/Middleware/GzipRequestBody.ts +311 -0
- package/Server/Middleware/MultipartFormData.ts +87 -3
- package/Server/Services/DetectionRuleService.ts +73 -6
- package/Server/Services/Index.ts +205 -0
- package/Server/Services/NetworkDeviceDiscoveryScanService.ts +59 -0
- package/Server/Services/NetworkDeviceService.ts +148 -0
- package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +65 -0
- package/Server/Services/OnCallDutyPolicyFeedService.ts +1 -1
- package/Server/Services/ProjectService.ts +29 -19
- package/Server/Services/SecurityEventService.ts +90 -13
- package/Server/Services/StatusPageResourceService.ts +223 -0
- package/Server/Services/TelemetryAttributeService.ts +17 -0
- package/Server/Services/UserService.ts +4 -6
- package/Server/Types/Markdown.ts +161 -67
- package/Server/Utils/AI/Toolbox/OnCallTools.ts +12 -4
- package/Server/Utils/AnalyticsDatabase/Statement.ts +13 -1
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +297 -6
- package/Server/Utils/Attribution.ts +4 -0
- package/Server/Utils/Marketing/MarketingEventUtil.ts +45 -7
- package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +55 -3
- package/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.ts +21 -0
- package/Server/Utils/StartServer.ts +12 -32
- package/Server/Utils/Telemetry/LlmCostBudgetEvaluator.ts +101 -4
- package/Server/Utils/Telemetry/LlmMetricSpend.ts +130 -0
- package/Server/Views/Partials/AnalyticsConsent.ejs +159 -102
- package/Server/Views/Partials/Head.ejs +2 -1
- package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +776 -38
- package/Tests/App/Dashboard/CorrelateFilterBuilder.test.tsx +359 -0
- package/Tests/App/Dashboard/CorrelateGraph.test.tsx +865 -0
- package/Tests/App/Dashboard/CorrelationGraph.test.ts +346 -0
- package/Tests/App/Dashboard/CriteriaFilterConditionDropdown.test.tsx +256 -0
- package/Tests/App/Dashboard/CriteriaFilterDefaults.test.ts +738 -0
- package/Tests/App/Dashboard/CriteriaFilterMonitorTypeChange.test.ts +1122 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +283 -0
- package/Tests/App/Dashboard/ExternalStatusPageCriteriaFilter.test.ts +407 -0
- package/Tests/App/Dashboard/MetricSeriesInvestigateMenu.test.tsx +5 -14
- package/Tests/App/Dashboard/MonitorCriteriaActionToggles.test.tsx +426 -0
- package/Tests/App/Dashboard/MonitorStepsCriteriaAlignmentWiring.test.tsx +352 -0
- package/Tests/App/Dashboard/OnCallLayerCardOverrides.test.tsx +278 -0
- package/Tests/App/Dashboard/OnCallLayerShiftPreviewOverrides.test.ts +237 -0
- package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +2 -2
- package/Tests/App/Dashboard/OnCallSchedulePreviewOverrides.test.tsx +460 -0
- package/Tests/App/Dashboard/SecurityEventAttributeUtil.test.ts +171 -0
- package/Tests/App/Dashboard/SecurityEventCorrelation.test.ts +857 -0
- package/Tests/App/Dashboard/SecurityEventDetailObservables.test.tsx +194 -0
- package/Tests/App/Dashboard/SecurityEventsDetectionRulesPage.test.tsx +124 -0
- package/Tests/App/Dashboard/SecurityEventsMonitorStepForm.test.tsx +79 -19
- package/Tests/App/Dashboard/SecurityEventsTableColumns.test.tsx +382 -0
- package/Tests/App/StatusPage/BulkAddStatusPageMonitors.test.ts +216 -0
- package/Tests/App/StatusPage/BulkAddStatusPageMonitorsModal.test.tsx +590 -11
- package/Tests/App/StatusPage/StatusPageResourceExplorer.test.tsx +757 -0
- package/Tests/Models/DiscoveryScanNameColumn.test.ts +293 -0
- package/Tests/Server/API/SecurityEventAttributesAPI.test.ts +564 -0
- package/Tests/Server/Infrastructure/Postgres/SchemaMigrationsOrdering.test.ts +120 -4
- package/Tests/Server/Middleware/GzipRequestBody.test.ts +725 -0
- package/Tests/Server/Middleware/MultipartFormData.test.ts +298 -0
- package/Tests/Server/Services/AddDetectionRuleDistinctCountColumnsMigration.test.ts +311 -0
- package/Tests/Server/Services/DetectionRuleService.test.ts +134 -2
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +7 -1
- package/Tests/Server/Services/FeedRetentionConsistency.test.ts +131 -0
- package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +194 -0
- package/Tests/Server/Services/NetworkDeviceMonitorStatusStamp.test.ts +800 -0
- package/Tests/Server/Services/OnCallScheduleAttachRosterRefresh.test.ts +244 -0
- package/Tests/Server/Services/SecurityEventService.test.ts +376 -0
- package/Tests/Server/Services/StatusPageResourceDuplicates.test.ts +703 -0
- package/Tests/Server/Services/TelemetryAttributeServiceSecurityEvent.test.ts +256 -0
- package/Tests/Server/Types/Workflow/Components/ComponentRegistryParity.test.ts +417 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGeneratorWhereOperators.test.ts +677 -0
- package/Tests/Server/Utils/Marketing/MarketingEventUtil.test.ts +43 -0
- package/Tests/Server/Utils/Monitor/Criteria/ProfileMonitorCriteria.test.ts +15 -11
- package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +369 -8
- package/Tests/Server/Utils/SecurityEvent/SigmaClickhouseCompiler.test.ts +35 -0
- package/Tests/Server/Utils/Telemetry/LlmCostBudgetEvaluator.test.ts +368 -4
- package/Tests/Server/Utils/Telemetry/LlmMetricSpend.test.ts +245 -0
- package/Tests/Server/Views/AnalyticsConsentPartial.test.ts +48 -5
- package/Tests/Types/Code/YamlSyntax.test.ts +396 -0
- package/Tests/Types/Monitor/MetricAndProfileDefaultCriteria.test.ts +957 -0
- package/Tests/Types/Monitor/MonitorCriteriaActionValidation.test.ts +598 -0
- package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +49 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +6 -6
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.test.ts +4 -4
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationUtil.test.ts +4 -3
- package/Tests/Types/Telemetry/LlmMetricConventions.test.ts +193 -0
- package/Tests/UI/Components/AiInvestigationSettingsCard.test.tsx +0 -12
- package/Tests/UI/Components/CardModelDetailEdit.test.tsx +1 -17
- package/Tests/UI/Components/CodeEditor.test.tsx +474 -10
- package/Tests/UI/Components/Detail/YamlField.test.tsx +105 -0
- package/Tests/UI/Components/EntityDropdownLabelsBulkAdd.test.tsx +319 -0
- package/Tests/UI/Components/Forms/FormFieldYaml.test.tsx +231 -0
- package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +1 -0
- package/Tests/UI/Components/Forms/ValidationYAML.test.ts +234 -0
- package/Tests/UI/Components/ModelTable/AttributeColumns.test.tsx +573 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableAttributeColumns.test.tsx +824 -0
- package/Tests/UI/Components/ModelTable/ColumnCustomizationModalAddableColumns.test.tsx +707 -0
- package/Tests/UI/Components/SideOver.test.tsx +1 -1
- package/Tests/UI/Components/StatusPage/ResourceGridSelection.test.tsx +294 -0
- package/Tests/UI/Components/StatusPage/ResourceListSelection.test.tsx +436 -0
- package/Tests/UI/Components/TableBulkCsvExport.test.tsx +6 -2
- package/Tests/UI/Components/Toggle.test.tsx +25 -0
- package/Tests/UI/Components/YamlEditor.test.tsx +847 -0
- package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +252 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +221 -0
- package/Tests/Utils/NetworkDiscovery/ScanNameUtil.test.ts +312 -0
- package/Tests/Utils/StatusPage/ResourceExplorer.test.ts +468 -0
- package/Tests/Utils/Telemetry/LlmMetricQuery.test.ts +472 -0
- package/Types/Code/YamlSyntax.ts +396 -0
- package/Types/Exception/ExceptionCode.ts +1 -0
- package/Types/Exception/PayloadTooLargeException.ts +8 -0
- package/Types/Marketing/Attribution.ts +10 -0
- package/Types/Marketing/MarketingEvent.ts +4 -0
- package/Types/Monitor/MonitorCriteriaInstance.ts +116 -56
- package/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.ts +2 -1
- package/Types/SecurityEvent/DetectionFindingConstants.ts +11 -0
- package/Types/Telemetry/LlmMetricConventions.ts +124 -0
- package/UI/Components/AutocompleteTextInput/AutocompleteTextInput.tsx +3 -0
- package/UI/Components/BulkUpdate/BulkUpdateForm.tsx +10 -1
- package/UI/Components/CodeEditor/CodeEditor.tsx +241 -79
- package/UI/Components/CodeEditor/YamlEditor.tsx +369 -0
- package/UI/Components/Detail/Detail.tsx +10 -0
- package/UI/Components/EntityDropdown/EntityDropdown.tsx +33 -0
- package/UI/Components/Forms/Fields/FormField.tsx +31 -0
- package/UI/Components/Forms/Types/Field.ts +8 -0
- package/UI/Components/Forms/Types/FormFieldSchemaType.ts +1 -0
- package/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.ts +2 -0
- package/UI/Components/Forms/Validation.ts +46 -0
- package/UI/Components/Input/Input.tsx +3 -0
- package/UI/Components/ModelTable/AttributeColumns.tsx +321 -0
- package/UI/Components/ModelTable/BaseModelTable.tsx +263 -14
- package/UI/Components/ModelTable/Column.ts +8 -0
- package/UI/Components/ModelTable/ColumnCustomizationModal.tsx +310 -0
- package/UI/Components/ModelTable/ColumnPreference.ts +13 -1
- package/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.tsx +2 -2
- package/UI/Components/SideOver/SideOver.tsx +5 -5
- package/UI/Components/StatusPage/ResourceGrid.tsx +82 -2
- package/UI/Components/StatusPage/ResourceList.tsx +197 -38
- package/UI/Components/Toggle/Toggle.tsx +9 -1
- package/UI/Components/Types/FieldType.ts +1 -0
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +73 -1
- package/Utils/NetworkDiscovery/ScanNameUtil.ts +181 -0
- package/Utils/StatusPage/ResourceExplorer.ts +258 -0
- package/Utils/Telemetry/LlmMetricQuery.ts +204 -0
- package/build/dist/Models/DatabaseModels/DetectionRule.js +57 -0
- package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +27 -7
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +69 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +76 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/User.js +76 -0
- package/build/dist/Models/DatabaseModels/User.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +17 -0
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.js +21 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789400000000-AddNameToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.js +42 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789500000000-AddCampaignUtmFields.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789512000000-AddDetectionRuleDistinctCountColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/GzipRequestBody.js +224 -0
- package/build/dist/Server/Middleware/GzipRequestBody.js.map +1 -0
- package/build/dist/Server/Middleware/MultipartFormData.js +71 -2
- package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
- package/build/dist/Server/Services/DetectionRuleService.js +49 -4
- package/build/dist/Server/Services/DetectionRuleService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +204 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +50 -0
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +124 -0
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +68 -13
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyFeedService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +25 -45
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/SecurityEventService.js +57 -5
- package/build/dist/Server/Services/SecurityEventService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageResourceService.js +140 -0
- package/build/dist/Server/Services/StatusPageResourceService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js +17 -0
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +2 -12
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Markdown.js +147 -61
- package/build/dist/Server/Types/Markdown.js.map +1 -1
- package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js +12 -4
- package/build/dist/Server/Utils/AI/Toolbox/OnCallTools.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +12 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +246 -9
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Attribution.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +27 -7
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +42 -7
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js +18 -0
- package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +12 -21
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LlmCostBudgetEvaluator.js +76 -5
- package/build/dist/Server/Utils/Telemetry/LlmCostBudgetEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LlmMetricSpend.js +102 -0
- package/build/dist/Server/Utils/Telemetry/LlmMetricSpend.js.map +1 -0
- package/build/dist/Types/Code/YamlSyntax.js +212 -0
- package/build/dist/Types/Code/YamlSyntax.js.map +1 -0
- package/build/dist/Types/Exception/ExceptionCode.js +1 -0
- package/build/dist/Types/Exception/ExceptionCode.js.map +1 -1
- package/build/dist/Types/Exception/PayloadTooLargeException.js +8 -0
- package/build/dist/Types/Exception/PayloadTooLargeException.js.map +1 -0
- package/build/dist/Types/Marketing/Attribution.js +10 -0
- package/build/dist/Types/Marketing/Attribution.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +112 -51
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js +2 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationSeverityMapper.js.map +1 -1
- package/build/dist/Types/SecurityEvent/DetectionFindingConstants.js +9 -0
- package/build/dist/Types/SecurityEvent/DetectionFindingConstants.js.map +1 -1
- package/build/dist/Types/Telemetry/LlmMetricConventions.js +98 -0
- package/build/dist/Types/Telemetry/LlmMetricConventions.js.map +1 -0
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js +1 -1
- package/build/dist/UI/Components/AutocompleteTextInput/AutocompleteTextInput.js.map +1 -1
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js +5 -2
- package/build/dist/UI/Components/BulkUpdate/BulkUpdateForm.js.map +1 -1
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js +206 -76
- package/build/dist/UI/Components/CodeEditor/CodeEditor.js.map +1 -1
- package/build/dist/UI/Components/CodeEditor/YamlEditor.js +201 -0
- package/build/dist/UI/Components/CodeEditor/YamlEditor.js.map +1 -0
- package/build/dist/UI/Components/Detail/Detail.js +9 -0
- package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
- package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js +16 -1
- package/build/dist/UI/Components/EntityDropdown/EntityDropdown.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +14 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Forms/Types/Field.js.map +1 -1
- package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js +1 -0
- package/build/dist/UI/Components/Forms/Types/FormFieldSchemaType.js.map +1 -1
- package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js +2 -0
- package/build/dist/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.js.map +1 -1
- package/build/dist/UI/Components/Forms/Validation.js +27 -0
- package/build/dist/UI/Components/Forms/Validation.js.map +1 -1
- package/build/dist/UI/Components/Input/Input.js +1 -1
- package/build/dist/UI/Components/Input/Input.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/AttributeColumns.js +159 -0
- package/build/dist/UI/Components/ModelTable/AttributeColumns.js.map +1 -0
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +179 -17
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js +133 -2
- package/build/dist/UI/Components/ModelTable/ColumnCustomizationModal.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/ColumnPreference.js +7 -1
- package/build/dist/UI/Components/ModelTable/ColumnPreference.js.map +1 -1
- package/build/dist/UI/Components/MonitorTemplateVariables/TemplateVariablesModal.js +2 -2
- package/build/dist/UI/Components/SideOver/SideOver.js +5 -5
- package/build/dist/UI/Components/StatusPage/ResourceGrid.js +28 -2
- package/build/dist/UI/Components/StatusPage/ResourceGrid.js.map +1 -1
- package/build/dist/UI/Components/StatusPage/ResourceList.js +87 -20
- package/build/dist/UI/Components/StatusPage/ResourceList.js.map +1 -1
- package/build/dist/UI/Components/Toggle/Toggle.js +9 -1
- package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
- package/build/dist/UI/Components/Types/FieldType.js +1 -0
- package/build/dist/UI/Components/Types/FieldType.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +37 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/ScanNameUtil.js +120 -0
- package/build/dist/Utils/NetworkDiscovery/ScanNameUtil.js.map +1 -0
- package/build/dist/Utils/StatusPage/ResourceExplorer.js +171 -0
- package/build/dist/Utils/StatusPage/ResourceExplorer.js.map +1 -1
- package/build/dist/Utils/Telemetry/LlmMetricQuery.js +119 -0
- package/build/dist/Utils/Telemetry/LlmMetricQuery.js.map +1 -0
- package/jest.config.json +2 -0
- package/package.json +1 -1
- package/tsconfig.json +2 -1
- package/Tests/UI/Components/Toast.test.tsx +0 -197
- package/Tests/UI/Components/ToastStacking.test.tsx +0 -198
- package/UI/Components/Toast/Toast.tsx +0 -189
- package/UI/Components/Toast/ToastInit.tsx +0 -110
- package/build/dist/UI/Components/Toast/Toast.js +0 -123
- package/build/dist/UI/Components/Toast/Toast.js.map +0 -1
- package/build/dist/UI/Components/Toast/ToastInit.js +0 -53
- package/build/dist/UI/Components/Toast/ToastInit.js.map +0 -1
|
@@ -154,6 +154,25 @@ export interface StatusPageResourceGridModel {
|
|
|
154
154
|
orphanResources: Array<StatusPageResource>;
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
+
/*
|
|
158
|
+
* How a group's checkbox column stands at the moment: whether the box at the
|
|
159
|
+
* top of the list should be ticked, half ticked, or empty.
|
|
160
|
+
*
|
|
161
|
+
* Computed over whichever resources the list is actually drawing - a filtered
|
|
162
|
+
* list's "select all" means "everything the search matched", not "everything in
|
|
163
|
+
* the group", because those are the only rows the operator can see.
|
|
164
|
+
*/
|
|
165
|
+
export interface StatusPageResourceSelectionState {
|
|
166
|
+
/* Every resource on offer is selected, and there is at least one. */
|
|
167
|
+
isAllSelected: boolean;
|
|
168
|
+
/* Some but not all - the half-filled box. */
|
|
169
|
+
isIndeterminate: boolean;
|
|
170
|
+
/* How many of the resources on offer are selected. */
|
|
171
|
+
selectedCount: number;
|
|
172
|
+
/* How many resources were on offer at all. */
|
|
173
|
+
selectableCount: number;
|
|
174
|
+
}
|
|
175
|
+
|
|
157
176
|
export default class StatusPageResourceExplorerUtil {
|
|
158
177
|
/*
|
|
159
178
|
* How many navigator rows are drawn before the list stops and offers to draw
|
|
@@ -622,6 +641,245 @@ export default class StatusPageResourceExplorerUtil {
|
|
|
622
641
|
);
|
|
623
642
|
}
|
|
624
643
|
|
|
644
|
+
/* ------------------------------------------------------------------ */
|
|
645
|
+
/* Selecting resources */
|
|
646
|
+
/* ------------------------------------------------------------------ */
|
|
647
|
+
|
|
648
|
+
/*
|
|
649
|
+
* Removing monitors from a status page used to be a row at a time: open the
|
|
650
|
+
* row's menu, confirm, wait for the refetch, and do it again for the next of
|
|
651
|
+
* twenty seven (issue #3419). The list carries a checkbox column instead, and
|
|
652
|
+
* everything below is the model behind it.
|
|
653
|
+
*
|
|
654
|
+
* A selection is a set of id STRINGS rather than of resources. Resources are
|
|
655
|
+
* re-fetched constantly here - every create, delete, reorder and refresh
|
|
656
|
+
* replaces the whole array - so holding the objects would mean holding rows
|
|
657
|
+
* that no longer exist, compared by identity against their own replacements.
|
|
658
|
+
*/
|
|
659
|
+
|
|
660
|
+
/*
|
|
661
|
+
* A resource's id as a selection holds it.
|
|
662
|
+
*
|
|
663
|
+
* Null when there is nothing to hold on to. The server never returns such a
|
|
664
|
+
* row, but a list drawn from local state briefly can, and a set containing
|
|
665
|
+
* `""` would silently make every id-less row the same row.
|
|
666
|
+
*/
|
|
667
|
+
public static getResourceId(
|
|
668
|
+
statusPageResource: StatusPageResource,
|
|
669
|
+
): string | null {
|
|
670
|
+
const id: string = statusPageResource._id?.toString() || "";
|
|
671
|
+
|
|
672
|
+
return id.length > 0 ? id : null;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/*
|
|
676
|
+
* The ids of everything in the list that can be selected at all, in the order
|
|
677
|
+
* the list draws them and without repeats.
|
|
678
|
+
*/
|
|
679
|
+
public static getResourceIds(
|
|
680
|
+
statusPageResources: Array<StatusPageResource>,
|
|
681
|
+
): Array<string> {
|
|
682
|
+
const ids: Array<string> = [];
|
|
683
|
+
const seen: Set<string> = new Set<string>();
|
|
684
|
+
|
|
685
|
+
for (const statusPageResource of statusPageResources) {
|
|
686
|
+
const id: string | null =
|
|
687
|
+
StatusPageResourceExplorerUtil.getResourceId(statusPageResource);
|
|
688
|
+
|
|
689
|
+
if (!id || seen.has(id)) {
|
|
690
|
+
continue;
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
seen.add(id);
|
|
694
|
+
ids.push(id);
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
return ids;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
/*
|
|
701
|
+
* One row's box, ticked or unticked. Always a new set, because it always
|
|
702
|
+
* changes something.
|
|
703
|
+
*/
|
|
704
|
+
public static toggleSelectedResourceId(data: {
|
|
705
|
+
selectedResourceIds: Set<string>;
|
|
706
|
+
resourceId: string;
|
|
707
|
+
}): Set<string> {
|
|
708
|
+
const next: Set<string> = new Set<string>(data.selectedResourceIds);
|
|
709
|
+
|
|
710
|
+
if (next.has(data.resourceId)) {
|
|
711
|
+
next.delete(data.resourceId);
|
|
712
|
+
} else {
|
|
713
|
+
next.add(data.resourceId);
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
return next;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
/*
|
|
720
|
+
* The box at the top of the list: every resource handed in is selected, or
|
|
721
|
+
* none of them is.
|
|
722
|
+
*
|
|
723
|
+
* Only the resources handed in are touched. A search is on while this is
|
|
724
|
+
* pressed as often as not, and un-ticking "select all" over four matching
|
|
725
|
+
* rows must not quietly drop the twenty the operator selected before they
|
|
726
|
+
* started typing.
|
|
727
|
+
*
|
|
728
|
+
* Returns the set it was given when nothing would change, so a component
|
|
729
|
+
* holding it in state does not re-render itself for a no-op.
|
|
730
|
+
*/
|
|
731
|
+
public static setResourcesSelected(data: {
|
|
732
|
+
selectedResourceIds: Set<string>;
|
|
733
|
+
statusPageResources: Array<StatusPageResource>;
|
|
734
|
+
isSelected: boolean;
|
|
735
|
+
}): Set<string> {
|
|
736
|
+
const ids: Array<string> = StatusPageResourceExplorerUtil.getResourceIds(
|
|
737
|
+
data.statusPageResources,
|
|
738
|
+
);
|
|
739
|
+
|
|
740
|
+
const next: Set<string> = new Set<string>(data.selectedResourceIds);
|
|
741
|
+
|
|
742
|
+
let hasChanged: boolean = false;
|
|
743
|
+
|
|
744
|
+
for (const id of ids) {
|
|
745
|
+
if (data.isSelected) {
|
|
746
|
+
if (!next.has(id)) {
|
|
747
|
+
next.add(id);
|
|
748
|
+
hasChanged = true;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
continue;
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
if (next.delete(id)) {
|
|
755
|
+
hasChanged = true;
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
return hasChanged ? next : data.selectedResourceIds;
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
/*
|
|
763
|
+
* What the box at the top of the list should look like, over whichever
|
|
764
|
+
* resources are being drawn.
|
|
765
|
+
*
|
|
766
|
+
* An empty list is never "all selected": a ticked box over nothing to tick
|
|
767
|
+
* reads as a selection that was lost.
|
|
768
|
+
*/
|
|
769
|
+
public static getSelectionState(data: {
|
|
770
|
+
statusPageResources: Array<StatusPageResource>;
|
|
771
|
+
selectedResourceIds: Set<string>;
|
|
772
|
+
}): StatusPageResourceSelectionState {
|
|
773
|
+
const ids: Array<string> = StatusPageResourceExplorerUtil.getResourceIds(
|
|
774
|
+
data.statusPageResources,
|
|
775
|
+
);
|
|
776
|
+
|
|
777
|
+
let selectedCount: number = 0;
|
|
778
|
+
|
|
779
|
+
for (const id of ids) {
|
|
780
|
+
if (data.selectedResourceIds.has(id)) {
|
|
781
|
+
selectedCount++;
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
const isAllSelected: boolean =
|
|
786
|
+
ids.length > 0 && selectedCount === ids.length;
|
|
787
|
+
|
|
788
|
+
return {
|
|
789
|
+
isAllSelected: isAllSelected,
|
|
790
|
+
isIndeterminate: selectedCount > 0 && !isAllSelected,
|
|
791
|
+
selectedCount: selectedCount,
|
|
792
|
+
selectableCount: ids.length,
|
|
793
|
+
};
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
/*
|
|
797
|
+
* The selected resources themselves, in the order the list holds them, so a
|
|
798
|
+
* bulk action reports its progress in the order the operator is looking at.
|
|
799
|
+
*
|
|
800
|
+
* Ids in the selection that match nothing in the list are dropped rather than
|
|
801
|
+
* guessed at - see retainSelectedResourceIds for where they come from.
|
|
802
|
+
*/
|
|
803
|
+
public static getSelectedResources(data: {
|
|
804
|
+
statusPageResources: Array<StatusPageResource>;
|
|
805
|
+
selectedResourceIds: Set<string>;
|
|
806
|
+
}): Array<StatusPageResource> {
|
|
807
|
+
const seen: Set<string> = new Set<string>();
|
|
808
|
+
|
|
809
|
+
return data.statusPageResources.filter(
|
|
810
|
+
(statusPageResource: StatusPageResource): boolean => {
|
|
811
|
+
const id: string | null =
|
|
812
|
+
StatusPageResourceExplorerUtil.getResourceId(statusPageResource);
|
|
813
|
+
|
|
814
|
+
if (!id || seen.has(id) || !data.selectedResourceIds.has(id)) {
|
|
815
|
+
return false;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
seen.add(id);
|
|
819
|
+
|
|
820
|
+
return true;
|
|
821
|
+
},
|
|
822
|
+
);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
/*
|
|
826
|
+
* The selection, minus anything the list no longer holds.
|
|
827
|
+
*
|
|
828
|
+
* Every write on this pane ends in a refetch, and a resource that was removed
|
|
829
|
+
* - by this operator's own bulk action, or by somebody else's - must not stay
|
|
830
|
+
* in the selection: the bulk bar would go on counting it, and the next action
|
|
831
|
+
* would try to delete a row that is already gone.
|
|
832
|
+
*
|
|
833
|
+
* Returns the set it was given when nothing was dropped, for the same reason
|
|
834
|
+
* setResourcesSelected does.
|
|
835
|
+
*/
|
|
836
|
+
public static retainSelectedResourceIds(data: {
|
|
837
|
+
selectedResourceIds: Set<string>;
|
|
838
|
+
statusPageResources: Array<StatusPageResource>;
|
|
839
|
+
}): Set<string> {
|
|
840
|
+
if (data.selectedResourceIds.size === 0) {
|
|
841
|
+
return data.selectedResourceIds;
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
const present: Set<string> = new Set<string>(
|
|
845
|
+
StatusPageResourceExplorerUtil.getResourceIds(data.statusPageResources),
|
|
846
|
+
);
|
|
847
|
+
|
|
848
|
+
const next: Set<string> = new Set<string>();
|
|
849
|
+
|
|
850
|
+
for (const id of data.selectedResourceIds) {
|
|
851
|
+
if (present.has(id)) {
|
|
852
|
+
next.add(id);
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
|
|
856
|
+
return next.size === data.selectedResourceIds.size
|
|
857
|
+
? data.selectedResourceIds
|
|
858
|
+
: next;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
/*
|
|
862
|
+
* What the confirmation for a bulk removal is called, and what it says.
|
|
863
|
+
*
|
|
864
|
+
* It says the monitors survive, for the same reason the single-row confirm
|
|
865
|
+
* does: "remove" on a status page means "stop publishing this", and an
|
|
866
|
+
* operator clearing twenty seven rows deserves to be told that once, loudly,
|
|
867
|
+
* rather than to wonder afterwards.
|
|
868
|
+
*/
|
|
869
|
+
public static getBulkRemoveConfirmTitle(data: { count: number }): string {
|
|
870
|
+
return `Remove ${data.count.toLocaleString()} ${
|
|
871
|
+
data.count === 1 ? "resource" : "resources"
|
|
872
|
+
}`;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
public static getBulkRemoveConfirmMessage(data: { count: number }): string {
|
|
876
|
+
if (data.count === 1) {
|
|
877
|
+
return "Are you sure you want to remove 1 resource from this status page? The monitor itself is not deleted.";
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
return `Are you sure you want to remove ${data.count.toLocaleString()} resources from this status page? The monitors themselves are not deleted.`;
|
|
881
|
+
}
|
|
882
|
+
|
|
625
883
|
/*
|
|
626
884
|
* The `order` to write when a resource is dragged from one position to
|
|
627
885
|
* another.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import Metric from "../../Models/AnalyticsModels/Metric";
|
|
2
|
+
import AggregatedModel from "../../Types/BaseDatabase/AggregatedModel";
|
|
3
|
+
import InBetween from "../../Types/BaseDatabase/InBetween";
|
|
4
|
+
import Includes from "../../Types/BaseDatabase/Includes";
|
|
5
|
+
import Query from "../../Types/BaseDatabase/Query";
|
|
6
|
+
import { JSONObject } from "../../Types/JSON";
|
|
7
|
+
import ObjectID from "../../Types/ObjectID";
|
|
8
|
+
import {
|
|
9
|
+
LlmRequestModelAttributeKeys,
|
|
10
|
+
LlmSystemAttributeKeys,
|
|
11
|
+
} from "../../Types/Telemetry/LlmConventions";
|
|
12
|
+
import {
|
|
13
|
+
LlmCostMetricNames,
|
|
14
|
+
LlmTokenDirection,
|
|
15
|
+
LlmTokenTypeAttributeKeys,
|
|
16
|
+
LlmTokenUsageMetricNames,
|
|
17
|
+
getLlmTokenDirection,
|
|
18
|
+
} from "../../Types/Telemetry/LlmMetricConventions";
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* Pure query construction and result folding for metric-sourced LLM token and
|
|
22
|
+
* cost totals. Isomorphic on purpose: the budget evaluator runs these on the
|
|
23
|
+
* server with root props, and the AI / LLM overview runs the same queries in
|
|
24
|
+
* the browser under the signed-in user's permissions. Keeping the shapes here
|
|
25
|
+
* means the two cannot drift into disagreeing about what "LLM cost" means.
|
|
26
|
+
*
|
|
27
|
+
* The server wrapper (Common/Server/Utils/Telemetry/LlmMetricSpend.ts) adds
|
|
28
|
+
* the AggregateBy envelope and executes them.
|
|
29
|
+
*
|
|
30
|
+
* Scoping caveat, deliberate: provider/model narrowing matches the PRIMARY
|
|
31
|
+
* semantic-convention attribute key only (gen_ai.system, gen_ai.request.model).
|
|
32
|
+
* The span extractor accepts several fallback spellings per field, but a
|
|
33
|
+
* ClickHouse map filter can only test one key at a time, and issuing one query
|
|
34
|
+
* per candidate key and summing would double-count any datapoint carrying two
|
|
35
|
+
* of them. Matching the semconv key alone can only ever UNDER-count a scoped
|
|
36
|
+
* query, never over-count it. Unscoped project-wide queries — the common case,
|
|
37
|
+
* and the one a metrics-only emitter usually needs — apply no attribute filter
|
|
38
|
+
* and see every datapoint.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
export interface LlmMetricScope {
|
|
42
|
+
projectId: ObjectID;
|
|
43
|
+
startTime: Date;
|
|
44
|
+
endTime: Date;
|
|
45
|
+
// Telemetry service to narrow to, matching Span.primaryEntityId scoping.
|
|
46
|
+
serviceId?: ObjectID | undefined;
|
|
47
|
+
// gen_ai.system value, e.g. "openai".
|
|
48
|
+
llmSystem?: string | undefined;
|
|
49
|
+
// gen_ai.request.model value.
|
|
50
|
+
llmModel?: string | undefined;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export interface LlmMetricTokenTotals {
|
|
54
|
+
inputTokens: number;
|
|
55
|
+
outputTokens: number;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* Both convention lists are ordered preferred-first, so element zero is the
|
|
60
|
+
* semantic-convention key.
|
|
61
|
+
*/
|
|
62
|
+
export const METRIC_SYSTEM_ATTRIBUTE_KEY: string = LlmSystemAttributeKeys[0]!;
|
|
63
|
+
export const METRIC_MODEL_ATTRIBUTE_KEY: string =
|
|
64
|
+
LlmRequestModelAttributeKeys[0]!;
|
|
65
|
+
|
|
66
|
+
export default class LlmMetricQuery {
|
|
67
|
+
/**
|
|
68
|
+
* Shared filter for both the cost and token queries: the project, the
|
|
69
|
+
* window, the candidate metric names, and the caller's optional scoping.
|
|
70
|
+
*
|
|
71
|
+
* The `time` predicate has to live in the query itself. AggregateBy's
|
|
72
|
+
* startTimestamp/endTimestamp only choose the bucket grid — without this the
|
|
73
|
+
* aggregate scans the metric's whole retention (the same trap the span query
|
|
74
|
+
* documents).
|
|
75
|
+
*/
|
|
76
|
+
public static buildBaseQuery(data: {
|
|
77
|
+
scope: LlmMetricScope;
|
|
78
|
+
metricNames: Array<string>;
|
|
79
|
+
}): Query<Metric> {
|
|
80
|
+
const query: Record<string, unknown> = {
|
|
81
|
+
projectId: data.scope.projectId,
|
|
82
|
+
name: new Includes(data.metricNames),
|
|
83
|
+
time: new InBetween(data.scope.startTime, data.scope.endTime),
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
if (data.scope.serviceId) {
|
|
87
|
+
query["primaryEntityId"] = data.scope.serviceId;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const attributes: Record<string, string> = {};
|
|
91
|
+
|
|
92
|
+
if (data.scope.llmSystem) {
|
|
93
|
+
attributes[METRIC_SYSTEM_ATTRIBUTE_KEY] = data.scope.llmSystem;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (data.scope.llmModel) {
|
|
97
|
+
attributes[METRIC_MODEL_ATTRIBUTE_KEY] = data.scope.llmModel;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (Object.keys(attributes).length > 0) {
|
|
101
|
+
query["attributes"] = attributes;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return query as Query<Metric>;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
public static buildCostQuery(scope: LlmMetricScope): Query<Metric> {
|
|
108
|
+
return this.buildBaseQuery({
|
|
109
|
+
scope: scope,
|
|
110
|
+
metricNames: LlmCostMetricNames,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
public static buildTokenQuery(scope: LlmMetricScope): Query<Metric> {
|
|
115
|
+
return this.buildBaseQuery({
|
|
116
|
+
scope: scope,
|
|
117
|
+
metricNames: LlmTokenUsageMetricNames,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Sum an aggregate result's buckets. Non-numeric, missing, NaN and infinite
|
|
123
|
+
* values contribute nothing rather than poisoning the total — these figures
|
|
124
|
+
* feed monitors, and one bad row must not turn a budget's spend into NaN.
|
|
125
|
+
*/
|
|
126
|
+
public static sumAggregatedRows(
|
|
127
|
+
rows: Array<AggregatedModel> | undefined | null,
|
|
128
|
+
): number {
|
|
129
|
+
if (!rows || !Array.isArray(rows)) {
|
|
130
|
+
return 0;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return rows.reduce((acc: number, row: AggregatedModel): number => {
|
|
134
|
+
const value: number = Number(row?.value ?? 0);
|
|
135
|
+
|
|
136
|
+
if (!isFinite(value)) {
|
|
137
|
+
return acc;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return acc + value;
|
|
141
|
+
}, 0);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Fold grouped token rows into input/output totals.
|
|
146
|
+
*
|
|
147
|
+
* A row is counted once, against the first recognized token-type attribute
|
|
148
|
+
* it carries (the keys are ordered preferred-first). Rows whose token type
|
|
149
|
+
* is absent, unrecognized, or one of the kinds we deliberately exclude
|
|
150
|
+
* (cache_read / cache_creation) are dropped rather than guessed at.
|
|
151
|
+
*/
|
|
152
|
+
public static reduceTokenRows(
|
|
153
|
+
rows: Array<AggregatedModel> | undefined | null,
|
|
154
|
+
): LlmMetricTokenTotals {
|
|
155
|
+
const totals: LlmMetricTokenTotals = {
|
|
156
|
+
inputTokens: 0,
|
|
157
|
+
outputTokens: 0,
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
if (!rows || !Array.isArray(rows)) {
|
|
161
|
+
return totals;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
for (const row of rows) {
|
|
165
|
+
if (!row) {
|
|
166
|
+
continue;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const attributes: JSONObject =
|
|
170
|
+
(row["attributes"] as JSONObject | undefined) || {};
|
|
171
|
+
|
|
172
|
+
let direction: LlmTokenDirection | null = null;
|
|
173
|
+
|
|
174
|
+
for (const key of LlmTokenTypeAttributeKeys) {
|
|
175
|
+
const candidate: LlmTokenDirection | null = getLlmTokenDirection(
|
|
176
|
+
attributes[key] as string | undefined,
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
if (candidate) {
|
|
180
|
+
direction = candidate;
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (!direction) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const value: number = Number(row.value ?? 0);
|
|
190
|
+
|
|
191
|
+
if (!isFinite(value)) {
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (direction === "input") {
|
|
196
|
+
totals.inputTokens += value;
|
|
197
|
+
} else {
|
|
198
|
+
totals.outputTokens += value;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return totals;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
@@ -68,6 +68,16 @@ let DetectionRule = class DetectionRule extends BaseModel {
|
|
|
68
68
|
this.isEnabled = undefined;
|
|
69
69
|
this.evaluationIntervalInMinutes = undefined;
|
|
70
70
|
this.groupByField = undefined;
|
|
71
|
+
/*
|
|
72
|
+
* The correlation pair: distinctCountField switches what the threshold
|
|
73
|
+
* counts (unique field values instead of raw events — the difference
|
|
74
|
+
* between brute-force and one user retyping a password), and
|
|
75
|
+
* matchCountThreshold holds the rule back until a group reaches N in
|
|
76
|
+
* one evaluation window. Threshold 1 preserves fire-on-any-match, so
|
|
77
|
+
* every rule saved before these columns existed behaves unchanged.
|
|
78
|
+
*/
|
|
79
|
+
this.distinctCountField = undefined;
|
|
80
|
+
this.matchCountThreshold = undefined;
|
|
71
81
|
this.shouldCreateAlert = undefined;
|
|
72
82
|
this.shouldWriteDetectionFinding = undefined;
|
|
73
83
|
/*
|
|
@@ -262,6 +272,53 @@ __decorate([
|
|
|
262
272
|
}),
|
|
263
273
|
__metadata("design:type", String)
|
|
264
274
|
], DetectionRule.prototype, "groupByField", void 0);
|
|
275
|
+
__decorate([
|
|
276
|
+
ColumnAccessControl({
|
|
277
|
+
create: createPermissions,
|
|
278
|
+
read: readPermissions,
|
|
279
|
+
update: updatePermissions,
|
|
280
|
+
}),
|
|
281
|
+
TableColumn({
|
|
282
|
+
title: "Distinct Count Field",
|
|
283
|
+
required: false,
|
|
284
|
+
type: TableColumnType.ShortText,
|
|
285
|
+
canReadOnRelationQuery: true,
|
|
286
|
+
description: "Optional security-event field (e.g. principalUser, principalIp) whose distinct values are counted instead of raw matching events. The match count threshold then applies to that distinct count. Empty values are not counted. Names that are not typed event columns are looked up in the event's attributes map.",
|
|
287
|
+
}),
|
|
288
|
+
Column({
|
|
289
|
+
nullable: true,
|
|
290
|
+
type: ColumnType.ShortText,
|
|
291
|
+
length: ColumnLength.ShortText,
|
|
292
|
+
}),
|
|
293
|
+
__metadata("design:type", String)
|
|
294
|
+
], DetectionRule.prototype, "distinctCountField", void 0);
|
|
295
|
+
__decorate([
|
|
296
|
+
ColumnAccessControl({
|
|
297
|
+
create: createPermissions,
|
|
298
|
+
read: readPermissions,
|
|
299
|
+
update: updatePermissions,
|
|
300
|
+
}),
|
|
301
|
+
TableColumn({
|
|
302
|
+
title: "Match Count Threshold",
|
|
303
|
+
required: true,
|
|
304
|
+
type: TableColumnType.Number,
|
|
305
|
+
canReadOnRelationQuery: true,
|
|
306
|
+
description: "Fire only when a group's count — distinct values when a distinct count field is set, matching events otherwise — reaches this number within one evaluation window. 1 fires on any match.",
|
|
307
|
+
defaultValue: 1,
|
|
308
|
+
/*
|
|
309
|
+
* Same reason as shouldCreateIncident: without this,
|
|
310
|
+
* checkRequiredFields 400s every create payload written before the
|
|
311
|
+
* column existed, and the DB DEFAULT 1 can never apply.
|
|
312
|
+
*/
|
|
313
|
+
isDefaultValueColumn: true,
|
|
314
|
+
}),
|
|
315
|
+
Column({
|
|
316
|
+
type: ColumnType.Number,
|
|
317
|
+
nullable: false,
|
|
318
|
+
default: 1,
|
|
319
|
+
}),
|
|
320
|
+
__metadata("design:type", Number)
|
|
321
|
+
], DetectionRule.prototype, "matchCountThreshold", void 0);
|
|
265
322
|
__decorate([
|
|
266
323
|
ColumnAccessControl({
|
|
267
324
|
create: createPermissions,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetectionRule.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/DetectionRule.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DetectionRule.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/DetectionRule.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,7 +94,10 @@ __decorate([
|
|
|
94
94
|
onDelete: "CASCADE",
|
|
95
95
|
orphanedRowAction: "nullify",
|
|
96
96
|
}),
|
|
97
|
-
JoinColumn({
|
|
97
|
+
JoinColumn({
|
|
98
|
+
name: "projectId",
|
|
99
|
+
foreignKeyConstraintName: "FK_nd_auto_import_rule_projectId",
|
|
100
|
+
}),
|
|
98
101
|
__metadata("design:type", Project)
|
|
99
102
|
], NetworkDeviceAutoImportRule.prototype, "project", void 0);
|
|
100
103
|
__decorate([
|
|
@@ -113,7 +116,7 @@ __decorate([
|
|
|
113
116
|
],
|
|
114
117
|
update: [],
|
|
115
118
|
}),
|
|
116
|
-
Index(),
|
|
119
|
+
Index("IDX_network_device_auto_import_rule_projectId"),
|
|
117
120
|
TableColumn({
|
|
118
121
|
type: TableColumnType.ObjectID,
|
|
119
122
|
required: true,
|
|
@@ -148,7 +151,7 @@ __decorate([
|
|
|
148
151
|
Permission.EditNetworkDeviceAutoImportRule,
|
|
149
152
|
],
|
|
150
153
|
}),
|
|
151
|
-
Index(),
|
|
154
|
+
Index("IDX_network_device_auto_import_rule_name"),
|
|
152
155
|
TableColumn({
|
|
153
156
|
required: true,
|
|
154
157
|
type: TableColumnType.ShortText,
|
|
@@ -216,7 +219,7 @@ __decorate([
|
|
|
216
219
|
Permission.EditNetworkDeviceAutoImportRule,
|
|
217
220
|
],
|
|
218
221
|
}),
|
|
219
|
-
Index(),
|
|
222
|
+
Index("IDX_network_device_auto_import_rule_isEnabled"),
|
|
220
223
|
TableColumn({
|
|
221
224
|
required: true,
|
|
222
225
|
type: TableColumnType.Boolean,
|
|
@@ -419,7 +422,7 @@ __decorate([
|
|
|
419
422
|
Permission.EditNetworkDeviceAutoImportRule,
|
|
420
423
|
],
|
|
421
424
|
}),
|
|
422
|
-
Index(),
|
|
425
|
+
Index("IDX_network_device_auto_import_rule_isExclusion"),
|
|
423
426
|
TableColumn({
|
|
424
427
|
required: true,
|
|
425
428
|
type: TableColumnType.Boolean,
|
|
@@ -466,7 +469,10 @@ __decorate([
|
|
|
466
469
|
onDelete: "SET NULL",
|
|
467
470
|
orphanedRowAction: "nullify",
|
|
468
471
|
}),
|
|
469
|
-
JoinColumn({
|
|
472
|
+
JoinColumn({
|
|
473
|
+
name: "createdByUserId",
|
|
474
|
+
foreignKeyConstraintName: "FK_nd_auto_import_rule_createdByUserId",
|
|
475
|
+
}),
|
|
470
476
|
__metadata("design:type", User)
|
|
471
477
|
], NetworkDeviceAutoImportRule.prototype, "createdByUser", void 0);
|
|
472
478
|
__decorate([
|
|
@@ -519,7 +525,10 @@ __decorate([
|
|
|
519
525
|
onDelete: "SET NULL",
|
|
520
526
|
orphanedRowAction: "nullify",
|
|
521
527
|
}),
|
|
522
|
-
JoinColumn({
|
|
528
|
+
JoinColumn({
|
|
529
|
+
name: "deletedByUserId",
|
|
530
|
+
foreignKeyConstraintName: "FK_nd_auto_import_rule_deletedByUserId",
|
|
531
|
+
}),
|
|
523
532
|
__metadata("design:type", User)
|
|
524
533
|
], NetworkDeviceAutoImportRule.prototype, "deletedByUser", void 0);
|
|
525
534
|
__decorate([
|
|
@@ -584,6 +593,17 @@ NetworkDeviceAutoImportRule = __decorate([
|
|
|
584
593
|
icon: IconProp.Automation,
|
|
585
594
|
tableDescription: "Automatically import matching hosts from network device discovery scan results as Network Devices, with no manual review step",
|
|
586
595
|
})
|
|
596
|
+
/*
|
|
597
|
+
* The index and foreign-key names below are written out rather than left to
|
|
598
|
+
* TypeORM's generated hashes, because this table's migration
|
|
599
|
+
* (1789100000000-AddNetworkDeviceAutoImportRule) was hand-written and created
|
|
600
|
+
* them with readable names. TypeORM compares constraint NAMES when it diffs a
|
|
601
|
+
* database against these entities, so an entity that does not spell them out
|
|
602
|
+
* reports the whole table as schema drift on every run of the Postgres Schema
|
|
603
|
+
* Drift check — which is what it did until these were added. Naming them here
|
|
604
|
+
* keeps the readable names and costs no migration; the alternative was an
|
|
605
|
+
* ALTER that renamed seven objects on every installation to hashes.
|
|
606
|
+
*/
|
|
587
607
|
], NetworkDeviceAutoImportRule);
|
|
588
608
|
export default NetworkDeviceAutoImportRule;
|
|
589
609
|
//# sourceMappingURL=NetworkDeviceAutoImportRule.js.map
|