[Security Solution] Move files from detections folder to detection_engine folder (#215085)

## Summary

This PR is - at its core - only moving a handful of files around. A lot
of of these files lived under the `detections` folder, but were almost
exclusively used in files under the `detection_engine` folder. This is
why the PR seems so huge. Almost everything modified here is only files
imports...

Here are the few files that were actually moved around:

1. The files `detection_engine.tsx`, `detection_engine_no_index.tsx`,
`detection_engine_user_unauthenticated.tsx` (and their respective test
files) have been moved from
`security_solution/public/detections/pages/detection_engine` to
`security_solution/public/detections/pages/alerts`. I thought about
renaming them as well, but felt like there was already enough changes.
Renaming will be done in a follow up PR.

2. The content of the
`security_solution/public/detections/pages/detection_engine/rules`
folder was moved to `security_solution/public/detection_engine/common`
as almost the entire folder content is only used within the
`security_solution/public/detection_engine` folder.

#### Notes

_If there is a better folder for the files moved to the
`detection_engine/common` folder, feel free to suggest. I'll be happy to
make the change!_

The CODEOWNERS file has been updated and simplified accordingly.

Only imports should have been modified. No code, logic or UI changes!

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Philippe Oberti 2025-03-25 14:51:50 +01:00 committed by GitHub
parent 82f6a89e62
commit 4b28464520
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
129 changed files with 498 additions and 568 deletions

39
.github/CODEOWNERS vendored
View file

@ -2292,6 +2292,8 @@ x-pack/solutions/security/plugins/security_solution/public/asset_inventory @elas
/x-pack/solutions/security/plugins/security_solution/common/api/timeline @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/common/search_strategy/timeline @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/common/timelines @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/common/types/header_actions @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/common/types/timeline @elastic/security-threat-hunting-investigations
/x-pack/test/security_solution_cypress/cypress/e2e/investigations @elastic/security-threat-hunting-investigations
@ -2300,38 +2302,34 @@ x-pack/solutions/security/plugins/security_solution/public/asset_inventory @elas
x-pack/test/security_solution_cypress/cypress/screens/expandable_flyout @elastic/security-threat-hunting-investigations
x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/common/timelines @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/timeline @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/alerts_viewer @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/components/alert_summary @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table/timeline_action @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/draggables @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/event_details @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/events_viewer @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/exit_full_screen @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/markdown_editor @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_timeline_control_columns.tsx @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_kpis @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/components/alert_summary @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_table @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/components/alerts_info @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detections/alert_summary @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/flyout/document_details @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/flyout/network_details @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/flyout/shared @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/investigations @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/notes @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/resolver @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/threat_intelligence @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/timelines @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/header_actions @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/common/types/header_actions @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/flyout/network_details @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/flyout/rule_details @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/investigations @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/configurations/security_solution_detections @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detections/alert_summary @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/detection_engine.tsx @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/hooks/use_resolve_conflict.tsx @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/drag_and_drop @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/draggables @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/events_tab @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution_serverless/public/upselling/pages/threat_intelligence_paywall.tsx @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/mock/mock_timeline_control_columns.tsx @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/common/components/exit_full_screen @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/public/app/home/template_wrapper/timeline @elastic/security-threat-hunting-investigations
/x-pack/solutions/security/plugins/security_solution/server/lib/timeline @elastic/security-threat-hunting-investigations
/x-pack/test_serverless/functional/test_suites/security/config.context_awareness.ts @elastic/security-threat-hunting-investigations
@ -2467,7 +2465,7 @@ x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/
/x-pack/solutions/security/plugins/security_solution/public/detections/components/rules/rule_preview @elastic/security-detection-engine
/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/rules @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detections/mitre @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detections/pages/detection_engine/rules @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/common @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/rules @elastic/security-detection-rule-management
/x-pack/solutions/security/plugins/security_solution/public/common/components/toolbar/bulk_actions @elastic/security-detection-rule-management
@ -2501,7 +2499,6 @@ x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout @elastic/
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_exceptions @elastic/security-detection-engine
/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_gaps @elastic/security-detection-engine
/x-pack/solutions/security/plugins/security_solution/public/detections/containers/detection_engine/lists @elastic/security-detection-engine
/x-pack/solutions/security/plugins/security_solution/public/detections/pages/alerts @elastic/security-detection-engine
/x-pack/solutions/security/plugins/security_solution/public/exceptions @elastic/security-detection-engine
/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/migrations @elastic/security-detection-engine

View file

@ -308,8 +308,6 @@ module.exports = {
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]status[\/\\]index.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]value_lists_management_flyout[\/\\]reference_error_modal[\/\\]reference_error_modal.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]components[\/\\]value_lists_management_flyout[\/\\]table_helpers.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]pages[\/\\]detection_engine[\/\\]detection_engine.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]detections[\/\\]pages[\/\\]detection_engine[\/\\]rules[\/\\]helpers.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]entity_analytics[\/\\]components[\/\\]asset_criticality[\/\\]asset_criticality_selector.stories.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]entity_analytics[\/\\]components[\/\\]asset_criticality_file_uploader[\/\\]asset_criticality_file_uploader.stories.tsx/,
/x-pack[\/\\]solutions[\/\\]security[\/\\]plugins[\/\\]security_solution[\/\\]public[\/\\]exceptions[\/\\]components[\/\\]exceptions_utility[\/\\]index.tsx/,

View file

@ -37171,7 +37171,6 @@
"xpack.securitySolution.detectionEngine.ruleDetails.alertSuppressionFieldLabel": "Suppression d'alerte",
"xpack.securitySolution.detectionEngine.ruleDetails.anomalyThresholdFieldLabel": "Seuil de score d'anomalie",
"xpack.securitySolution.detectionEngine.ruleDetails.authorFieldLabel": "Auteur",
"xpack.securitySolution.detectionEngine.ruleDetails.backToRulesButton": "Règles",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockDisabledFieldDescription": "Ne marquera pas les alertes comme \"fondamentales\"",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldDescription": "Toutes les alertes générées sont marquées comme \"fondamentales\"",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldLabel": "Fondamental",

View file

@ -37144,7 +37144,6 @@
"xpack.securitySolution.detectionEngine.ruleDetails.alertSuppressionFieldLabel": "アラート抑制",
"xpack.securitySolution.detectionEngine.ruleDetails.anomalyThresholdFieldLabel": "異常スコアしきい値",
"xpack.securitySolution.detectionEngine.ruleDetails.authorFieldLabel": "作成者",
"xpack.securitySolution.detectionEngine.ruleDetails.backToRulesButton": "ルール",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockDisabledFieldDescription": "アラートを「基本」アラートに設定しません",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldDescription": "すべての生成されたアラートが「基本」アラートに設定されます",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldLabel": "基本",

View file

@ -37206,7 +37206,6 @@
"xpack.securitySolution.detectionEngine.ruleDetails.alertSuppressionFieldLabel": "告警阻止",
"xpack.securitySolution.detectionEngine.ruleDetails.anomalyThresholdFieldLabel": "异常分数阈值",
"xpack.securitySolution.detectionEngine.ruleDetails.authorFieldLabel": "作者",
"xpack.securitySolution.detectionEngine.ruleDetails.backToRulesButton": "规则",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockDisabledFieldDescription": "不会将告警标记为“构建块”告警",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldDescription": "所有生成的告警将标记为“构建块”告警",
"xpack.securitySolution.detectionEngine.ruleDetails.buildingBlockFieldLabel": "构建块",

View file

@ -8,7 +8,7 @@
import type { PromptContext, PromptContextTemplate } from '@kbn/elastic-assistant';
import * as i18nDataQuality from '@kbn/ecs-data-quality-dashboard';
import * as i18n from './translations';
import * as i18nDetections from '../../../detections/pages/detection_engine/rules/translations';
import * as i18nDetections from '../../../detection_engine/common/translations';
import * as i18nEventDetails from '../../../common/components/event_details/translations';
import * as i18nUserPrompts from '../prompts/user/translations';

View file

@ -6,17 +6,18 @@
*/
import { EuiIcon } from '@elastic/eui';
import type { CodeBlockDetails, Conversation } from '@kbn/elastic-assistant';
import { analyzeMarkdown } from '@kbn/elastic-assistant';
import type { Conversation, CodeBlockDetails } from '@kbn/elastic-assistant';
import React from 'react';
import { replaceAnonymizedValuesWithOriginalValues } from '@kbn/elastic-assistant-common';
import type { TimelineEventsDetailsItem } from '../../common/search_strategy';
import type { Rule } from '../detection_engine/rule_management/logic';
import { SendToTimelineButton } from './send_to_timeline';
import { DETECTION_RULES_CREATE_FORM_CONVERSATION_ID } from '../detections/pages/detection_engine/translations';
export const LOCAL_STORAGE_KEY = `securityAssistant`;
import { DETECTION_RULES_CREATE_FORM_CONVERSATION_ID } from '../detection_engine/rule_creation_ui/components/ai_assistant/translations';
import { UpdateQueryInFormButton } from './update_query_in_form';
export const LOCAL_STORAGE_KEY = `securityAssistant`;
export const getPromptContextFromDetectionRules = (rules: Rule[]): string => {
const data = rules.map((rule) => `Rule Name:${rule.name}\nRule Description:${rule.description}`);

View file

@ -10,7 +10,7 @@ import type { GetTrailingBreadcrumbs } from './types';
import { getTrailingBreadcrumbs as getHostDetailsBreadcrumbs } from '../../../../explore/hosts/pages/details/breadcrumbs';
import { getTrailingBreadcrumbs as getIPDetailsBreadcrumbs } from '../../../../explore/network/pages/details/breadcrumbs';
import { getTrailingBreadcrumbs as getDetectionRulesBreadcrumbs } from '../../../../detections/pages/detection_engine/rules/breadcrumbs';
import { getTrailingBreadcrumbs as getDetectionRulesBreadcrumbs } from '../../../../detection_engine/common/breadcrumbs';
import { getTrailingBreadcrumbs as geExceptionsBreadcrumbs } from '../../../../exceptions/utils/breadcrumbs';
import { getTrailingBreadcrumbs as getCSPBreadcrumbs } from '../../../../cloud_security_posture/breadcrumbs';
import { getTrailingBreadcrumbs as getUsersBreadcrumbs } from '../../../../explore/users/pages/details/breadcrumbs';

View file

@ -6,9 +6,8 @@
*/
import type { Rule } from '../../../detection_engine/rule_management/logic';
import * as i18nActions from '../../../detections/pages/detection_engine/rules/translations';
import * as i18nActions from '../../../detection_engine/common/translations';
import { isMlRule } from '../../../../common/machine_learning/helpers';
import * as detectionI18n from '../../../detections/pages/detection_engine/translations';
export const isBoolean = (obj: unknown): obj is boolean => typeof obj === 'boolean';
@ -46,7 +45,7 @@ export const explainLackOfPermission = (
if (rule == null) {
return undefined;
} else if (isMlRule(rule.type) && !hasMlPermissions) {
return detectionI18n.ML_RULES_DISABLED_MESSAGE;
return i18nActions.ML_RULES_DISABLED_MESSAGE;
} else if (!canEditRuleWithActions(rule, hasReadActionsPrivileges)) {
return i18nActions.LACK_OF_KIBANA_ACTIONS_FEATURE_PRIVILEGES;
} else if (!hasUserCRUDPermission(canUserCRUD)) {

View file

@ -7,18 +7,18 @@
import type { ChromeBreadcrumb } from '@kbn/core/public';
import {
RuleDetailTabs,
RULE_DETAILS_TAB_NAME,
} from '../../../../detection_engine/rule_details_ui/pages/rule_details/use_rule_details_tabs';
RuleDetailTabs,
} from '../rule_details_ui/pages/rule_details/use_rule_details_tabs';
import {
getRuleDetailsTabUrl,
getRuleDetailsUrl,
} from '../../../../common/components/link_to/redirect_to_detection_engine';
} from '../../common/components/link_to/redirect_to_detection_engine';
import * as i18nRules from './translations';
import { SecurityPageName } from '../../../../app/types';
import { RULES_PATH } from '../../../../../common/constants';
import type { GetTrailingBreadcrumbs } from '../../../../common/components/navigation/breadcrumbs/types';
import { DELETED_RULE } from '../../../../detection_engine/rule_details_ui/pages/rule_details/translations';
import { SecurityPageName } from '../../app/types';
import { RULES_PATH } from '../../../common/constants';
import type { GetTrailingBreadcrumbs } from '../../common/components/navigation/breadcrumbs/types';
import { DELETED_RULE } from '../rule_details_ui/pages/rule_details/translations';
const getRuleDetailsTabName = (tabName: string): string => {
return RULE_DETAILS_TAB_NAME[tabName] ?? RULE_DETAILS_TAB_NAME[RuleDetailTabs.alerts];

View file

@ -8,33 +8,33 @@
import moment from 'moment';
import type { GetStepsData } from './helpers';
import {
getDefineStepsData,
getScheduleStepsData,
getStepsData,
getAboutStepsData,
getActionsStepsData,
getModifiedAboutDetailsData,
getPrePackagedTimelineInstallationStatus,
determineDetailsValue,
fillEmptySeverityMappings,
getAboutStepsData,
getActionsStepsData,
getDefineStepsData,
getModifiedAboutDetailsData,
getPrePackagedTimelineInstallationStatus,
getScheduleStepsData,
getStepsData,
} from './helpers';
import {
mockRuleWithEverything,
mockRule,
} from '../../../../detection_engine/rule_management_ui/components/rules_table/__mocks__/mock';
mockRuleWithEverything,
} from '../rule_management_ui/components/rules_table/__mocks__/mock';
import { FilterStateStore } from '@kbn/es-query';
import type { RuleAction } from '../../../../../common/api/detection_engine/model/rule_schema';
import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../../../common/api/detection_engine/model/rule_schema';
import type { RuleAction } from '../../../common/api/detection_engine/model/rule_schema';
import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../common/api/detection_engine/model/rule_schema';
import type { Rule } from '../../../../detection_engine/rule_management/logic';
import type { Rule } from '../rule_management/logic';
import type {
AboutStepRule,
AboutStepRuleDetails,
ActionsStepRule,
DefineStepRule,
ScheduleStepRule,
ActionsStepRule,
} from './types';
import { getThreatMock } from '../../../../../common/detection_engine/schemas/types/threat.mock';
import { getThreatMock } from '../../../common/detection_engine/schemas/types/threat.mock';
import {
ALERT_SUPPRESSION_DURATION_FIELD_NAME,
ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME,
@ -42,8 +42,8 @@ import {
ALERT_SUPPRESSION_DURATION_VALUE_FIELD_NAME,
ALERT_SUPPRESSION_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME,
} from '../../../../detection_engine/rule_creation/components/alert_suppression_edit';
import { THRESHOLD_ALERT_SUPPRESSION_ENABLED } from '../../../../detection_engine/rule_creation/components/threshold_alert_suppression_edit';
} from '../rule_creation/components/alert_suppression_edit';
import { THRESHOLD_ALERT_SUPPRESSION_ENABLED } from '../rule_creation/components/threshold_alert_suppression_edit';
describe('rule helpers', () => {
moment.suppressDeprecationWarnings = true;

View file

@ -8,7 +8,7 @@
import memoizeOne from 'memoize-one';
import { useLocation } from 'react-router-dom';
import styled from 'styled-components';
import styled from '@emotion/styled';
import { EuiFlexItem } from '@elastic/eui';
import type {
Severity,
@ -20,35 +20,35 @@ import { ENDPOINT_LIST_ID } from '@kbn/securitysolution-list-constants';
import type { Filter } from '@kbn/es-query';
import type { ActionVariables } from '@kbn/triggers-actions-ui-plugin/public';
import { requiredOptional } from '@kbn/zod-helpers';
import { toSimpleRuleSchedule } from '../../../../../common/api/detection_engine/model/rule_schema/to_simple_rule_schedule';
import { toSimpleRuleSchedule } from '../../../common/api/detection_engine/model/rule_schema/to_simple_rule_schedule';
import {
ALERT_SUPPRESSION_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME,
ALERT_SUPPRESSION_DURATION_FIELD_NAME,
ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME,
ALERT_SUPPRESSION_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME,
} from '../../../../detection_engine/rule_creation/components/alert_suppression_edit';
import { THRESHOLD_ALERT_SUPPRESSION_ENABLED } from '../../../../detection_engine/rule_creation/components/threshold_alert_suppression_edit';
import type { ResponseAction } from '../../../../../common/api/detection_engine/model/rule_response_actions';
import { normalizeThresholdField } from '../../../../../common/detection_engine/utils';
import { assertUnreachable } from '../../../../../common/utility_types';
} from '../rule_creation/components/alert_suppression_edit';
import { THRESHOLD_ALERT_SUPPRESSION_ENABLED } from '../rule_creation/components/threshold_alert_suppression_edit';
import type { ResponseAction } from '../../../common/api/detection_engine/model/rule_response_actions';
import { normalizeThresholdField } from '../../../common/detection_engine/utils';
import { assertUnreachable } from '../../../common/utility_types';
import {
transformRuleToAlertAction,
transformRuleToAlertResponseAction,
} from '../../../../../common/detection_engine/transform_actions';
} from '../../../common/detection_engine/transform_actions';
import type {
AboutStepRule,
AboutStepRuleDetails,
ActionsStepRule,
DefineStepRule,
ScheduleStepRule,
ActionsStepRule,
} from './types';
import { DataSourceType, AlertSuppressionDurationType } from './types';
import { SeverityLevel } from '../../../../detection_engine/rule_creation_ui/components/step_about_rule/data';
import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../../../common/detection_engine/constants';
import type { RuleAction, RuleResponse } from '../../../../../common/api/detection_engine';
import { normalizeMachineLearningJobId } from '../../../../common/utils/normalize_machine_learning_job_id';
import { convertDateMathToDuration } from '../../../../common/utils/date_math';
import { DEFAULT_HISTORY_WINDOW_SIZE } from '../../../../common/constants';
import { AlertSuppressionDurationType, DataSourceType } from './types';
import { SeverityLevel } from '../rule_creation_ui/components/step_about_rule/data';
import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../common/detection_engine/constants';
import type { RuleAction, RuleResponse } from '../../../common/api/detection_engine';
import { normalizeMachineLearningJobId } from '../../common/utils/normalize_machine_learning_job_id';
import { convertDateMathToDuration } from '../../common/utils/date_math';
import { DEFAULT_HISTORY_WINDOW_SIZE } from '../../common/constants';
export interface GetStepsData {
aboutRuleData: AboutStepRule;
@ -305,14 +305,7 @@ export const getModifiedAboutDetailsData = (rule: RuleResponse): AboutStepRuleDe
export const useQuery = () => new URLSearchParams(useLocation().search);
export type PrePackagedRuleInstallationStatus =
| 'ruleInstalled'
| 'ruleNotInstalled'
| 'ruleNeedUpdate'
| 'someRuleUninstall'
| 'unknown';
export type PrePackagedTimelineInstallationStatus =
type PrePackagedTimelineInstallationStatus =
| 'timelinesNotInstalled'
| 'timelinesInstalled'
| 'someTimelineUninstall'
@ -422,7 +415,7 @@ const getRuleSpecificRuleParamKeys = (ruleType: Type) => {
assertUnreachable(ruleType);
};
export const getActionMessageRuleParams = (ruleType: Type): string[] => {
const getActionMessageRuleParams = (ruleType: Type): string[] => {
const ruleParamsKeys = [
...commonRuleParamsKeys,
...getRuleSpecificRuleParamKeys(ruleType),

View file

@ -604,6 +604,13 @@ export const LACK_OF_KIBANA_SECURITY_PRIVILEGES = i18n.translate(
}
);
export const ML_RULES_DISABLED_MESSAGE = i18n.translate(
'xpack.securitySolution.detectionEngine.mlRulesDisabledMessageTitle',
{
defaultMessage: 'ML rules require Platinum License and ML Admin Permissions',
}
);
export const DUPLICATE_RULE = i18n.translate(
'xpack.securitySolution.detectionEngine.rules.allRules.actions.duplicateRuleDescription',
{

View file

@ -28,33 +28,33 @@ import type {
ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME,
ALERT_SUPPRESSION_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME,
} from '../../../../detection_engine/rule_creation/components/alert_suppression_edit';
import type { THRESHOLD_ALERT_SUPPRESSION_ENABLED } from '../../../../detection_engine/rule_creation/components/threshold_alert_suppression_edit';
import type { FieldValueQueryBar } from '../../../../detection_engine/rule_creation_ui/components/query_bar_field';
import type { FieldValueTimeline } from '../../../../detection_engine/rule_creation/components/pick_timeline';
import type { FieldValueThreshold } from '../../../../detection_engine/rule_creation_ui/components/threshold_input';
} from '../rule_creation/components/alert_suppression_edit';
import type { THRESHOLD_ALERT_SUPPRESSION_ENABLED } from '../rule_creation/components/threshold_alert_suppression_edit';
import type { FieldValueQueryBar } from '../rule_creation_ui/components/query_bar_field';
import type { FieldValueTimeline } from '../rule_creation/components/pick_timeline';
import type { FieldValueThreshold } from '../rule_creation_ui/components/threshold_input';
import type {
AlertSuppression,
AlertSuppressionMissingFieldsStrategy,
BuildingBlockType,
InvestigationFields,
RelatedIntegration,
RelatedIntegrationArray,
RequiredFieldInput,
RuleAction,
RuleAuthorArray,
RuleLicense,
RuleNameOverride,
SetupGuide,
TimestampOverride,
AlertSuppressionMissingFieldsStrategy,
InvestigationFields,
RuleAction,
AlertSuppression,
ThresholdAlertSuppression,
RelatedIntegration,
RequiredFieldInput,
} from '../../../../../common/api/detection_engine/model/rule_schema';
import type { SortOrder } from '../../../../../common/api/detection_engine';
import type { EqlOptions } from '../../../../../common/search_strategy';
TimestampOverride,
} from '../../../common/api/detection_engine/model/rule_schema';
import type { SortOrder } from '../../../common/api/detection_engine';
import type { EqlOptions } from '../../../common/search_strategy';
import type {
RuleResponseAction,
ResponseAction,
} from '../../../../../common/api/detection_engine/model/rule_response_actions';
RuleResponseAction,
} from '../../../common/api/detection_engine/model/rule_response_actions';
export interface EuiBasicTableSortTypes {
field: string;

View file

@ -10,10 +10,10 @@ import { useQuery } from '@tanstack/react-query';
import type { Type } from '@kbn/securitysolution-io-ts-alerting-types';
import { useSavedQueryServices } from '../../../../common/utils/saved_query_services';
import { useSavedQueryServices } from '../../common/utils/saved_query_services';
import type { DefineStepRule } from './types';
import { useAppToasts } from '../../../../common/hooks/use_app_toasts';
import { useAppToasts } from '../../common/hooks/use_app_toasts';
import { SAVED_QUERY_LOAD_ERROR_TOAST } from './translations';

View file

@ -6,22 +6,22 @@
*/
import type { Type } from '@kbn/securitysolution-io-ts-alerting-types';
import { DEFAULT_THREAT_MAPPING_VALUE } from '../../../../detection_engine/rule_creation/components/threat_match_mapping_edit';
import { DEFAULT_THREAT_MAPPING_VALUE } from '../rule_creation/components/threat_match_mapping_edit';
import {
ALERT_SUPPRESSION_DEFAULT_DURATION,
ALERT_SUPPRESSION_DURATION_FIELD_NAME,
ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME,
ALERT_SUPPRESSION_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_DEFAULT_DURATION,
} from '../../../../detection_engine/rule_creation/components/alert_suppression_edit';
import { THRESHOLD_ALERT_SUPPRESSION_ENABLED } from '../../../../detection_engine/rule_creation/components/threshold_alert_suppression_edit';
import { DEFAULT_KQL_QUERY_FIELD_VALUE } from '../../../../detection_engine/rule_creation_ui/components/query_bar_field';
import { isThreatMatchRule } from '../../../../../common/detection_engine/utils';
import { DEFAULT_TIMELINE_TITLE } from '../../../../timelines/components/timeline/translations';
import { DEFAULT_MAX_SIGNALS, DEFAULT_THREAT_MATCH_QUERY } from '../../../../../common/constants';
import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../../../common/detection_engine/constants';
} from '../rule_creation/components/alert_suppression_edit';
import { THRESHOLD_ALERT_SUPPRESSION_ENABLED } from '../rule_creation/components/threshold_alert_suppression_edit';
import { DEFAULT_KQL_QUERY_FIELD_VALUE } from '../rule_creation_ui/components/query_bar_field';
import { isThreatMatchRule } from '../../../common/detection_engine/utils';
import { DEFAULT_TIMELINE_TITLE } from '../../timelines/components/timeline/translations';
import { DEFAULT_MAX_SIGNALS, DEFAULT_THREAT_MATCH_QUERY } from '../../../common/constants';
import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../common/detection_engine/constants';
import type { AboutStepRule, DefineStepRule, RuleStepsOrder, ScheduleStepRule } from './types';
import { DataSourceType, AlertSuppressionDurationType, RuleStep } from './types';
import { AlertSuppressionDurationType, DataSourceType, RuleStep } from './types';
import { fillEmptySeverityMappings } from './helpers';
export const ruleStepsOrder: RuleStepsOrder = [

View file

@ -10,7 +10,7 @@ import { EuiFormRow, EuiRadioGroup, EuiToolTip, useEuiTheme } from '@elastic/eui
import { css } from '@emotion/css';
import type { FieldHook } from '../../../../../shared_imports';
import { UseMultiFields } from '../../../../../shared_imports';
import { AlertSuppressionDurationType } from '../../../../../detections/pages/detection_engine/rules/types';
import { AlertSuppressionDurationType } from '../../../../common/types';
import { DurationInput } from '../../duration_input';
import {
ALERT_SUPPRESSION_DURATION_FIELD_NAME,

View file

@ -8,7 +8,7 @@
import { EuiText } from '@elastic/eui';
import React from 'react';
import * as RuleI18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as RuleI18n from '../../../common/translations';
export const OptionalFieldLabel = (
<EuiText color="subdued" size="xs">

View file

@ -17,7 +17,7 @@ import {
} from '../../../rule_management_ui/components/rules_table/__mocks__/mock';
import { HeaderSection } from '../../../../common/components/header_section';
import { StepAboutRule } from '../../../rule_creation_ui/components/step_about_rule';
import type { AboutStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { AboutStepRule } from '../../../common/types';
import { getMockTheme } from '../../../../common/lib/kibana/kibana_react.mock';
jest.mock('../../../../common/lib/kibana');

View file

@ -7,14 +7,14 @@
import type { EuiButtonGroupOptionProps } from '@elastic/eui';
import {
EuiButtonGroup,
EuiFlexGroup,
EuiFlexItem,
EuiPanel,
EuiProgress,
EuiButtonGroup,
EuiSpacer,
EuiFlexItem,
EuiText,
EuiFlexGroup,
EuiResizeObserver,
EuiSpacer,
EuiText,
} from '@elastic/eui';
import { isEmpty } from 'lodash';
import type { PropsWithChildren } from 'react';
@ -24,10 +24,7 @@ import { css } from '@emotion/css';
import { RuleAboutSection } from '../../../rule_management/components/rule_details/rule_about_section';
import { HeaderSection } from '../../../../common/components/header_section';
import { MarkdownRenderer } from '../../../../common/components/markdown_editor';
import type {
AboutStepRule,
AboutStepRuleDetails,
} from '../../../../detections/pages/detection_engine/rules/types';
import type { AboutStepRule, AboutStepRuleDetails } from '../../../common/types';
import * as i18n from './translations';
import { fullHeight } from './styles';
import type { RuleResponse } from '../../../../../common/api/detection_engine';

View file

@ -9,7 +9,7 @@ import type { ActionTypeRegistryContract } from '@kbn/triggers-actions-ui-plugin
import { debouncedValidateRuleActionsField } from '../../../../detections/containers/detection_engine/rules/validate_rule_actions_field';
import type { FormSchema } from '../../../../shared_imports';
import type { ActionsStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { ActionsStepRule } from '../../../common/types';
export const getSchema = ({
actionTypeRegistry,

View file

@ -6,20 +6,20 @@
*/
import React from 'react';
import { mount, type ComponentType as EnzymeComponentType } from 'enzyme';
import { type ComponentType as EnzymeComponentType, mount } from 'enzyme';
import { render } from '@testing-library/react';
import { TestProviders } from '../../../../common/mock';
import { StepRuleActions, stepActionsDefaultValue } from '.';
import { stepActionsDefaultValue, StepRuleActions } from '.';
import {
defaultSchedule,
stepAboutDefaultValue,
stepDefineDefaultValue,
} from '../../../../detections/pages/detection_engine/rules/utils';
} from '../../../common/utils';
import { useRuleForms } from '../../../rule_creation_ui/pages/form';
import type { FormHook } from '../../../../shared_imports';
import type { ActionsStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { ActionsStepRule } from '../../../common/types';
import { FrequencyDescription } from './notification_action';
jest.mock('../../../../common/lib/kibana', () => ({

View file

@ -17,12 +17,9 @@ import type {
import { UseArray } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib';
import type { RuleObjectId } from '../../../../../common/api/detection_engine/model/rule_schema';
import { ResponseActionsForm } from '../../../rule_response_actions/response_actions_form';
import type {
RuleStepProps,
ActionsStepRule,
} from '../../../../detections/pages/detection_engine/rules/types';
import { Form, UseField } from '../../../../shared_imports';
import type { ActionsStepRule, RuleStepProps } from '../../../common/types';
import type { FormHook } from '../../../../shared_imports';
import { Form, UseField } from '../../../../shared_imports';
import { StepContentWrapper } from '../step_content_wrapper';
import { RuleActionsField } from '../rule_actions_field';
import { useKibana } from '../../../../common/lib/kibana';

View file

@ -19,7 +19,7 @@ import type { ChangeEvent } from 'react';
import React, { useCallback, useEffect, useState, useRef } from 'react';
import styled from 'styled-components';
import * as RuleI18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as RuleI18n from '../../../common/translations';
import type { FieldHook } from '../../../../shared_imports';
import { getFieldValidityAndErrorMessage } from '../../../../shared_imports';

View file

@ -15,8 +15,7 @@ import { AssistantIcon } from '@kbn/ai-assistant-icon';
import { css } from '@emotion/react';
import { METRIC_TYPE, TELEMETRY_EVENT, track } from '../../../../common/lib/telemetry';
import { useAssistantAvailability } from '../../../../assistant/use_assistant_availability';
import * as i18nAssistant from '../../../../detections/pages/detection_engine/translations';
import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { DefineStepRule } from '../../../common/types';
import type { FormHook, ValidationError } from '../../../../shared_imports';
import * as i18n from './translations';
@ -94,7 +93,7 @@ Proposed solution should be valid and must not contain new line symbols (\\n)`;
const chatTitle = useMemo(() => {
const queryField = getFields().queryBar;
const { query } = (queryField.value as DefineStepRule['queryBar']).query;
return `${i18nAssistant.DETECTION_RULES_CREATE_FORM_CONVERSATION_ID} - ${query ?? 'query'}`;
return `${i18n.DETECTION_RULES_CREATE_FORM_CONVERSATION_ID} - ${query ?? 'query'}`;
}, [getFields]);
if (!hasAssistantPrivilege) {

View file

@ -37,3 +37,10 @@ export const ASK_ASSISTANT_TOOLTIP = i18n.translate(
defaultMessage: 'Fix query or generate new one',
}
);
export const DETECTION_RULES_CREATE_FORM_CONVERSATION_ID = i18n.translate(
'xpack.securitySolution.detectionEngine.ruleManagement.detectionRulesCreateEditFormConversationId',
{
defaultMessage: 'Detection Rules Create form',
}
);

View file

@ -7,14 +7,14 @@
import {
EuiBadge,
EuiLoadingSpinner,
EuiFlexGrid,
EuiFlexGroup,
EuiFlexItem,
EuiLink,
EuiText,
EuiIcon,
EuiLink,
EuiLoadingSpinner,
EuiText,
EuiToolTip,
EuiFlexGrid,
} from '@elastic/eui';
import { ALERT_RISK_SCORE } from '@kbn/rule-data-utils';
@ -22,15 +22,15 @@ import { isEmpty } from 'lodash/fp';
import React from 'react';
import styled from 'styled-components';
import type { ThreatMapping, Type, Threats } from '@kbn/securitysolution-io-ts-alerting-types';
import type { ThreatMapping, Threats, Type } from '@kbn/securitysolution-io-ts-alerting-types';
import { FilterBadgeGroup } from '@kbn/unified-search-plugin/public';
import { IntervalAbbrScreenReader } from '../../../../common/components/accessibility';
import type {
RequiredFieldArray,
AlertSuppressionMissingFieldsStrategy,
RequiredFieldArray,
} from '../../../../../common/api/detection_engine/model/rule_schema';
import { AlertSuppressionMissingFieldsStrategyEnum } from '../../../../../common/api/detection_engine/model/rule_schema';
import { MATCHES, AND, OR } from '../../../../common/components/threat_match/translations';
import { AND, MATCHES, OR } from '../../../../common/components/threat_match/translations';
import type { EqlOptions } from '../../../../../common/search_strategy';
import { assertUnreachable } from '../../../../../common/utility_types';
import * as i18nSeverity from '../severity_mapping/translations';
@ -39,12 +39,8 @@ import * as i18nRiskScore from '../risk_score_mapping/translations';
import * as i18n from './translations';
import type { BuildQueryBarDescription, ListItems } from './types';
import { SeverityBadge } from '../../../../common/components/severity_badge';
import type {
AboutStepRiskScore,
AboutStepSeverity,
Duration,
} from '../../../../detections/pages/detection_engine/rules/types';
import { AlertSuppressionDurationType } from '../../../../detections/pages/detection_engine/rules/types';
import type { AboutStepRiskScore, AboutStepSeverity, Duration } from '../../../common/types';
import { AlertSuppressionDurationType } from '../../../common/types';
import { defaultToEmptyTag } from '../../../../common/components/empty_value';
import { RequiredFieldIcon } from '../../../rule_management/components/rule_details/required_field_icon';
import { THREAT_QUERY_LANGUAGE_LABEL } from '../../../rule_management/components/rule_details/translations';

View file

@ -6,14 +6,14 @@
*/
import React from 'react';
import { shallow, mount } from 'enzyme';
import { mount, shallow } from 'enzyme';
import { render } from '@testing-library/react';
import {
StepRuleDescription,
addFilterStateIfNotThere,
buildListItems,
getDescriptionItem,
StepRuleDescription,
} from '.';
import { FilterManager, UI_SETTINGS } from '@kbn/data-plugin/public';
@ -29,7 +29,7 @@ import * as i18n from './translations';
import { schema } from '../step_about_rule/schema';
import type { ListItems } from './types';
import type { AboutStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { AboutStepRule } from '../../../common/types';
import { createLicenseServiceMock } from '../../../../../common/license/mocks';
import {
ALERT_SUPPRESSION_DURATION_FIELD_NAME,

View file

@ -21,11 +21,7 @@ import { buildRelatedIntegrationsDescription } from '../../../../detections/comp
import { DEFAULT_TIMELINE_TITLE } from '../../../../timelines/components/timeline/translations';
import type { EqlOptions } from '../../../../../common/search_strategy';
import { useKibana } from '../../../../common/lib/kibana';
import type {
AboutStepRiskScore,
AboutStepSeverity,
Duration,
} from '../../../../detections/pages/detection_engine/rules/types';
import type { AboutStepRiskScore, AboutStepSeverity, Duration } from '../../../common/types';
import type { FieldValueTimeline } from '../../../rule_creation/components/pick_timeline';
import type { FormSchema } from '../../../../shared_imports';
import type { ListItems } from './types';

View file

@ -5,14 +5,14 @@
* 2.0.
*/
import { EuiButtonIcon, EuiFormRow, EuiSuperSelect, EuiFlexGroup, EuiFlexItem } from '@elastic/eui';
import { isEmpty, camelCase } from 'lodash/fp';
import { EuiButtonIcon, EuiFlexGroup, EuiFlexItem, EuiFormRow, EuiSuperSelect } from '@elastic/eui';
import { camelCase, isEmpty } from 'lodash/fp';
import React, { memo, useCallback, useEffect, useMemo, useState } from 'react';
import styled from 'styled-components';
import { isEqual } from 'lodash';
import type { Threat, Threats } from '@kbn/securitysolution-io-ts-alerting-types';
import * as Rulei18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as Rulei18n from '../../../common/translations';
import type { FieldHook } from '../../../../shared_imports';
import { threatDefault } from '../step_about_rule/default_value';
import { MyAddItemButton } from '../add_item_form';
@ -76,6 +76,7 @@ export const AddMitreAttackThreat = memo(({ field, idAria, isDisabled }: AddItem
const mitreConfig = await lazyMitreConfiguration();
setTacticsOptions(mitreConfig.tactics);
}
getMitre();
}, []);

View file

@ -17,7 +17,7 @@ import React, { useCallback, useEffect, useMemo, useState } from 'react';
import styled from 'styled-components';
import type { Threats, ThreatSubtechnique } from '@kbn/securitysolution-io-ts-alerting-types';
import * as Rulei18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as Rulei18n from '../../../common/translations';
import type { FieldHook } from '../../../../shared_imports';
import { MyAddItemButton } from '../add_item_form';
import * as i18n from './translations';
@ -63,6 +63,7 @@ export const MitreAttackSubtechniqueFields: React.FC<AddSubtechniqueProps> = ({
const mitreConfig = await lazyMitreConfiguration();
setSubtechniquesOptions(mitreConfig.subtechniques);
}
getMitre();
}, []);

View file

@ -7,23 +7,23 @@
import {
EuiButtonIcon,
EuiFormRow,
EuiSuperSelect,
EuiSpacer,
EuiFlexGroup,
EuiFlexItem,
EuiFormRow,
EuiSpacer,
EuiSuperSelect,
} from '@elastic/eui';
import { kebabCase } from 'lodash/fp';
import React, { useCallback, useEffect, useState } from 'react';
import styled, { css } from 'styled-components';
import type { Threats, ThreatTechnique } from '@kbn/securitysolution-io-ts-alerting-types';
import * as Rulei18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as Rulei18n from '../../../common/translations';
import type { FieldHook } from '../../../../shared_imports';
import { MyAddItemButton } from '../add_item_form';
import * as i18n from './translations';
import { MitreAttackSubtechniqueFields } from './subtechnique_fields';
import type { MitreTechnique, MitreSubTechnique } from '../../../../detections/mitre/types';
import type { MitreSubTechnique, MitreTechnique } from '../../../../detections/mitre/types';
const lazyMitreConfiguration = () => {
/**
@ -75,6 +75,7 @@ export const MitreAttackTechniqueFields: React.FC<AddTechniqueProps> = ({
setTechniquesOptions(mitreConfig.techniques);
setSubtechniquesOptions(mitreConfig.subtechniques);
}
getMitre();
}, []);

View file

@ -7,7 +7,7 @@
import React from 'react';
import { EuiHorizontalRule, EuiFlexGroup, EuiFlexItem, EuiButton } from '@elastic/eui';
import * as RuleI18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as RuleI18n from '../../../common/translations';
interface NextStepProps {
onClick: () => void;

View file

@ -12,7 +12,7 @@ import {
getFieldValidityAndErrorMessage,
type FieldHook,
} from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib';
import type { AboutStepRiskScore } from '../../../../detections/pages/detection_engine/rules/types';
import type { AboutStepRiskScore } from '../../../common/types';
import { DefaultRiskScore } from './default_risk_score';
import { RiskScoreOverride } from './risk_score_override';

View file

@ -9,7 +9,8 @@ import type { EuiSelectOption } from '@elastic/eui';
import type { Type } from '@kbn/securitysolution-io-ts-alerting-types';
import * as i18n from './translations';
import type { TimeframePreviewOptions } from '../../../../detections/pages/detection_engine/rules/types';
import type { TimeframePreviewOptions } from '../../../common/types';
/**
* Determines whether or not to display noise warning.
* Is considered noisy if alerts/hour rate > 1

View file

@ -16,12 +16,12 @@ import { TestProviders } from '../../../../common/mock';
import type { RulePreviewProps } from '.';
import { RulePreview, REASONABLE_INVOCATION_COUNT } from '.';
import { usePreviewRoute } from './use_preview_route';
import { DataSourceType } from '../../../../detections/pages/detection_engine/rules/types';
import { DataSourceType } from '../../../common/types';
import {
getStepScheduleDefaultValue,
stepAboutDefaultValue,
stepDefineDefaultValue,
} from '../../../../detections/pages/detection_engine/rules/utils';
} from '../../../common/utils';
import { usePreviewInvocationCount } from './use_preview_invocation_count';
jest.mock('../../../../common/lib/kibana');

View file

@ -5,20 +5,20 @@
* 2.0.
*/
import React, { useState, useEffect, useCallback, useMemo } from 'react';
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import dateMath from '@kbn/datemath';
import type { OnTimeChangeProps } from '@elastic/eui';
import {
EuiCallOut,
EuiCheckbox,
EuiFlexGroup,
EuiFlexItem,
EuiFormRow,
EuiSpacer,
EuiSuperDatePicker,
EuiSuperUpdateButton,
EuiText,
EuiTitle,
EuiFormRow,
EuiCheckbox,
} from '@elastic/eui';
import moment from 'moment';
import type { List } from '@kbn/securitysolution-io-ts-list-types';
@ -38,7 +38,7 @@ import type {
DefineStepRule,
ScheduleStepRule,
TimeframePreviewOptions,
} from '../../../../detections/pages/detection_engine/rules/types';
} from '../../../common/types';
import { usePreviewInvocationCount } from './use_preview_invocation_count';
export const REASONABLE_INVOCATION_COUNT = 200;

View file

@ -28,7 +28,7 @@ import { DEFAULT_PREVIEW_INDEX } from '../../../../../common/constants';
import { PreviewRenderCellValue } from './preview_table_cell_renderer';
import { getPreviewTableControlColumn } from './preview_table_control_columns';
import { useGlobalFullScreen } from '../../../../common/containers/use_full_screen';
import type { TimeframePreviewOptions } from '../../../../detections/pages/detection_engine/rules/types';
import type { TimeframePreviewOptions } from '../../../common/types';
import { useLicense } from '../../../../common/hooks/use_license';
import { useKibana } from '../../../../common/lib/kibana';
import { getRulePreviewLensAttributes } from '../../../../common/components/visualization_actions/lens_attributes/common/alerts/rule_preview';

View file

@ -7,7 +7,7 @@
import moment from 'moment';
import type { TimeframePreviewOptions } from '../../../../detections/pages/detection_engine/rules/types';
import type { TimeframePreviewOptions } from '../../../common/types';
import { getTimeTypeValue } from '../../pages/rule_creation/helpers';
export const usePreviewInvocationCount = ({

View file

@ -15,7 +15,7 @@ import type {
DefineStepRule,
ScheduleStepRule,
TimeframePreviewOptions,
} from '../../../../detections/pages/detection_engine/rules/types';
} from '../../../common/types';
import { useKibana } from '../../../../common/lib/kibana';
interface PreviewRouteParams {

View file

@ -15,7 +15,7 @@ import type {
import { useKibana } from '../../../../common/lib/kibana';
import { previewRule } from '../../../rule_management/api/api';
import { transformOutput } from '../../../../detections/containers/detection_engine/rules/transforms';
import type { TimeframePreviewOptions } from '../../../../detections/pages/detection_engine/rules/types';
import type { TimeframePreviewOptions } from '../../../common/types';
import { usePreviewInvocationCount } from './use_preview_invocation_count';
import * as i18n from './translations';
import { PreviewRuleEventTypes } from '../../../../common/lib/telemetry';

View file

@ -10,7 +10,7 @@ import React, { useCallback } from 'react';
import type { DataViewBase, DataViewFieldBase } from '@kbn/es-query';
import type { FieldHook } from '@kbn/es-ui-shared-plugin/static/forms/hook_form_lib';
import type { Severity, SeverityMapping } from '@kbn/securitysolution-io-ts-alerting-types';
import type { AboutStepSeverity } from '../../../../detections/pages/detection_engine/rules/types';
import type { AboutStepSeverity } from '../../../common/types';
import { DefaultSeverity } from './default_severity';
import { SeverityOverride } from './severity_override';

View file

@ -10,7 +10,7 @@ import React, { memo } from 'react';
import styled from 'styled-components';
import { useEuiTheme } from '../../../../common/lib/theme/use_eui_theme';
import type { RuleStatusType } from '../../../../detections/pages/detection_engine/rules/types';
import type { RuleStatusType } from '../../../common/types';
export interface RuleStatusIconProps {
name: string;

View file

@ -6,8 +6,8 @@
*/
import { DEFAULT_MAX_SIGNALS } from '../../../../../common/constants';
import type { AboutStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import { fillEmptySeverityMappings } from '../../../../detections/pages/detection_engine/rules/helpers';
import type { AboutStepRule } from '../../../common/types';
import { fillEmptySeverityMappings } from '../../../common/helpers';
export const threatDefault = [
{

View file

@ -17,22 +17,13 @@ import { useSecurityJobs } from '../../../../common/components/ml_popover/hooks/
import { mockAboutStepRule } from '../../../rule_management_ui/components/rules_table/__mocks__/mock';
import { StepRuleDescription } from '../description_step';
import { stepAboutDefaultValue } from './default_value';
import type {
AboutStepRule,
DefineStepRule,
} from '../../../../detections/pages/detection_engine/rules/types';
import {
DataSourceType,
AlertSuppressionDurationType,
} from '../../../../detections/pages/detection_engine/rules/types';
import { fillEmptySeverityMappings } from '../../../../detections/pages/detection_engine/rules/helpers';
import type { AboutStepRule, DefineStepRule } from '../../../common/types';
import { DataSourceType, AlertSuppressionDurationType } from '../../../common/types';
import { fillEmptySeverityMappings } from '../../../common/helpers';
import { TestProviders } from '../../../../common/mock';
import { useRuleForms } from '../../pages/form';
import { stepActionsDefaultValue } from '../../../rule_creation/components/step_rule_actions';
import {
defaultSchedule,
stepDefineDefaultValue,
} from '../../../../detections/pages/detection_engine/rules/utils';
import { defaultSchedule, stepDefineDefaultValue } from '../../../common/utils';
import type { FormHook } from '../../../../shared_imports';
import { useKibana as mockUseKibana } from '../../../../common/lib/kibana/__mocks__';
import { useKibana } from '../../../../common/lib/kibana';

View file

@ -16,10 +16,7 @@ import type { Severity, Type } from '@kbn/securitysolution-io-ts-alerting-types'
import { defaultRiskScoreBySeverity } from '../../../../../common/detection_engine/constants';
import type { RuleSource } from '../../../../../common/api/detection_engine';
import { isThreatMatchRule, isEsqlRule } from '../../../../../common/detection_engine/utils';
import type {
RuleStepProps,
AboutStepRule,
} from '../../../../detections/pages/detection_engine/rules/types';
import type { RuleStepProps, AboutStepRule } from '../../../common/types';
import { AddItem } from '../add_item_form';
import { StepRuleDescription } from '../description_step';
import { AddMitreAttackThreat } from '../mitre';

View file

@ -8,16 +8,13 @@
import { i18n } from '@kbn/i18n';
import type {
FormSchema,
ValidationFunc,
ERROR_CODE,
FormSchema,
ValidationError,
ValidationFunc,
} from '../../../../shared_imports';
import { FIELD_TYPES, fieldValidators, VALIDATION_TYPES } from '../../../../shared_imports';
import type {
AboutStepRiskScore,
AboutStepRule,
} from '../../../../detections/pages/detection_engine/rules/types';
import type { AboutStepRiskScore, AboutStepRule } from '../../../common/types';
import { OptionalFieldLabel } from '../../../rule_creation/components/optional_field_label';
import { isUrlInvalid } from '../../../../common/utils/validators';
import { defaultRiskScoreValidator } from '../../validators/default_risk_score_validator';

View file

@ -17,10 +17,10 @@ import { mockBrowserFields } from '../../../../common/containers/source/mock';
import { useRuleFromTimeline } from '../../../../detections/containers/detection_engine/rules/use_rule_from_timeline';
import { TestProviders } from '../../../../common/mock';
import { schema as defineRuleSchema } from './schema';
import { stepDefineDefaultValue } from '../../../../detections/pages/detection_engine/rules/utils';
import { stepDefineDefaultValue } from '../../../common/utils';
import type { FormSubmitHandler } from '../../../../shared_imports';
import { useForm } from '../../../../shared_imports';
import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { DefineStepRule } from '../../../common/types';
import { fleetIntegrationsApi } from '../../../fleet_integrations/api/__mocks__';
import {
addRequiredFieldRow,

View file

@ -29,11 +29,8 @@ import type { SetRuleQuery } from '../../../../detections/containers/detection_e
import { useRuleFromTimeline } from '../../../../detections/containers/detection_engine/rules/use_rule_from_timeline';
import { isMlRule } from '../../../../../common/machine_learning/helpers';
import { filterRuleFieldsForType, getStepDataDataSource } from '../../pages/rule_creation/helpers';
import type {
DefineStepRule,
RuleStepProps,
} from '../../../../detections/pages/detection_engine/rules/types';
import { DataSourceType } from '../../../../detections/pages/detection_engine/rules/types';
import type { DefineStepRule, RuleStepProps } from '../../../common/types';
import { DataSourceType } from '../../../common/types';
import { StepRuleDescription } from '../description_step';
import type { QueryBarFieldProps } from '../query_bar_field';
import { QueryBarField } from '../query_bar_field';
@ -102,6 +99,7 @@ const CommonUseField = getUseField({ component: Field });
const StyledVisibleContainer = styled.div<{ isVisible: boolean }>`
display: ${(props) => (props.isVisible ? 'block' : 'none')};
`;
export interface StepDefineRuleProps extends RuleStepProps {
indicesConfig: string[];
defaultSavedQuery?: SavedQuery;

View file

@ -16,8 +16,8 @@ import {
import { isMlRule } from '../../../../../common/machine_learning/helpers';
import type { FormSchema, ValidationFunc } from '../../../../shared_imports';
import { FIELD_TYPES } from '../../../../shared_imports';
import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import { DataSourceType } from '../../../../detections/pages/detection_engine/rules/types';
import type { DefineStepRule } from '../../../common/types';
import { DataSourceType } from '../../../common/types';
import { dataViewIdValidatorFactory } from '../../validators/data_view_id_validator_factory';
import { indexPatternValidatorFactory } from '../../validators/index_pattern_validator_factory';
import { alertSuppressionFieldsValidatorFactory } from '../../validators/alert_suppression_fields_validator_factory';

View file

@ -6,7 +6,7 @@
*/
import { useCallback } from 'react';
import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { DefineStepRule } from '../../../common/types';
import { useIsExperimentalFeatureEnabled } from '../../../../common/hooks/use_experimental_features';
import { isEqlRule, isEqlSequenceQuery } from '../../../../../common/detection_engine/utils';
import {

View file

@ -19,10 +19,7 @@ import {
ALERT_SUPPRESSION_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME,
} from '../../../rule_creation/components/alert_suppression_edit';
import {
AlertSuppressionDurationType,
type DefineStepRule,
} from '../../../../detections/pages/detection_engine/rules/types';
import { AlertSuppressionDurationType, type DefineStepRule } from '../../../common/types';
interface UsePersistentAlertSuppressionStateParams {
form: FormHook<DefineStepRule>;

View file

@ -10,7 +10,7 @@ import usePrevious from 'react-use/lib/usePrevious';
import { isMlRule } from '../../../../../common/detection_engine/utils';
import type { FormHook } from '../../../../shared_imports';
import { useFormData } from '../../../../shared_imports';
import { type DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import { type DefineStepRule } from '../../../common/types';
interface LastMachineLearningState {
machineLearningJobId: string[];

View file

@ -10,7 +10,7 @@ import usePrevious from 'react-use/lib/usePrevious';
import { isNewTermsRule } from '../../../../../common/detection_engine/utils';
import type { FormHook } from '../../../../shared_imports';
import { useFormData } from '../../../../shared_imports';
import { type DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import { type DefineStepRule } from '../../../common/types';
import {
type NewTermsFields,
type HistoryWindowStart,

View file

@ -10,8 +10,8 @@ import { isEqual } from 'lodash';
import usePrevious from 'react-use/lib/usePrevious';
import type { EqlOptions } from '../../../../../common/search_strategy';
import type { FieldHook } from '../../../../shared_imports';
import { useFormData, type FormHook } from '../../../../shared_imports';
import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import { type FormHook, useFormData } from '../../../../shared_imports';
import type { DefineStepRule } from '../../../common/types';
import {
isEqlRule,
isEsqlRule,

View file

@ -8,7 +8,7 @@
import { useEffect, useRef } from 'react';
import usePrevious from 'react-use/lib/usePrevious';
import type { ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-types';
import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { DefineStepRule } from '../../../common/types';
import { isThreatMatchRule } from '../../../../../common/detection_engine/utils';
import type { FormHook } from '../../../../shared_imports';
import { useFormData } from '../../../../shared_imports';

View file

@ -10,7 +10,7 @@ import usePrevious from 'react-use/lib/usePrevious';
import { isThresholdRule } from '../../../../../common/detection_engine/utils';
import type { FormHook } from '../../../../shared_imports';
import { useFormData } from '../../../../shared_imports';
import { type DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import { type DefineStepRule } from '../../../common/types';
import type { FieldValueThreshold } from '../threshold_input';
interface LastThresholdState {

View file

@ -15,11 +15,11 @@ import {
defaultSchedule,
stepAboutDefaultValue,
stepDefineDefaultValue,
} from '../../../../detections/pages/detection_engine/rules/utils';
} from '../../../common/utils';
import { useRuleForms } from '../../pages/form';
import { stepActionsDefaultValue } from '../../../rule_creation/components/step_rule_actions';
import type { FormHook } from '../../../../shared_imports';
import type { ScheduleStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { ScheduleStepRule } from '../../../common/types';
describe('StepScheduleRule', () => {
const TestComp = ({

View file

@ -8,10 +8,7 @@
import type { FC } from 'react';
import styled from 'styled-components';
import React, { memo } from 'react';
import type {
RuleStepProps,
ScheduleStepRule,
} from '../../../../detections/pages/detection_engine/rules/types';
import type { RuleStepProps, ScheduleStepRule } from '../../../common/types';
import { StepRuleDescription } from '../description_step';
import { Form, UseField } from '../../../../shared_imports';
import type { FormHook } from '../../../../shared_imports';
@ -22,6 +19,7 @@ import { ScheduleItemField } from '../../../rule_creation/components/schedule_it
const StyledForm = styled(Form)`
max-width: 235px !important;
`;
interface StepScheduleRuleProps extends RuleStepProps {
form: FormHook<ScheduleStepRule>;
}

View file

@ -9,7 +9,7 @@
import { i18n } from '@kbn/i18n';
import type { ScheduleStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import type { ScheduleStepRule } from '../../../common/types';
import type { FormSchema } from '../../../../shared_imports';
export const schema: FormSchema<ScheduleStepRule> = {

View file

@ -5,11 +5,10 @@
* 2.0.
*/
import { useMemo } from 'react';
import { RuleStep } from '../../../detections/pages/detection_engine/rules/types';
import type { DefineStepRule } from '../../common/types';
import { RuleStep } from '../../common/types';
import { isEsqlRule } from '../../../../common/detection_engine/utils';
import type { DefineStepRule } from '../../../detections/pages/detection_engine/rules/types';
interface UseEsqlQueryForAboutStepArgs {
defineStepData: DefineStepRule;
activeStep: RuleStep;

View file

@ -5,7 +5,7 @@
* 2.0.
*/
import { useState, useMemo, useEffect } from 'react';
import { useEffect, useMemo, useState } from 'react';
import type { DataViewBase } from '@kbn/es-query';
import { useFormWithWarnings } from '../../../common/hooks/use_form_with_warnings';
import type {
@ -13,8 +13,8 @@ import type {
ActionsStepRule,
DefineStepRule,
ScheduleStepRule,
} from '../../../detections/pages/detection_engine/rules/types';
import { DataSourceType } from '../../../detections/pages/detection_engine/rules/types';
} from '../../common/types';
import { DataSourceType } from '../../common/types';
import { useKibana } from '../../../common/lib/kibana';
import type { FormHook } from '../../../shared_imports';
import { useFormData } from '../../../shared_imports';

View file

@ -12,35 +12,35 @@ import type { ActionTypeRegistryContract } from '@kbn/alerts-ui-shared';
import type { RuleCreateProps } from '../../../../../common/api/detection_engine/model/rule_schema';
import type { Rule } from '../../../rule_management/logic';
import {
getListMock,
getEndpointListMock,
getListMock,
} from '../../../../../common/detection_engine/schemas/types/lists.mock';
import type {
DefineStepRuleJson,
ScheduleStepRuleJson,
AboutStepRuleJson,
ActionsStepRuleJson,
AboutStepRule,
AboutStepRuleJson,
ActionsStepRule,
ScheduleStepRule,
ActionsStepRuleJson,
DefineStepRule,
} from '../../../../detections/pages/detection_engine/rules/types';
import { AlertSuppressionDurationType } from '../../../../detections/pages/detection_engine/rules/types';
DefineStepRuleJson,
ScheduleStepRule,
ScheduleStepRuleJson,
} from '../../../common/types';
import { AlertSuppressionDurationType } from '../../../common/types';
import {
formatDefineStepData,
formatScheduleStepData,
filterEmptyThreats,
filterRuleFieldsForType,
formatAboutStepData,
formatActionsStepData,
formatDefineStepData,
formatRule,
filterRuleFieldsForType,
filterEmptyThreats,
formatScheduleStepData,
} from './helpers';
import {
mockAboutStepRule,
mockActionsStepRule,
mockDefineStepRule,
mockQueryBar,
mockScheduleStepRule,
mockAboutStepRule,
mockActionsStepRule,
} from '../../../rule_management_ui/components/rules_table/__mocks__/mock';
import { getThreatMock } from '../../../../../common/detection_engine/schemas/types/threat.mock';
import type { Threat, Threats } from '@kbn/securitysolution-io-ts-alerting-types';

View file

@ -49,11 +49,8 @@ import type {
ScheduleStepRuleJson,
AboutStepRuleJson,
ActionsStepRuleJson,
} from '../../../../detections/pages/detection_engine/rules/types';
import {
DataSourceType,
AlertSuppressionDurationType,
} from '../../../../detections/pages/detection_engine/rules/types';
} from '../../../common/types';
import { DataSourceType, AlertSuppressionDurationType } from '../../../common/types';
import type {
RuleCreateProps,
AlertSuppression,

View file

@ -49,14 +49,14 @@ import {
StepRuleActions,
StepRuleActionsReadOnly,
} from '../../../rule_creation/components/step_rule_actions';
import * as RuleI18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as RuleI18n from '../../../common/translations';
import {
redirectToDetections,
getActionMessageParams,
MaxWidthEuiFlexItem,
} from '../../../../detections/pages/detection_engine/rules/helpers';
import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import { RuleStep } from '../../../../detections/pages/detection_engine/rules/types';
} from '../../../common/helpers';
import type { DefineStepRule } from '../../../common/types';
import { RuleStep } from '../../../common/types';
import { ALERT_SUPPRESSION_FIELDS_FIELD_NAME } from '../../../rule_creation/components/alert_suppression_edit';
import { useConfirmValidationErrorsModal } from '../../../../common/hooks/use_confirm_validation_errors_modal';
import { formatRule } from './helpers';
@ -69,7 +69,7 @@ import {
ruleStepsOrder,
stepAboutDefaultValue,
stepDefineDefaultValue,
} from '../../../../detections/pages/detection_engine/rules/utils';
} from '../../../common/utils';
import {
APP_UI_ID,
DEFAULT_INDEX_KEY,

View file

@ -37,8 +37,8 @@ import { useListsConfig } from '../../../../detections/containers/detection_engi
import { SecuritySolutionPageWrapper } from '../../../../common/components/page_wrapper';
import { hasUserCRUDPermission } from '../../../../common/utils/privileges';
import {
getRuleDetailsUrl,
getDetectionEngineUrl,
getRuleDetailsUrl,
} from '../../../../common/components/link_to/redirect_to_detection_engine';
import { SpyRoute } from '../../../../common/utils/route/spy_routes';
import { useUserData } from '../../../../detections/components/user_info';
@ -50,22 +50,22 @@ import { StepScheduleRule } from '../../components/step_schedule_rule';
import { StepRuleActions } from '../../../rule_creation/components/step_rule_actions';
import { formatRule } from '../rule_creation/helpers';
import {
getStepsData,
redirectToDetections,
getActionMessageParams,
getStepsData,
MaxWidthEuiFlexItem,
} from '../../../../detections/pages/detection_engine/rules/helpers';
import * as ruleI18n from '../../../../detections/pages/detection_engine/rules/translations';
import type { DefineStepRule } from '../../../../detections/pages/detection_engine/rules/types';
import { RuleStep } from '../../../../detections/pages/detection_engine/rules/types';
redirectToDetections,
} from '../../../common/helpers';
import * as ruleI18n from '../../../common/translations';
import type { DefineStepRule } from '../../../common/types';
import { RuleStep } from '../../../common/types';
import * as i18n from './translations';
import { SecurityPageName } from '../../../../app/types';
import { ruleStepsOrder } from '../../../../detections/pages/detection_engine/rules/utils';
import { ruleStepsOrder } from '../../../common/utils';
import { useKibana, useUiSetting$ } from '../../../../common/lib/kibana';
import { APP_UI_ID, DEFAULT_INDEX_KEY } from '../../../../../common/constants';
import { useStartTransaction } from '../../../../common/lib/apm/use_start_transaction';
import { SINGLE_RULE_ACTIONS } from '../../../../common/lib/apm/user_actions';
import { useGetSavedQuery } from '../../../../detections/pages/detection_engine/rules/use_get_saved_query';
import { useGetSavedQuery } from '../../../common/use_get_saved_query';
import { extractValidationMessages } from '../../../rule_creation/logic/extract_validation_messages';
import { VALIDATION_WARNING_CODE_FIELD_NAME_MAP } from '../../../rule_creation/constants/validation_warning_codes';
import { useRuleForms, useRuleIndexPattern } from '../form';

View file

@ -7,12 +7,12 @@
import React, { useCallback } from 'react';
import { EuiToolTip } from '@elastic/eui';
import { useKibana } from '../../../../../../common/lib/kibana';
import { SecuritySolutionLinkButton } from '../../../../../../common/components/links';
import { APP_UI_ID } from '../../../../../../../common/constants';
import { SecurityPageName } from '../../../../../../app/types';
import { getEditRuleUrl } from '../../../../../../common/components/link_to/redirect_to_detection_engine';
import * as ruleI18n from '../../translations';
import { useKibana } from '../../../../../common/lib/kibana';
import { SecuritySolutionLinkButton } from '../../../../../common/components/links';
import { APP_UI_ID } from '../../../../../../common/constants';
import { SecurityPageName } from '../../../../../app/types';
import { getEditRuleUrl } from '../../../../../common/components/link_to/redirect_to_detection_engine';
import * as ruleI18n from '../../../../common/translations';
interface EditRuleSettingButtonLinkProps {
ruleId: string;

View file

@ -77,7 +77,7 @@ import {
getMachineLearningJobId,
getStepsData,
redirectToDetections,
} from '../../../../detections/pages/detection_engine/rules/helpers';
} from '../../../common/helpers';
import { CreatedBy, UpdatedBy } from '../../../../detections/components/rules/rule_info';
import { useGlobalTime } from '../../../../common/containers/use_global_time';
import { inputsSelectors } from '../../../../common/store/inputs';
@ -116,7 +116,7 @@ import { ExecutionLogTable } from './execution_log_table/execution_log_table';
import { RuleBackfillsInfo } from '../../../rule_gaps/components/rule_backfills_info';
import { RuleGaps } from '../../../rule_gaps/components/rule_gaps';
import * as ruleI18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as ruleI18n from '../../../common/translations';
import { RuleDetailsContextProvider } from './rule_details_context';
// eslint-disable-next-line no-restricted-imports
@ -132,7 +132,7 @@ import { AlertsTableFilterGroup } from '../../../../detections/components/alerts
import { useSignalHelpers } from '../../../../sourcerer/containers/use_signal_helpers';
import { HeaderPage } from '../../../../common/components/header_page';
import { ExceptionsViewer } from '../../../rule_exceptions/components/all_exception_items_table';
import { EditRuleSettingButtonLink } from '../../../../detections/pages/detection_engine/rules/details/components/edit_rule_settings_button_link';
import { EditRuleSettingButtonLink } from './edit_rule_settings_button_link/edit_rule_settings_button_link';
import { useStartMlJobs } from '../../../rule_management/logic/use_start_ml_jobs';
import { useBulkDuplicateExceptionsConfirmation } from '../../../rule_management_ui/components/rules_table/bulk_actions/use_bulk_duplicate_confirmation';
import { BulkActionDuplicateExceptionsConfirmation } from '../../../rule_management_ui/components/rules_table/bulk_actions/bulk_duplicate_exceptions_confirmation';

View file

@ -14,13 +14,6 @@ export const PAGE_TITLE = i18n.translate(
}
);
export const BACK_TO_RULES = i18n.translate(
'xpack.securitySolution.detectionEngine.ruleDetails.backToRulesButton',
{
defaultMessage: 'Rules',
}
);
export const ENABLE_RULE = i18n.translate(
'xpack.securitySolution.detectionEngine.ruleDetails.enableRuleLabel',
{
@ -35,6 +28,10 @@ export const UNKNOWN = i18n.translate(
}
);
export const ALERTS_TAB = i18n.translate('xpack.securitySolution.detectionEngine.alertTitle', {
defaultMessage: 'Alerts',
});
export const EXCEPTIONS_TAB = i18n.translate(
'xpack.securitySolution.detectionEngine.ruleDetails.ruleExceptionsTab',
{

View file

@ -9,7 +9,6 @@ import { useEffect, useMemo, useState } from 'react';
import { ExceptionListTypeEnum } from '@kbn/securitysolution-io-ts-list-types';
import { omit } from 'lodash/fp';
import { useEndpointExceptionsCapability } from '../../../../exceptions/hooks/use_endpoint_exceptions_capability';
import * as detectionI18n from '../../../../detections/pages/detection_engine/translations';
import * as i18n from './translations';
import type { Rule } from '../../../rule_management/logic';
import type { NavTab } from '../../../../common/components/navigation/types';
@ -24,7 +23,7 @@ export enum RuleDetailTabs {
}
export const RULE_DETAILS_TAB_NAME: Record<string, string> = {
[RuleDetailTabs.alerts]: detectionI18n.ALERT,
[RuleDetailTabs.alerts]: i18n.ALERTS_TAB,
[RuleDetailTabs.exceptions]: i18n.EXCEPTIONS_TAB,
[RuleDetailTabs.endpointExceptions]: i18n.ENDPOINT_EXCEPTIONS_TAB,
[RuleDetailTabs.executionResults]: i18n.EXECUTION_RESULTS_TAB,

View file

@ -18,7 +18,7 @@ import { useFetchIndex } from '../../../common/containers/source';
import * as i18n from '../../../common/containers/source/translations';
import { useRuleIndices } from '../../rule_management/logic/use_rule_indices';
import { getMachineLearningJobId } from '../../../detections/pages/detection_engine/rules/helpers';
import { getMachineLearningJobId } from '../../common/helpers';
export interface ReturnUseFetchExceptionFlyoutData {
isLoading: boolean;

View file

@ -10,42 +10,20 @@ import type {
ExceptionListItemSchema,
} from '@kbn/securitysolution-io-ts-list-types';
import { INTERNAL_ALERTING_API_FIND_RULES_PATH } from '@kbn/alerting-plugin/common';
import { BASE_ACTION_API_PATH } from '@kbn/actions-plugin/common';
import type { ActionType, AsApiContract } from '@kbn/actions-plugin/common';
import { BASE_ACTION_API_PATH } from '@kbn/actions-plugin/common';
import type { ActionResult } from '@kbn/actions-plugin/server';
import { convertRulesFilterToKQL } from '../../../../common/detection_engine/rule_management/rule_filtering';
import type {
PerformRuleUpgradeResponseBody,
GetPrebuiltRulesStatusResponseBody,
InstallSpecificRulesRequest,
PerformRuleInstallationResponseBody,
GetPrebuiltRulesStatusResponseBody,
ReviewRuleUpgradeResponseBody,
PerformRuleUpgradeRequestBody,
PerformRuleUpgradeResponseBody,
ReviewRuleInstallationResponseBody,
ReviewRuleUpgradeRequestBody,
PerformRuleUpgradeRequestBody,
ReviewRuleUpgradeResponseBody,
} from '../../../../common/api/detection_engine/prebuilt_rules';
import type {
BulkDuplicateRules,
BulkActionEditPayload,
BulkActionType,
BulkManualRuleRun,
CoverageOverviewResponse,
GetRuleManagementFiltersResponse,
BulkActionsDryRunErrCode,
} from '../../../../common/api/detection_engine/rule_management';
import {
RULE_MANAGEMENT_FILTERS_URL,
RULE_MANAGEMENT_COVERAGE_OVERVIEW_URL,
BulkActionTypeEnum,
} from '../../../../common/api/detection_engine/rule_management';
import {
DETECTION_ENGINE_RULES_BULK_ACTION,
DETECTION_ENGINE_RULES_IMPORT_URL,
DETECTION_ENGINE_RULES_PREVIEW,
DETECTION_ENGINE_RULES_URL,
DETECTION_ENGINE_RULES_URL_FIND,
} from '../../../../common/constants';
import {
BOOTSTRAP_PREBUILT_RULES_URL,
GET_PREBUILT_RULES_STATUS_URL,
@ -55,6 +33,27 @@ import {
REVIEW_RULE_INSTALLATION_URL,
REVIEW_RULE_UPGRADE_URL,
} from '../../../../common/api/detection_engine/prebuilt_rules';
import type {
BulkActionEditPayload,
BulkActionsDryRunErrCode,
BulkActionType,
BulkDuplicateRules,
BulkManualRuleRun,
CoverageOverviewResponse,
GetRuleManagementFiltersResponse,
} from '../../../../common/api/detection_engine/rule_management';
import {
BulkActionTypeEnum,
RULE_MANAGEMENT_COVERAGE_OVERVIEW_URL,
RULE_MANAGEMENT_FILTERS_URL,
} from '../../../../common/api/detection_engine/rule_management';
import {
DETECTION_ENGINE_RULES_BULK_ACTION,
DETECTION_ENGINE_RULES_IMPORT_URL,
DETECTION_ENGINE_RULES_PREVIEW,
DETECTION_ENGINE_RULES_URL,
DETECTION_ENGINE_RULES_URL_FIND,
} from '../../../../common/constants';
import type { RulesReferencedByExceptionListsSchema } from '../../../../common/api/detection_engine/rule_exceptions';
import { DETECTION_ENGINE_RULES_EXCEPTIONS_REFERENCE_URL } from '../../../../common/api/detection_engine/rule_exceptions';
@ -62,7 +61,7 @@ import { DETECTION_ENGINE_RULES_EXCEPTIONS_REFERENCE_URL } from '../../../../com
import type { RulePreviewResponse, RuleResponse } from '../../../../common/api/detection_engine';
import { KibanaServices } from '../../../common/lib/kibana';
import * as i18n from '../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../common/translations';
import type {
CreateRulesProps,
ExportDocumentsProps,

View file

@ -8,16 +8,16 @@ import React from 'react';
import { render, screen } from '@testing-library/react';
import { RuleDefinitionSection } from './rule_definition_section';
import type {
RuleResponse,
AlertSuppressionMissingFieldsStrategy,
RuleResponse,
} from '../../../../../common/api/detection_engine/model/rule_schema';
import * as useAlertSuppressionMock from '../../logic/use_alert_suppression';
import * as useGetSavedQueryMock from '../../../../detections/pages/detection_engine/rules/use_get_saved_query';
import * as useGetSavedQueryMock from '../../../common/use_get_saved_query';
import * as useUpsellingMessageMock from '../../../../common/hooks/use_upselling';
import {
ALERT_SUPPRESSION_SUPPRESS_ON_MISSING_FIELDS,
ALERT_SUPPRESSION_DO_NOT_SUPPRESS_ON_MISSING_FIELDS,
ALERT_SUPPRESSION_PER_RULE_EXECUTION,
ALERT_SUPPRESSION_SUPPRESS_ON_MISSING_FIELDS,
} from '../../../rule_creation_ui/components/description_step/translations';
jest.spyOn(useGetSavedQueryMock, 'useGetSavedQuery').mockReturnValue({

View file

@ -40,10 +40,10 @@ import { assertUnreachable } from '../../../../../common/utility_types';
import * as descriptionStepI18n from '../../../rule_creation_ui/components/description_step/translations';
import { RelatedIntegrationsDescription } from '../../../../detections/components/rules/related_integrations/integrations_description';
import { AlertSuppressionLabel } from '../../../rule_creation_ui/components/description_step/alert_suppression_label';
import { useGetSavedQuery } from '../../../../detections/pages/detection_engine/rules/use_get_saved_query';
import { useGetSavedQuery } from '../../../common/use_get_saved_query';
import * as threatMatchI18n from '../../../../common/components/threat_match/translations';
import * as timelinesI18n from '../../../../timelines/components/timeline/translations';
import type { Duration } from '../../../../detections/pages/detection_engine/rules/types';
import type { Duration } from '../../../common/types';
import { MlJobsDescription } from '../../../rule_creation/components/ml_jobs_description/ml_jobs_description';
import { MlJobLink } from '../../../rule_creation/components/ml_job_link/ml_job_link';
import { useSecurityJobs } from '../../../../common/components/ml_popover/hooks/use_security_jobs';

View file

@ -7,19 +7,19 @@
import React from 'react';
import {
ALERT_SUPPRESSION_DEFAULT_DURATION,
ALERT_SUPPRESSION_DURATION_FIELD_NAME,
ALERT_SUPPRESSION_DURATION_TYPE_FIELD_NAME,
ALERT_SUPPRESSION_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_MISSING_FIELDS_FIELD_NAME,
ALERT_SUPPRESSION_DEFAULT_DURATION,
} from '../../../../../../../rule_creation/components/alert_suppression_edit';
import { AlertSuppressionDurationType } from '../../../../../../../../detections/pages/detection_engine/rules/types';
import { AlertSuppressionDurationType } from '../../../../../../../common/types';
import { type FormData } from '../../../../../../../../shared_imports';
import { DEFAULT_SUPPRESSION_MISSING_FIELDS_STRATEGY } from '../../../../../../../../../common/detection_engine/constants';
import { type AlertSuppression } from '../../../../../../../../../common/api/detection_engine';
import { RuleFieldEditFormWrapper } from '../../../field_final_side';
import { AlertSuppressionEditAdapter } from './suppression_edit_adapter';
import { alertSuppressionFormSchema, type AlertSuppressionFormData } from './form_schema';
import { type AlertSuppressionFormData, alertSuppressionFormSchema } from './form_schema';
export function AlertSuppressionEditForm(): JSX.Element {
return (

View file

@ -17,7 +17,7 @@ import * as stepDefineRuleI18n from '../../../../../../../rule_creation_ui/compo
import type { DiffableRule } from '../../../../../../../../../common/api/detection_engine';
import type { SetRuleQuery } from '../../../../../../../../detections/containers/detection_engine/rules/use_rule_from_timeline';
import { useRuleFromTimeline } from '../../../../../../../../detections/containers/detection_engine/rules/use_rule_from_timeline';
import { useGetSavedQuery } from '../../../../../../../../detections/pages/detection_engine/rules/use_get_saved_query';
import { useGetSavedQuery } from '../../../../../../../common/use_get_saved_query';
import type { RuleFieldEditComponentProps } from '../../../field_final_side';
import { useDiffableRuleDataView } from '../hooks/use_diffable_rule_data_view';

View file

@ -17,7 +17,7 @@ import { SeverityOverride } from '../../../../../../rule_creation_ui/components/
import { useDefaultIndexPattern } from '../../../../../hooks/use_default_index_pattern';
import { getUseRuleIndexPatternParameters } from '../utils';
import { useRuleIndexPattern } from '../../../../../../rule_creation_ui/pages/form';
import { fillEmptySeverityMappings } from '../../../../../../../detections/pages/detection_engine/rules/helpers';
import { fillEmptySeverityMappings } from '../../../../../../common/helpers';
import { filterOutEmptySeverityMappingItems } from '../../../../../../rule_creation_ui/pages/rule_creation/helpers';
interface SeverityMappingEditProps {

View file

@ -5,9 +5,9 @@
* 2.0.
*/
import { DataSourceType } from '../../../../../../detections/pages/detection_engine/rules/types';
import { DataSourceType as DataSourceTypeSnakeCase } from '../../../../../../../common/api/detection_engine';
import { DataSourceType } from '../../../../../common/types';
import type { DiffableRule } from '../../../../../../../common/api/detection_engine';
import { DataSourceType as DataSourceTypeSnakeCase } from '../../../../../../../common/api/detection_engine';
interface UseRuleIndexPatternParameters {
dataSourceType: DataSourceType;

View file

@ -16,7 +16,7 @@ import type {
import { Query, SavedQueryName, Filters } from '../../../../rule_definition_section';
import * as ruleDetailsI18n from '../../../../translations';
import * as descriptionStepI18n from '../../../../../../../rule_creation_ui/components/description_step/translations';
import { useGetSavedQuery } from '../../../../../../../../detections/pages/detection_engine/rules/use_get_saved_query';
import { useGetSavedQuery } from '../../../../../../../common/use_get_saved_query';
import { getDataSourceProps, getQueryLanguageLabel, isFilters } from '../../../../helpers';
interface SavedQueryProps {

View file

@ -14,7 +14,7 @@ import {
BulkActionEditTypeEnum,
BulkActionTypeEnum,
} from '../../../../../common/api/detection_engine/rule_management';
import * as i18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../common/translations';
import type { BulkActionResponse, BulkActionSummary } from '../../api/api';
export function summarizeBulkSuccess(action: BulkActionType): string {

View file

@ -8,7 +8,7 @@
import { useCallback } from 'react';
import { BulkActionTypeEnum } from '../../../../../common/api/detection_engine/rule_management';
import { downloadBlob } from '../../../../common/utils/download_blob';
import * as i18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../common/translations';
import { getExportedRulesCounts } from '../../../rule_management_ui/components/rules_table/helpers';
import { useShowBulkErrorToast } from './use_show_bulk_error_toast';
import { useShowBulkSuccessToast } from './use_show_bulk_success_toast';

View file

@ -17,7 +17,7 @@ import {
} from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
import { css } from '@emotion/react';
import * as i18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../common/translations';
export interface AutoRefreshButtonProps {
isRefreshOn: boolean;

View file

@ -28,7 +28,7 @@ import { getCapitalizedStatusText } from '../../../../detections/components/rule
import type { Rule } from '../../../rule_management/logic';
import { isJobStarted } from '../../../../../common/machine_learning/helpers';
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';
import { getMachineLearningJobId } from '../../../../detections/pages/detection_engine/rules/helpers';
import { getMachineLearningJobId } from '../../../common/helpers';
const POPOVER_WIDTH = '340px';

View file

@ -11,13 +11,10 @@ import type {
ActionsStepRule,
DefineStepRule,
ScheduleStepRule,
} from '../../../../../detections/pages/detection_engine/rules/types';
import {
DataSourceType,
AlertSuppressionDurationType,
} from '../../../../../detections/pages/detection_engine/rules/types';
} from '../../../../common/types';
import { AlertSuppressionDurationType, DataSourceType } from '../../../../common/types';
import type { FieldValueQueryBar } from '../../../../rule_creation_ui/components/query_bar_field';
import { fillEmptySeverityMappings } from '../../../../../detections/pages/detection_engine/rules/helpers';
import { fillEmptySeverityMappings } from '../../../../common/helpers';
import { getThreatMock } from '../../../../../../common/detection_engine/schemas/types/threat.mock';
import {
AlertSuppressionMissingFieldsStrategyEnum,

View file

@ -9,7 +9,7 @@ import { EuiButton, EuiEmptyPrompt, EuiFlexGroup, EuiFlexItem } from '@elastic/e
import React from 'react';
import { SecurityPageName } from '../../../../../../common';
import { useGetSecuritySolutionLinkProps } from '../../../../../common/components/links';
import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../common/translations';
const AddPrebuiltRulesTableNoItemsMessageComponent = () => {
const getSecuritySolutionLinkProps = useGetSecuritySolutionLinkProps();

View file

@ -14,7 +14,7 @@ import { PopoverItems } from '../../../../../common/components/popover_items';
import { useUiSetting$ } from '../../../../../common/lib/kibana';
import { IntegrationsPopover } from '../../../../../detections/components/rules/related_integrations/integrations_popover';
import { SeverityBadge } from '../../../../../common/components/severity_badge';
import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../common/translations';
import type { Rule } from '../../../../rule_management/logic';
import { useUserData } from '../../../../../detections/components/user_info';
import { hasUserCRUDPermission } from '../../../../../common/utils/privileges';

View file

@ -8,7 +8,7 @@
import React from 'react';
import { EuiConfirmModal } from '@elastic/eui';
import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../common/translations';
import { BulkActionRuleErrorsList } from './bulk_action_rule_errors_list';
import { BulkActionTypeEnum } from '../../../../../../common/api/detection_engine/rule_management';
import { assertUnreachable } from '../../../../../../common/utility_types';

View file

@ -16,7 +16,7 @@ import {
} from '@elastic/eui';
import { MAX_MANUAL_RULE_RUN_BULK_SIZE } from '../../../../../../common/constants';
import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../common/translations';
interface BulkManualRuleRunRulesLimitErrorModalProps {
onClose: () => void;

View file

@ -9,22 +9,22 @@ import type { FC } from 'react';
import React from 'react';
import type { EuiFlyoutSize } from '@elastic/eui';
import {
useGeneratedHtmlId,
EuiFlyout,
EuiFlyoutFooter,
EuiFlexGroup,
EuiButtonEmpty,
EuiFlexItem,
EuiButton,
EuiButtonEmpty,
EuiFlexGroup,
EuiFlexItem,
EuiFlyout,
EuiFlyoutBody,
EuiFlyoutFooter,
EuiFlyoutHeader,
EuiTitle,
EuiFlyoutBody,
useGeneratedHtmlId,
} from '@elastic/eui';
import type { FormHook } from '../../../../../../shared_imports';
import { Form } from '../../../../../../shared_imports';
import * as i18n from '../../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../../common/translations';
interface BulkEditFormWrapperProps {
form: FormHook;

View file

@ -6,28 +6,29 @@
*/
import React from 'react';
import { EuiFormRow, EuiCallOut } from '@elastic/eui';
import { EuiCallOut, EuiFormRow } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
import * as i18n from '../../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../../common/translations';
import { DEFAULT_INDEX_KEY } from '../../../../../../../common/constants';
import { useKibana } from '../../../../../../common/lib/kibana';
import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management';
import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
import type { FormSchema } from '../../../../../../shared_imports';
import {
Field,
getUseField,
useFormData,
useForm,
FIELD_TYPES,
fieldValidators,
getUseField,
useForm,
useFormData,
} from '../../../../../../shared_imports';
import { BulkEditFormWrapper } from './bulk_edit_form_wrapper';
const CommonUseField = getUseField({ component: Field });
type IndexPatternsEditActions =

View file

@ -6,27 +6,27 @@
*/
import React from 'react';
import { EuiFormRow, EuiCallOut } from '@elastic/eui';
import { EuiCallOut, EuiFormRow } from '@elastic/eui';
import { FormattedMessage } from '@kbn/i18n-react';
import { useKibana } from '../../../../../../common/lib/kibana';
import { DEFAULT_INDEX_KEY } from '../../../../../../../common/constants';
import { METRIC_TYPE, TELEMETRY_EVENT, track } from '../../../../../../common/lib/telemetry';
import * as i18n from '../../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../../common/translations';
import { useFetchIndex } from '../../../../../../common/containers/source';
import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management';
import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
import type { FormSchema } from '../../../../../../shared_imports';
import {
Field,
getUseField,
useFormData,
useForm,
FIELD_TYPES,
fieldValidators,
getUseField,
useForm,
useFormData,
} from '../../../../../../shared_imports';
import { BulkEditFormWrapper } from './bulk_edit_form_wrapper';

View file

@ -31,7 +31,7 @@ import { bulkAddRuleActions as i18n } from '../translations';
import { useKibana } from '../../../../../../common/lib/kibana';
import { getAllActionMessageParams } from '../../../../../../detections/pages/detection_engine/rules/helpers';
import { getAllActionMessageParams } from '../../../../../common/helpers';
import { RuleActionsField } from '../../../../../rule_creation/components/rule_actions_field';
import { debouncedValidateRuleActionsField } from '../../../../../../detections/containers/detection_engine/rules/validate_rule_actions_field';

View file

@ -12,14 +12,14 @@ import React, { useMemo } from 'react';
import { useRuleManagementFilters } from '../../../../../rule_management/logic/use_rule_management_filters';
import type { BulkActionEditPayload } from '../../../../../../../common/api/detection_engine/rule_management';
import { BulkActionEditTypeEnum } from '../../../../../../../common/api/detection_engine/rule_management';
import * as i18n from '../../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../../common/translations';
import { caseInsensitiveSort } from '../../helpers';
import type { FormSchema } from '../../../../../../shared_imports';
import {
Field,
fieldValidators,
FIELD_TYPES,
fieldValidators,
getUseField,
useForm,
useFormData,

View file

@ -183,3 +183,10 @@ export const bulkDuplicateRuleActions = {
}
),
};
export const ML_RULES_UNAVAILABLE = (totalRules: number) =>
i18n.translate('xpack.securitySolution.detectionEngine.mlUnavailableTitle', {
values: { totalRules },
defaultMessage:
'{totalRules} {totalRules, plural, =1 {rule requires} other {rules require}} Machine Learning to enable.',
});

View file

@ -11,6 +11,7 @@ import { EuiButton, EuiFlexGroup, EuiFlexItem, EuiTextColor } from '@elastic/eui
import type { Toast } from '@kbn/core/public';
import { toMountPoint } from '@kbn/react-kibana-mount';
import React, { useCallback } from 'react';
import { ML_RULES_UNAVAILABLE } from './translations';
import { MAX_MANUAL_RULE_RUN_BULK_SIZE } from '../../../../../../common/constants';
import type { TimeRange } from '../../../../rule_gaps/types';
import { useKibana } from '../../../../../common/lib/kibana';
@ -22,16 +23,15 @@ import type {
BulkActionEditType,
} from '../../../../../../common/api/detection_engine/rule_management';
import {
BulkActionTypeEnum,
BulkActionEditTypeEnum,
BulkActionTypeEnum,
} from '../../../../../../common/api/detection_engine/rule_management';
import { isMlRule } from '../../../../../../common/machine_learning/helpers';
import { useAppToasts } from '../../../../../common/hooks/use_app_toasts';
import { BULK_RULE_ACTIONS } from '../../../../../common/lib/apm/user_actions';
import { useStartTransaction } from '../../../../../common/lib/apm/use_start_transaction';
import { canEditRuleWithActions } from '../../../../../common/utils/privileges';
import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations';
import * as detectionI18n from '../../../../../detections/pages/detection_engine/translations';
import * as i18n from '../../../../common/translations';
import { useBulkExport } from '../../../../rule_management/logic/bulk_actions/use_bulk_export';
import { useExecuteBulkAction } from '../../../../rule_management/logic/bulk_actions/use_execute_bulk_action';
import { useDownloadExportedRules } from '../../../../rule_management/logic/bulk_actions/use_download_exported_rules';
@ -113,7 +113,7 @@ export const useBulkActions = ({
const mlRuleCount = disabledRules.length - disabledRulesNoML.length;
if (!hasMlPermissions && mlRuleCount > 0) {
toasts.addWarning(detectionI18n.ML_RULES_UNAVAILABLE(mlRuleCount));
toasts.addWarning(ML_RULES_UNAVAILABLE(mlRuleCount));
}
const ruleIds = hasMlPermissions

View file

@ -28,7 +28,7 @@ import { getCapitalizedStatusText } from '../../../../detections/components/rule
import type { Rule } from '../../../rule_management/logic';
import { isJobStarted } from '../../../../../common/machine_learning/helpers';
import { RuleDetailTabs } from '../../../rule_details_ui/pages/rule_details/use_rule_details_tabs';
import { getMachineLearningJobId } from '../../../../detections/pages/detection_engine/rules/helpers';
import { getMachineLearningJobId } from '../../../common/helpers';
const POPOVER_WIDTH = '340px';

View file

@ -5,10 +5,10 @@
* 2.0.
*/
import React, { useState, useCallback } from 'react';
import React, { useCallback, useState } from 'react';
import type { EuiIconProps, IconColor } from '@elastic/eui';
import { EuiIcon, EuiPopover, keys } from '@elastic/eui';
import * as i18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../common/translations';
interface PopoverTooltipProps {
columnName: string;

View file

@ -7,7 +7,7 @@
import { EuiLink } from '@elastic/eui';
import React from 'react';
import { useKibana } from '../../../../common/lib/kibana';
import * as i18n from '../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../common/translations';
export const RulesChangelogLink = React.memo(() => {
const { docLinks } = useKibana().services;

View file

@ -9,7 +9,7 @@ import React, { useState } from 'react';
import { css } from '@emotion/react';
import type { EuiSelectableOption } from '@elastic/eui';
import { EuiFilterButton, EuiPopover, EuiSelectable } from '@elastic/eui';
import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../common/translations';
import type { RuleExecutionStatus } from '../../../../../../common/api/detection_engine';
import { RuleExecutionStatusEnum } from '../../../../../../common/api/detection_engine';
import { getCapitalizedStatusText } from '../../../../../detections/components/rules/rule_execution_status/utils';

View file

@ -10,7 +10,7 @@ import React, { useCallback, useEffect, useState } from 'react';
import styled from 'styled-components';
import { EuiFieldSearch, EuiFlexItem } from '@elastic/eui';
import { SEARCH_FIRST_RULE_ANCHOR } from '../rules_table/guided_onboarding/rules_management_tour';
import * as i18n from '../../../../../detections/pages/detection_engine/rules/translations';
import * as i18n from '../../../../common/translations';
const SearchBarWrapper = styled(EuiFlexItem)`
min-width: 200px;

Some files were not shown because too many files have changed in this diff Show more