mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
[8.x] [Security Solution] Move files from detections folder to detection_engine folder (#215085) (#215923)
# Backport This will backport the following commits from `main` to `8.x`: - [[Security Solution] Move files from detections folder to detection_engine folder (#215085)](https://github.com/elastic/kibana/pull/215085) <!--- Backport version: 9.6.6 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Philippe Oberti","email":"philippe.oberti@elastic.co"},"sourceCommit":{"committedDate":"2025-03-25T13:51:50Z","message":"[Security Solution] Move files from detections folder to detection_engine folder (#215085)\n\n## Summary\n\nThis PR is - at its core - only moving a handful of files around. A lot\nof of these files lived under the `detections` folder, but were almost\nexclusively used in files under the `detection_engine` folder. This is\nwhy the PR seems so huge. Almost everything modified here is only files\nimports...\n\nHere are the few files that were actually moved around:\n\n1. The files `detection_engine.tsx`, `detection_engine_no_index.tsx`,\n`detection_engine_user_unauthenticated.tsx` (and their respective test\nfiles) have been moved from\n`security_solution/public/detections/pages/detection_engine` to\n`security_solution/public/detections/pages/alerts`. I thought about\nrenaming them as well, but felt like there was already enough changes.\nRenaming will be done in a follow up PR.\n\n2. The content of the\n`security_solution/public/detections/pages/detection_engine/rules`\nfolder was moved to `security_solution/public/detection_engine/common`\nas almost the entire folder content is only used within the\n`security_solution/public/detection_engine` folder.\n\n#### Notes\n\n_If there is a better folder for the files moved to the\n`detection_engine/common` folder, feel free to suggest. I'll be happy to\nmake the change!_\n\nThe CODEOWNERS file has been updated and simplified accordingly.\n\nOnly imports should have been modified. No code, logic or UI changes!\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"4b2846452083943672cc7bee1a43cbcf06915903","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Team:Threat Hunting:Investigations","backport:version","v9.1.0","v8.19.0"],"title":"[Security Solution] Move files from detections folder to detection_engine folder","number":215085,"url":"https://github.com/elastic/kibana/pull/215085","mergeCommit":{"message":"[Security Solution] Move files from detections folder to detection_engine folder (#215085)\n\n## Summary\n\nThis PR is - at its core - only moving a handful of files around. A lot\nof of these files lived under the `detections` folder, but were almost\nexclusively used in files under the `detection_engine` folder. This is\nwhy the PR seems so huge. Almost everything modified here is only files\nimports...\n\nHere are the few files that were actually moved around:\n\n1. The files `detection_engine.tsx`, `detection_engine_no_index.tsx`,\n`detection_engine_user_unauthenticated.tsx` (and their respective test\nfiles) have been moved from\n`security_solution/public/detections/pages/detection_engine` to\n`security_solution/public/detections/pages/alerts`. I thought about\nrenaming them as well, but felt like there was already enough changes.\nRenaming will be done in a follow up PR.\n\n2. The content of the\n`security_solution/public/detections/pages/detection_engine/rules`\nfolder was moved to `security_solution/public/detection_engine/common`\nas almost the entire folder content is only used within the\n`security_solution/public/detection_engine` folder.\n\n#### Notes\n\n_If there is a better folder for the files moved to the\n`detection_engine/common` folder, feel free to suggest. I'll be happy to\nmake the change!_\n\nThe CODEOWNERS file has been updated and simplified accordingly.\n\nOnly imports should have been modified. No code, logic or UI changes!\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"4b2846452083943672cc7bee1a43cbcf06915903"}},"sourceBranch":"main","suggestedTargetBranches":["8.x"],"targetPullRequestStates":[{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/215085","number":215085,"mergeCommit":{"message":"[Security Solution] Move files from detections folder to detection_engine folder (#215085)\n\n## Summary\n\nThis PR is - at its core - only moving a handful of files around. A lot\nof of these files lived under the `detections` folder, but were almost\nexclusively used in files under the `detection_engine` folder. This is\nwhy the PR seems so huge. Almost everything modified here is only files\nimports...\n\nHere are the few files that were actually moved around:\n\n1. The files `detection_engine.tsx`, `detection_engine_no_index.tsx`,\n`detection_engine_user_unauthenticated.tsx` (and their respective test\nfiles) have been moved from\n`security_solution/public/detections/pages/detection_engine` to\n`security_solution/public/detections/pages/alerts`. I thought about\nrenaming them as well, but felt like there was already enough changes.\nRenaming will be done in a follow up PR.\n\n2. The content of the\n`security_solution/public/detections/pages/detection_engine/rules`\nfolder was moved to `security_solution/public/detection_engine/common`\nas almost the entire folder content is only used within the\n`security_solution/public/detection_engine` folder.\n\n#### Notes\n\n_If there is a better folder for the files moved to the\n`detection_engine/common` folder, feel free to suggest. I'll be happy to\nmake the change!_\n\nThe CODEOWNERS file has been updated and simplified accordingly.\n\nOnly imports should have been modified. No code, logic or UI changes!\n\n---------\n\nCo-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>","sha":"4b2846452083943672cc7bee1a43cbcf06915903"}},{"branch":"8.x","label":"v8.19.0","branchLabelMappingKey":"^v8.19.0$","isSourceBranch":false,"state":"NOT_CREATED"}]}] BACKPORT-->
This commit is contained in:
parent
e9caf3a381
commit
485175a7c5
130 changed files with 499 additions and 567 deletions
36
.github/CODEOWNERS
vendored
36
.github/CODEOWNERS
vendored
|
@ -2273,6 +2273,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
|
||||
|
@ -2281,36 +2283,35 @@ 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/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/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
|
||||
|
@ -2446,7 +2447,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
|
||||
|
||||
|
@ -2480,7 +2481,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
|
||||
|
|
|
@ -353,8 +353,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[\/\\]entity_analytics[\/\\]components[\/\\]risk_score_onboarding[\/\\]use_risk_score_toast_content.tsx/,
|
||||
|
|
|
@ -40025,7 +40025,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",
|
||||
|
|
|
@ -39994,7 +39994,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": "基本",
|
||||
|
|
|
@ -40065,7 +40065,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": "构建块",
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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}`);
|
||||
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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)) {
|
||||
|
|
|
@ -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];
|
|
@ -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;
|
|
@ -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),
|
|
@ -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',
|
||||
{
|
|
@ -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;
|
|
@ -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';
|
||||
|
|
@ -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 = [
|
|
@ -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,
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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', () => ({
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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',
|
||||
}
|
||||
);
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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();
|
||||
}, []);
|
||||
|
||||
|
|
|
@ -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();
|
||||
}, []);
|
||||
|
||||
|
|
|
@ -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();
|
||||
}, []);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
import moment from 'moment';
|
||||
import { DataSourceType } from '../../../../detections/pages/detection_engine/rules/types';
|
||||
import { DataSourceType } from '../../../common/types';
|
||||
import { isNoisy, getTimeframeOptions, getIsRulePreviewDisabled } from './helpers';
|
||||
|
||||
describe('query_preview/helpers', () => {
|
||||
|
|
|
@ -11,8 +11,8 @@ import type { Type, ThreatMapping } from '@kbn/securitysolution-io-ts-alerting-t
|
|||
import * as i18n from './translations';
|
||||
|
||||
import type { FieldValueQueryBar } from '../query_bar_field';
|
||||
import type { TimeframePreviewOptions } from '../../../../detections/pages/detection_engine/rules/types';
|
||||
import { DataSourceType } from '../../../../detections/pages/detection_engine/rules/types';
|
||||
import type { TimeframePreviewOptions } from '../../../common/types';
|
||||
import { DataSourceType } from '../../../common/types';
|
||||
import { MAX_NUMBER_OF_NEW_TERMS_FIELDS } from '../../../../../common/constants';
|
||||
|
||||
/**
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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 = ({
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 = [
|
||||
{
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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>;
|
||||
|
|
|
@ -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[];
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 = ({
|
||||
|
|
|
@ -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>;
|
||||
}
|
||||
|
|
|
@ -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> = {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -38,8 +38,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';
|
||||
|
@ -51,22 +51,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';
|
||||
|
|
|
@ -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;
|
|
@ -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';
|
||||
|
|
|
@ -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',
|
||||
{
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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({
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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 (
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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.',
|
||||
});
|
||||
|
|
|
@ -12,6 +12,7 @@ import type { Toast } from '@kbn/core/public';
|
|||
import { toMountPoint } from '@kbn/react-kibana-mount';
|
||||
import { euiThemeVars } from '@kbn/ui-theme';
|
||||
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';
|
||||
|
@ -23,16 +24,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';
|
||||
|
@ -114,7 +114,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
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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';
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue